Part 1. Настройка gitlab-runner

- Раз вы решили заняться CI/CD, должно быть, вы очень, очень любите тестировать. Я тоже это люблю. Так что приступим. Если вам потребуется какая-либо информация, рекомендую искать ответы в официальной документации.

== Задание ==

Поднять виртуальную машину Ubuntu Server 20.04 LTS

Будьте готовы, что в конце проекта нужно будет сохранить дамп образа виртуальной машины

Скачать и установить на виртуальную машину gitlab-runner
Запустить gitlab-runner и зарегистрировать его для использования в текущем проекте (DO6_CICD)
  • Для регистрации понадобятся URL и токен, которые можно получить на страничке задания на платформе.

Part 2. Сборка

- Предыдущее испытание было создано, чтобы повышать в людях уверенность в себе. Теперь я подкорректировала тесты, сделав их более сложными и менее льстивыми.

== Задание ==

Написать этап для CI по сборке приложений из проекта C3_SimpleBashScripts:

В файле gitlab-ci.yml добавить этап запуска сборки через мейк файл из проекта C3
Файлы, полученные после сборки (артефакты), сохранять в произвольную директорию со сроком хранения 30 дней.

Part 3. Тест кодстайла

- Поздравляю, вы выполнили абсолютно бессмысленную задачу. Шучу. Она была нужна для перехода ко всем последующим.

== Задание ==

Написать этап для CI, который запускает скрипт кодстайла (cpplint.py):

Если кодстайл не прошел, то "зафейлить" пайплайн
В пайплайне отобразить вывод утилиты cpplint.py

Part 4. Интеграционные тесты

- Отлично, тест на кодстайл написан. [ТИШЕ] Говорю с тобой тет-а-тет. Не говори ничего коллегам. Между нами: ты справляешься очень хорошо. [ГРОМЧЕ] Переходим к написанию интеграционных тестов.

== Задание ==

Написать этап для CI, который запускает ваши интеграционные тесты из того же проекта:

Запускать этот этап автоматически только при условии, если сборка и тест кодстайла прошли успешно
Если тесты не прошли, то "зафейлить" пайплайн
В пайплайне отобразить вывод, что интеграционные тесты успешно прошли / провалились

Part 5. Этап деплоя

- Для завершения этого задания вы должны перенести исполняемые файлы на другую виртуальную машину, которая будет играть роль продакшена. Удачи.

== Задание ==

Поднять вторую виртуальную машину Ubuntu Server 20.04 LTS

Написать этап для CD, который "разворачивает" проект на другой виртуальной машине:

Запускать этот этап вручную при условии, что все предыдущие этапы прошли успешно
Написать bash-скрипт, который при помощи ssh и scp копирует файлы, полученные после сборки (артефакты), в директорию /usr/local/bin второй виртуальной машины

Тут вам могут помочь знания, полученные в проекте DO2_LinuxNetwork

  • Будьте готовы объяснить по скрипту, как происходит перенос.
В файле gitlab-ci.yml добавить этап запуска написанного скрипта
В случае ошибки "зафейлить" пайплайн

В результате вы должны получить готовые к работе приложения из проекта C3_SimpleBashScripts (my_cat и my_grep) на второй виртуальной машине.

Сохранить дампы образов виртуальных машин

p.s. Ни в коем случае не сохранять дампы в гит!

  • Не забудьте запустить пайплайн с последним коммитом в репозитории.

Part 6. Дополнительно. Уведомления

- Здесь написано, что ваше следующее задание выполняется специально для нобелевских лауреатов. Здесь не сказано, за что они получили премию, но точно не за умение работать с gitlab-runner.

== Задание ==

Настроить уведомления о успешном/неуспешном выполнении пайплайна через бота с именем "[ваш nickname] DO6 CI/CD" в Telegramm
  • Текст уведомления должен содержать информацию об успешности прохождения как этапа CI, так и этапа CD.
  • В остальном текст уведомления может быть произвольным.