CI/CD for SimpleBashUtils — учебный проект, в котором настроен простой CI/CD-процесс (сборка, тестирование, развертывание) с использованием GitLab CI. В качестве примера использована собственная реализация утилит cat и grep на языке C.
Этот проект сосредоточен на практической реализации CI/CD-процесса с использованием GitLab CI. Пайплайн охватывает автоматическую сборку, проверку кодстайла, тестирование, деплой на сервер и уведомления через Telegram-бота.
Ниже приведены требования к настройке CI/CD-пайплайна для SimpleBashUtils.
В качестве результата работы необходимо сохранить два дампа образов виртуальных машин, описанных далее.
P.S. Ни в коем случае не сохраняй дампы в гит!
-
Подними виртуальную машину Ubuntu Server 22.04 LTS.
- Будь готов, что в конце проекта нужно будет сохранить дамп образа виртуальной машины.
-
Скачай и установи на виртуальную машину gitlab-runner.
-
Запусти gitlab-runner и зарегистрируй его для использования в текущем проекте (DO6_CICD).
- Для регистрации понадобятся URL и токен, которые можно получить на страничке задания на платформе.
- Напиши этап для CI по сборке приложений из проекта C2_SimpleBashUtils.
- В файле gitlab-ci.yml добавь этап запуска сборки через мейк файл из проекта C2.
- Файлы, полученные после сборки (артефакты), сохрани в произвольную директорию со сроком хранения 30 дней.
- Напиши этап для CI, который запускает скрипт кодстайла (clang-format).
- Если кодстайл не прошел, то «зафейли» пайплайн.
- В пайплайне отобрази вывод утилиты clang-format.
- Напиши этап для CI, который запускает твои интеграционные тесты из того же проекта.
- Запусти этот этап автоматически только при условии, если сборка и тест кодстайла прошли успешно.
- Если тесты не прошли, то «зафейли» пайплайн.
- В пайплайне отобрази вывод, что интеграционные тесты успешно прошли / провалились.
- Подними вторую виртуальную машину Ubuntu Server 22.04 LTS.
- Напиши этап для CD, который «разворачивает» проект на другой виртуальной машине.
- Запусти этот этап вручную при условии, что все предыдущие этапы прошли успешно.
- Напиши bash-скрипт, который при помощи ssh и scp копирует файлы, полученные после сборки (артефакты), в директорию /usr/local/bin второй виртуальной машины.
- Будь готов объяснить по скрипту, как происходит перенос.
- В файле gitlab-ci.yml добавь этап запуска написанного скрипта.
- В случае ошибки «зафейли» пайплайн.
В результате ты должен получить готовые к работе приложения из проекта C2_SimpleBashUtils (s21_cat и s21_grep) на второй виртуальной машине.
- Сохрани дампы образов виртуальных машин.
P.S. Ни в коем случае не сохраняй дампы в гит!- Не забудь запустить пайплайн с последним коммитом в репозитории.
- Настрой уведомления об успешном/неуспешном выполнении пайплайна через бота с именем «[твой nickname] DO6 CI/CD» в Telegram.
- Текст уведомления должен содержать информацию об успешности прохождения как этапа CI, так и этапа CD.
- В остальном текст уведомления может быть произвольным.
Отчет по заданию с подробными скриншотами представлен в файле CI-CD_report.md, в репозитории также находятся скрипты и исходный код SimpleBashUtils.