Разработка простого CI/CD для проекта SimpleBashUtils. Сборка, тестирование, развертывание.
- Chapter I
1.1. Основы CI/CD
1.2. Основы CI
1.3. Основы CD - Chapter II
2.1. Настройка gitlab-runner
2.2. Сборка
2.3. Тест кодстайла
2.4. Интеграционные тесты
2.5. Этап деплоя
2.6. Дополнительно. Уведомления
УВЫ... Если что-то постоянно делается «в ручную» – это либо будет работать плохо, либо вовсе не будет работать.
CI/CD - Это набор принципов и практик, которые позволяют чаще и надежнее развертывать изменения программного обеспечения.
Причины применения CI/CD:
- Командная разработка
- Длинный жизненный цикл ПО
- Сокращение релизного цикла
- Сложность развертывания и тестирования крупных систем
- Человеческий фактор
CI/CD pipeline - Это последовательность действий (скриптов) для определенной версии кода в репозитории, которая запускается автоматически при совершении изменений.
CI (Continuous Integration) — в дословном переводе «непрерывная интеграция». Имеется в виду интеграция отдельных кусочков кода приложения между собой. CI обычно выполняет 2 задачи, описанные далее.
-
BUILD
- Проверяем, собирается ли вообще код
- Готовим артефакты для следующих стадий
-
TEST
- Тесты кодстайла
- Модульные тесты
- Интеграционные тесты
- Прочие тесты, которые у вас есть
- Отчеты о тестах
CD (Continuous Delivery) — это расширение непрерывной интеграции, поскольку оно автоматически развертывает все изменения кода в тестовой и/или производственной среде после этапа сборки. CD может выполнять задачи, описанные далее.
- PUBLISH (В случае применения докера для развёртывания)
- Собираем образы контейнеров
- Пушим образы туда, откуда их будем потом брать для развертывания
- UPDATE CONFIGS
- Обновляем конфигурацию на машинах
- DEPLOY STAGING
- Развертывание тестовой среды для ручных тестов, QA, и прочих не автоматизируемых проверок
- Может запускаться как вручную, так и автоматически при успешном прохождении стадий CI
- DEPLOY PRODUCTION
- Разворачиваем новую версию системы на "продакшн"
- Этот этап желательно запускать вручную, а не автоматически
- По желанию можно настроить только для определенной ветки репозитория (master, release и т.п.)
-
Вот. Если у вас будут вопросы, прокрутите в голове на замедленной скорости то, что я сказала. Скоро вернусь.
В качестве результата работы вы должны сохранить два дампа образов виртуальных машин, описанных далее.
p.s. Ни в коем случае не сохранять дампы в гит!
-
Раз вы решили заняться CI/CD, должно быть, вы очень, очень любите тестировать. Я тоже это люблю. Так что приступим.
Если вам потребуется какая-либо информация, рекомендую искать ответы в официальной документации.
== Задание ==
Будьте готовы, что в конце проекта нужно будет сохранить дамп образа виртуальной машины
- Для регистрации понадобятся URL и токен, которые можно получить на страничке задания на платформе.
-
Предыдущее испытание было создано, чтобы повышать в людях уверенность в себе.
Теперь я подкорректировала тесты, сделав их более сложными и менее льстивыми.
== Задание ==
Файлы, полученные после сборки (артефакты), сохранять в произвольную директорию со сроком хранения 30 дней.
-
Поздравляю, вы выполнили абсолютно бессмысленную задачу. Шучу. Она была нужна для перехода ко всем последующим.
== Задание ==
-
Отлично, тест на кодстайл написан. [ТИШЕ] Говорю с тобой тет-а-тет. Не говори ничего коллегам.
Между нами: ты справляешься очень хорошо. [ГРОМЧЕ] Переходим к написанию интеграционных тестов.
== Задание ==
-
Для завершения этого задания вы должны перенести исполняемые файлы на другую виртуальную машину, которая будет играть роль продакшена. Удачи.
== Задание ==
Написать bash-скрипт, который при помощи ssh и scp копирует файлы, полученные после сборки (артефакты), в директорию /usr/local/bin второй виртуальной машины
Тут вам могут помочь знания, полученные в проекте DO2_LinuxNetwork
- Будьте готовы объяснить по скрипту, как происходит перенос.
В результате вы должны получить готовые к работе приложения из проекта C3_SimpleBashScripts (s21_cat и s21_grep) на второй виртуальной машине.
p.s. Ни в коем случае не сохранять дампы в гит!
- Не забудьте запустить пайплайн с последним коммитом в репозитории.
-
Здесь написано, что ваше следующее задание выполняется специально для нобелевских лауреатов.
Здесь не сказано, за что они получили премию, но точно не за умение работать с gitlab-runner.
== Задание ==
Настроить уведомления о успешном/неуспешном выполнении пайплайна через бота с именем "[ваш nickname] DO6 CI/CD" в Telegramm
- Текст уведомления должен содержать информацию об успешности прохождения как этапа CI, так и этапа CD.
- В остальном текст уведомления может быть произвольным.