GitLab CI — это служба непрерывной интеграции с открытым исходным кодом, а GitLab Runner — это проект с открытым исходным кодом, который запускает задачи и отправляет результаты обратно в GitLab, который работает с GitLab CI.
Непрерывная интеграция
Непрерывная интеграция, аббревиатура CI) - это процесс разработки программного обеспечения, который непрерывно интегрирует все программные инженеры для постоянного интеграции работы основной линии (магистрали). Название было впервые предложено Grady Booch в его методе ткани ткани, но он не поддерживал несколько интеграций за день. В процессе инициатив он часто соответствует автоматическому тестированию подразделения. Устойчивая интеграция в основном для решения проблем, с которыми сталкиваются программное обеспечение для системной интеграции. -Википедия
Непрерывная интеграция обычно включает в себя несколько процессов:
Объединить код Установить зависимости компилировать тестовое задание выпускать
Непрерывная интеграция должна основываться на следующих принципах:
- Поддерживать базу знаний по коду
- Автоматическая сборка, сборка системы с помощью одной команды
- После того, как код был изменен, следующим этапом должно быть проведение всех тестов, чтобы убедиться, что результаты разработки программного обеспечения соответствуют ожиданиям.
- Сокращайте количество конфликтов, совершайте коммиты хотя бы раз в день
- Каждое изменение должно быть сделано быстро, чтобы избежать проблем с интеграцией
- Максимально сведите к минимуму разрыв между тестовой средой и производственной средой, виртуализация услуг обычно проще для достижения этой цели.
- Интегрируйте заранее
- Любой может просмотреть результат окончательной сборки
- Автоматическое развертывание
Непрерывная интеграция может быстро найти ошибки, и легче найти ошибки. Его цель - быстро сделать продуктом итеративным, сохраняя при этом высокое качество. Кодекс основных мер должен пропускать автоматизированные тесты, прежде чем встроить в багажник.
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 выглядит следующим образом:
- изменения местного кода
- Измененный код отправляется в GitLab
- GitLab уведомляет GitLab-CI об этом изменении
- GitLab-CI обнаруживает gitlab-runner, связанный с этим проектом
- gitlab-runner обновляет код до локального
- Настройте среду в соответствии с заданными условиями
- Выполняется по заранее заданному сценарию (обычно .gitlab-ci.yml)
- Уведомить GitLab о результате выполнения
- GitLab показывает результат финального выполнения
gitlab-runner может быть развернут на разных хостах, или несколько gitlab-runners могут быть установлены на одном хосте, и разные среды могут быть настроены в соответствии с разными средами.Например, нам нужно различать среды R&D, среды тестирования, и формальной среды.