Skip to content

Настройка gitlab-runner

Установка в docker

bash
docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

Регистрация

bash
docker exec -it gitlab-runner gitlab-runner register

Перезапустить контейнер

bash
docker restart gitlab-runner

Остановить и запустить контейнер

bash
docker stop gitlab-runner
docker start gitlab-runner

Обновление gitlab-runner

bash
docker stop gitlab-runner
docker rm gitlab-runner
bash
docker pull gitlab/gitlab-runner:latest

Дополнительное

Просмотр логов

bash
docker logs gitlab-runner

Вход внутрь контейнера

bash
docker exec -it gitlab-runner bash

Удаление контейнера и его данных

bash
docker stop gitlab-runner
docker rm gitlab-runner
rm -rf /srv/gitlab-runner/config

Регистрация нескольких Runner'ов с одним контейнером

Выполнить команду снова

bash
docker exec -it gitlab-runner gitlab-runner register

В ответах указать:

  1. URL GitLab:

    https://gitlab.com/
  2. Токен: Используйте токен регистрации из проекта или группы (можно найти в Settings > CI/CD > Runners).

  3. Описание Runner: Введите уникальное описание, например, Runner-1, Runner-2 и т.д.

  4. Теги: Укажите теги, например, build, test, docker. Эти теги помогут GitLab определить, какой Runner использовать для задач.

  5. Executor: Выберите Executor, например:

    • shell
    • docker
    • docker+machine

Регистрация нескольких Runner'ов создавая новый контейнер

Дать уникальное имя контейнеру

bash
docker run -d --name gitlab-runner-1 --restart always \
  -v /srv/gitlab-runner-1/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

Выполнить регистрацию

bash
docker exec -it gitlab-runner-1 gitlab-runner register

Проверка конфигурацию Runner'ов

Все зарегистрированные Runner'ы будут добавлены в общий файл конфигурации /etc/gitlab-runner/config.toml.

bash
docker exec -it gitlab-runner cat /etc/gitlab-runner/config.toml

Пример конфигурации для нескольких Runner'ов:

toml
[[runners]]
  name = "Runner-1"
  url = "https://gitlab.com/"
  token = "TOKEN_FOR_RUNNER_1"
  executor = "docker"
  [runners.docker]
    image = "alpine:latest"
    privileged = false

[[runners]]
  name = "Runner-2"
  url = "https://gitlab.com/"
  token = "TOKEN_FOR_RUNNER_2"
  executor = "shell"

3. Особенности работы с несколькими Runner'и в одном контейнере

  • Один контейнер, несколько Runner'ов: Все Runner'ы используют одну и ту же базовую конфигурацию контейнера, но могут отличаться по параметрам, таким как теги, Executor или токены.
  • Обновление конфигурации: Все изменения в конфигурации (например, добавление новых Runner'ов) вносятся в файл /etc/gitlab-runner/config.toml.

4. Пример использования в .gitlab-ci.yml

Используйте теги для привязки заданий к определённым Runner'ам:

yaml
stages:
  - build
  - test

build-job:
  stage: build
  tags:
    - build
  script:
    - echo "Сборка завершена"

test-job:
  stage: test
  tags:
    - test
  script:
    - echo "Тестирование завершено"
  • Runner-1 с тегом build выполнит задачу build-job.
  • Runner-2 с тегом test выполнит задачу test-job.

5. Устранение проблем

Проблема: Конфликт настроек между Runner'ами

Если Runner'ы используют один и тот же Executor (например, docker), они могут конфликтовать из-за использования общих ресурсов. В этом случае настройте разные Docker-образы или тома.

Пример настройки Docker:

toml
[[runners]]
  name = "Runner-1"
  executor = "docker"
  [runners.docker]
    image = "node:14"
    volumes = ["/cache"]

[[runners]]
  name = "Runner-2"
  executor = "docker"
  [runners.docker]
    image = "python:3.9"
    volumes = ["/cache"]

6. Перезапуск Runner'а для применения настроек

После регистрации или изменения конфигурации перезапустите контейнер с Runner'ом:

bash
docker restart gitlab-runner