Настройка 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-runnerdocker 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, например:
shelldockerdocker+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