Настройка gitlab-runner
Установка в docker
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
Регистрация
docker exec -it gitlab-runner gitlab-runner register
Перезапустить контейнер
docker restart gitlab-runner
Остановить и запустить контейнер
docker stop gitlab-runner
docker start gitlab-runner
Обновление gitlab-runner
docker stop gitlab-runner
docker rm gitlab-runner
docker pull gitlab/gitlab-runner:latest
Дополнительное
Просмотр логов
docker logs gitlab-runner
Вход внутрь контейнера
docker exec -it gitlab-runner bash
Удаление контейнера и его данных
docker stop gitlab-runner
docker rm gitlab-runner
rm -rf /srv/gitlab-runner/config
Регистрация нескольких Runner'ов с одним контейнером
Выполнить команду снова
docker exec -it gitlab-runner gitlab-runner register
В ответах указать:
URL GitLab:
https://gitlab.com/
Токен: Используйте токен регистрации из проекта или группы (можно найти в Settings > CI/CD > Runners).
Описание Runner: Введите уникальное описание, например,
Runner-1
,Runner-2
и т.д.Теги: Укажите теги, например,
build
,test
,docker
. Эти теги помогут GitLab определить, какой Runner использовать для задач.Executor: Выберите Executor, например:
shell
docker
docker+machine
Регистрация нескольких Runner'ов создавая новый контейнер
Дать уникальное имя контейнеру
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
Выполнить регистрацию
docker exec -it gitlab-runner-1 gitlab-runner register
Проверка конфигурацию Runner'ов
Все зарегистрированные Runner'ы будут добавлены в общий файл конфигурации /etc/gitlab-runner/config.toml
.
docker exec -it gitlab-runner cat /etc/gitlab-runner/config.toml
Пример конфигурации для нескольких Runner'ов:
[[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'ам:
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:
[[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'ом:
docker restart gitlab-runner