Skip to content

Instantly share code, notes, and snippets.

@KMACREATOR
Last active June 25, 2024 23:12
Show Gist options
  • Save KMACREATOR/27eeec5a7c55f0a4e88aa533b3fa60b3 to your computer and use it in GitHub Desktop.
Save KMACREATOR/27eeec5a7c55f0a4e88aa533b3fa60b3 to your computer and use it in GitHub Desktop.

Доп. Задание. по теме CI/CD и gitlab CI

CI/CD

CI/CD-пайплайн расшифровывается как "continuous integration and continuous deployment (delivery) pipeline" -- конвейер непрерывной интеграции и непрерывного резвертывания.

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

На рынке современных информационных технологий скорость выпуска обновлений является конкурентным приемуществом. Для максимизации этого качества используются две концепции: непрерывная интеграция и непрерывная поставка.

Суть непрерывной интеграции (CI - contionuous integration) заключается в том, чтобы разработчики как можно чаще загружали изменения в основную ветку, используя системы контроля версий (к примеру Git). Преимуществом явлеяется равномерность дополнений к продукту

Непрерывная поставка (CD - contionuous delivery) же является расширением CI. Оно автоматически развертывает новые изменения после сборки в производственной среде клиента. Преимуществом является снижение нагрузки с разработчиков и уменьшение человеческого фактор, приэтом согласовывая процесс выпуска ПО.

В пайплайне могут быть размещены компиляторы, анализаторы кода, модульные тесты, системы безопасности данных и другие инструменты, которые могут быть полезны на всех этапах выпуска продукта.

CI/CD является основой DevOps.

Особенностью этого метода является тесное взаимодействие специалистов, занимающихся разработкой и специалистов, занимающихся обслуживанием, приводящее к интегрирированию процессов друг в друга. Частое тестирование уменьшает количество багов, что улучшает опыт клиента. Разработка и поставка ПО по изменениям ускоряет окупаемость продукта и упрощает возможность создать наиболее ценный продукт на рынке, к тому же разработка становится дешелве и во время разработки легче проверять различные гипотезы, что добавляет гибкости в создании продуктов.

Примеры существующих CI/CD: Github CI/CD, GitLab CI/CD, Bitbucket CI/CD, Jenkins CI/CD...

Пайплайн представим в виде 7 основных шагов:

  1. Триггер.

Пайплайн должен запускаться автоматически каждый раз, когда фиксируется отправка нового кода в репозиторий.

  1. Проверка кода.

Пайплайн ивзлекает из репозитория код, триггер и коммит, связанный с триггером. Здесь могут начать работать инструменты статического анализа кода, которые остановят пайплайн в случае нахождения ошибки. Если OK, пайплайн продолжается.

  1. Компиляция кода.

  2. Unit - тестирование (модульное тестирование) - важнейший элемент пайплайна.

Для него используются специальные библиотеки для каждого конкретного языка программирования. Если приложение после компиляции и запуска с тестами завершает выполенение без ошибок, то переходим к следующему этапу пайплайна.

  1. Упаковка кода.

Перед доставкой пользователю приложение упаковывается в конечный "build".

  1. Приемочное тестирование.

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

  1. Доставка и развертывание.

Здесь уже готовый к развертки продукт необходимо доставить в рабочую среду клиента и корректно установить. Для этого процесса нужна производственная среда (например, публичное облако со своим собственным API или Spinnaker - инструмент работы с системой оркестрации контейнеров Kubernetes и всеми популярными облаками).

GitLab CI

Тесты добавляются в файл .gitlab-ci.yml с помощью ключевых слов test: и script: . Также GitLab CI предоставляет возможность архивировать код, создавать артефакты сборки с помощью ключевых слов package: и artifacts: . Для организации последовательного выполнения задач используется stages: . Срок жизни временных артефактов можно ограничить с помощью команды expire_in: .

GitLab использует образы Docker для запуска сборок (по умолчанию используется Ruby). Добавление образов производится с помощью команды image: в файл .gitlab-ci.yml.

Создание ISO образов возможно с помощью команды - mkisofs.

Дополнительное ПО можно установить с помощью команд - apk install foo и обновить с помощью - apk update, включив заранее поддержку сети с помощью команды echo "ipv6" >> etc/modules.

Для выполнения определенных команд перед остальными можно использовать before_script: перед необходимыми командами.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment