Непрерывная интеграция GitLab CI — GitLab Runner

CI/CD

GitLab CI — это служба непрерывной интеграции с открытым исходным кодом, а GitLab Runner — это проект с открытым исходным кодом, который запускает задачи и отправляет результаты обратно в GitLab, который работает с GitLab CI.

Непрерывная интеграция

Непрерывная интеграция, аббревиатура CI) - это процесс разработки программного обеспечения, который непрерывно интегрирует все программные инженеры для постоянного интеграции работы основной линии (магистрали). Название было впервые предложено Grady Booch в его методе ткани ткани, но он не поддерживал несколько интеграций за день. В процессе инициатив он часто соответствует автоматическому тестированию подразделения. Устойчивая интеграция в основном для решения проблем, с которыми сталкиваются программное обеспечение для системной интеграции. -Википедия

Непрерывная интеграция обычно включает в себя несколько процессов:

Объединить код Установить зависимости компилировать тестовое задание выпускать

Непрерывная интеграция должна основываться на следующих принципах:

  • Поддерживать базу знаний по коду
  • Автоматическая сборка, сборка системы с помощью одной команды
  • После того, как код был изменен, следующим этапом должно быть проведение всех тестов, чтобы убедиться, что результаты разработки программного обеспечения соответствуют ожиданиям.
  • Сокращайте количество конфликтов, совершайте коммиты хотя бы раз в день
  • Каждое изменение должно быть сделано быстро, чтобы избежать проблем с интеграцией
  • Максимально сведите к минимуму разрыв между тестовой средой и производственной средой, виртуализация услуг обычно проще для достижения этой цели.
  • Интегрируйте заранее
  • Любой может просмотреть результат окончательной сборки
  • Автоматическое развертывание

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

GitLab CI

GitLab CI流程

GitLab CI — это полная система, предоставляющая услуги непрерывной интеграции для GitLab. Версии после GitLab8.0 по умолчанию интегрированы с GitLab-CI и включены по умолчанию. Чтобы использовать GitLab CI, вам необходимо создать файл gitlab-ci.yml в репозитории и каталоге, который используется для указания среды, в которой должна выполняться непрерывная интеграция, и сценария, который необходимо выполнить. Вам также необходимо настроить gitlab-runner.Когда будут пуш-изменения кода, gitlab-runner автоматически запустит пайплайн и отобразит результаты непрерывной интеграции на gitlab.

GitLab Runner

GitLab Runner написан на языке Go и может запускаться как бинарный файл без особых языковых требований.Он создает среду непрерывной интеграции.Необходимые программы устанавливаются с помощью Docker, а среда, в которой работает GitLab Runner, настраивается. GitLab Runner на самом деле представляет собой докер-контейнер, который автоматически создается GitLab Runner. Рабочая среда управляется программой GitLab Runner. Docker используется для сборки бегуна, так что каждая виртуальная среда чистая, легкая, изолированная друг от друга и не влияют друг на друга. GitLab-Runner обычно используется с GitLab-CI. Сценарий интеграции программного обеспечения, принадлежащий этому проекту, определен в GitLab для автоматизации некоторой работы по интеграции программного обеспечения. Выполнение GitLab-Runner выглядит следующим образом:

执行时序图

  1. изменения местного кода
  2. Измененный код отправляется в GitLab
  3. GitLab уведомляет GitLab-CI об этом изменении
  4. GitLab-CI обнаруживает gitlab-runner, связанный с этим проектом
  5. gitlab-runner обновляет код до локального
  6. Настройте среду в соответствии с заданными условиями
  7. Выполняется по заранее заданному сценарию (обычно .gitlab-ci.yml)
  8. Уведомить GitLab о результате выполнения
  9. GitLab показывает результат финального выполнения

gitlab-runner может быть развернут на разных хостах, или несколько gitlab-runners могут быть установлены на одном хосте, и разные среды могут быть настроены в соответствии с разными средами.Например, нам нужно различать среды R&D, среды тестирования, и формальной среды.