Поиск по сайту:

Начало работы с конвейерами непрерывной интеграции и развертывания 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 > Конвейеры, где вы увидите каждый запуск вместе с его статусом.

Если вы нажмете на детали, вы сможете отладить, что пошло не так с неудачным запуском, так как он ведет журнал консоли.