Воросы можно писатв через лиичный кабинет, а также через доску вопросов на сайте.
Домашнее задание — лабораторная работа, в которой вы по инструкциям выполните действия.
Обратите внимание, что домашнее задание является необязательным. Его выполнение не повлияет на получение зачёта по модулю.
В этом задании применяется сервис GitVerse — платформа для хостинга Git-репозиториев, контроля версий кода и совместной разработки, являющееся одним из популярных решений для поддержки DevOps и DevSecOps.
Вы будете использовать заранее подготовленные материалы для упрощения настройки и развёртывания исследуемого прриложения.
-
Перейдите на домашнюю страницу GitVerse и нажмите Войти или Начать работу:
-
Введите свой email, нажмите Подтвердить (отправить письмо с кодом) и следуйте дальнейшим инструкциям для заведения учётной записи:
В качестве способа Дополнительной защиты выберите Двухфакторная аутентификация (по одноразовому коду).
-
Далее выбираем предпочитительный почтовый ящик (для получаения уведомлений от сервера) и имя пользователя.

Для добавления учебного проекта к себе в репозиторий небходимо:
-
На верхней панели элементов нажимаем на + Добавить, Импорт репозитория

-
Далее выбираем сервис откуда добавляется репозиторий (github)
-
В поле URL откуда импортируем указываем адрес:
https://github.com/netology-code/ib-devsecops-app.gitЗдесь надо обновить ссылку -
В поле Название репозиория задаём имя репозитория. Остальные поля опциональны и не требует заполнения, поэтому пропускаем их.
-
Нажимаем на кнопку Импортировать репозиторий, в результате чего получаем импортированную копию учебного проекта в своём гите.

Учебный проект состоит из типового приложения nodejs и конфигурационных файлов, задающих процесс сборки.
Для сборки учебного проекта используем локальный раннер (подробнее о раннерах), который необходимо скачать, запустить и подключить к нашему проекту.
Для подключения раннера необходимо открыть настройки проекта (кнопка Настройки)

выбрать вкладку Раннеры и нажать кнопку Добавить раннер и скопировать сгенерированный токен, который будет использован для подключения раннера.
.
Скачав бинарный файл раннера, делаем его исполняемым командой chmod+x и убеждаемся что он работает (запуская с ключом -version).
Аргумент register вызывает интерактивный режим регистрации раннера, запрашивая требуемую для работы инфорацию
.
Вновь открываем настройки проекта,на вкладке раннеры появился наш раннер.
.
- Пайплайн описывают в специальных конфигурационных файлов, на языке разметки yaml. Для учебного проекта определим две стадии: build и deploy, описав их в файле ci.yaml:
stages:
- build-stage
- deploy-stage
build:
stage: build-stage
script:
- npm install
artifacts:
untracked: false
when: on_success
paths:
- node_modules
- package-lock.json
deploy:
stage: deploy-stage
image: node
script:
- chmod +x deploy.sh
- bash deploy.sh`
На этапе build выполняется сборка и установка нашего приложения (команда npm install).
На этапе deploy выполняется запуск нашего приложения c помощю следующего sh-скрипта:
#! /bin/bash
# Ищем и останавливаем работающий процесс npm проверяя файл, в котором записан номер процесса, когда процесс npm уже работает
if [ -f pidfile.txt ]; then
PID=$(cat pidfile.txt)
kill $PID
rm pidfile.txt
else
echo "pidfile.txt not found. No process to stop."
fi
# Запускаем процесс npm в фоновом режиме, сохраняя номер этого процесса в файл pidfile.txt
npm start > /dev/null 2>&1 &
PID=$!
echo "Started npm start with PID: $PID"
echo $PID > pidfile.txt
# Далее можно добавлять команды для раннера, при необходимости
# При отсутствии проблем скрипт завершится с успехом
exit 0
Убедившись что раннер успешно завершает работу переходим к следующей части




