Начало работы с конвейерами непрерывной интеграции и развертывания GitLab (CI/CD)
Непрерывная интеграция и развертывание, или CI/CD, — это процесс оптимизации и ускорения разработки за счет автоматического создания и тестирования каждой фиксации в вашем проекте. GitLab очень хорошо интегрирует CI/CD в свое решение git
, и мы покажем, как его настроить и работать с ним.
Настройка сервера сборки (GitLab Runner)
Часто компиляция кода может быть чрезвычайно интенсивной операцией. Не все языки имеют эту проблему, но в некоторых, например в C++, сложная сборка может занять более получаса. Chromium, например, может занять больше часа даже на 12-ядерных системах, как показано на этом графике от GamersNexus.
Время — деньги, поэтому многие компании предпочитают иметь выделенные серверы сборки, часто множество серверов, и запускать конвейеры CI/CD на мощном оборудовании.
Если вы не занимаетесь самостоятельным хостингом, а вместо этого используете онлайн-решение GitLab SaaS (gitlab.com), вам придется платить за минуты CI/CD. Уровень бесплатного пользования включает 400 минут CI/CD, чего должно быть достаточно для простых проектов, особенно таких языков, как JS, где все, что может быть необходимо, — это базовая сборка npm
. Более высокие уровни, которые взимают плату за пользователя, предлагают гораздо больше времени на сборку. Вы можете просмотреть актуальные итоги на странице информации о ценах GitLab.
В нашем случае мы размещаемся самостоятельно, поэтому нам нужно настроить GitLab Runner, который устанавливается на сервер и настраивается как агент сборки. Это доступно в виде двоичного файла, а также в виде развертывания Kubernetes, которое может быть идеальным для автоматического масштабирования многосерверных развертываний.
К счастью, процесс установки прост. Вам нужно будет найти, какой двоичный файл вам понадобится для вашего хоста, и загрузить его. Для систем на базе Debian, таких как Ubuntu, это будет пакет deb
:
curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb"
И установите его с помощью dpkg
:
sudo dpkg -i gitlab-runner_amd64.deb
Затем вам нужно настроить его с помощью URL и токена, найденных в /admin/runners.
sudo gitlab-runner register
Вам будет предложено указать, какой исполнитель должен использовать этот бегун. В большинстве случаев вы можете просто использовать «докер» с изображением по умолчанию, таким как ubuntu.
После настройки вы можете запустить бегун:
sudo gitlab-runner register
Тогда вы должны увидеть его в списке.
В нашем случае была странная ошибка, из-за которой бегун не запускался из-за отсутствия папки /var/lib/gitlab-runner
. Создание вручную сразу решило проблему:
sudo mkdir /var/lib/gitlab-runner
Вам нужно будет открыть настройки бегуна и установить для него правильные теги, которые будут подобраны путем сопоставления файлов конфигурации gitlab-ci.yml. Если вместо этого вы не хотите возиться с тегами, вы можете установить этот флажок здесь, чтобы выбрать задания без тегов:
Затем вам нужно настроить свои проекты для использования этого бегуна.
Настройка CI/CD для вашего проекта
Настройка GitLab CI выполняется с помощью файла в корне вашего проекта с именем .gitlab-ci.yml
. Это автоматически используется для запуска.
Конечно, точная конфигурация этого будет сильно зависеть от вас и ваших потребностей. Хорошим местом для начала было бы узнать, как другие сделали это для вашего языка и среды выполнения.
Например, простую сборку .NET можно запустить, используя следующую конфигурацию:
image : microsoft/dotnet:latest stages: - build before_script: - 'dotnet restore' build: stage: build script: - 'dotnet build'
Во-первых, нам нужно установить образ Docker, который GitLab будет использовать для сборки вашего приложения. Это важно, поскольку в противном случае в среде не будет среды выполнения .NET. Прежде всего он запускает dotnet restore
, а затем запускает dotnet build
для фактической сборки приложения.
Чтобы узнать больше о структуре этого файла, вы можете обратиться к документации GitLab.
После фиксации в вашем репо эта фиксация запускает первый конвейер. Вы можете просмотреть результаты конвейера в разделе CI/CD > Конвейеры, где вы увидите каждый запуск вместе с его статусом.
Если вы нажмете на детали, вы сможете отладить, что пошло не так с неудачным запуском, так как он ведет журнал консоли.