Переходим к установке и настройке
Первым делом необходимо установить Docker
.
Docker желательно устанавливать всегда по официальной документации из Docker.Docs
И не забываем после установки настроить управление Docker от имени пользователя без полномочий root.
После установки Docker
приступим к установке GitLab-Runner
который будет работать в контейнере:
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
Как только образ загрузится и запустится контейнер переходим к регистрации Runner:
docker exec -it gitlab-runner gitlab-runner register
Первым делом при регистрации нам нужно будет ввести адрес GitLab сервера (в моем случае это gitlab.com)
Следующим шагом необходимо ввести authentication token который получить можно в настройках репозитория (Settings - CI/CD - Runers - New project runner)
Далее по порядку вводим:
- Enter a name for the runner: Вводим название ранера, или оставляем пустым
- Enter an executor: custom, ssh, parallels, virtualbox, docker-windows, docker+machine, docker-autoscaler, instance, shell, docker, kubernetes: вводим docker. Выбор способа выполнения вашего pipeline.
- custom — как следует из названия — custom executor, нужен для работы со средами, которые gitlab не поддерживает «нативно», например Podman
- ssh — не поддерживает сборочные кэши, выполняет сборки на удаленных машинах. Поддерживает только bash команды
- parallels — работает аналогично virtualbox, только в качестве виртуализации использует parallels
- virtualbox — создает из образа или снапшота виртуальную машину в vitrualbox, подключается к ней по ssh и выполняет действия указанные в .gitlab-ci.yml. По завершении машина удаляется
- docker-windows
- docker+machine — Предназначен больше для облачных решений и ЦОД. Создает виртуальные машины, устанавливает на них docker, и настраивает docker клиент для дальнейшей работы
- docker-autoscaler
- instance
- shell — как из названия — выполняет все действия локально на машине, не подходит для использования gitlab-runner в docker контейнере. Бывает полезен в некоторых случаях, когда вам нужно внести изменения непосредственно в самой системе, или если у вас монолитное, не микросервисное, приложение.
- docker — Подключается к docker-engine машины и выполняет все действия в изолированных контейнерах, которые по окончании уничтожаются (наиболее удобный вариант)
- kubernetes — использует для сборок кластер kubernetes, подключаясь к kubernetes API
- Enter the default Docker image (for example, ruby:2.7): указываем используемый образ по умолчанию. Пишем docker:latest
В результате мы получим сообщении об успешной регистрации ранера
Для сборок docker-in-docker
Для сборки docker-in-docker, которую я очень рекомендую использовать, в связи с тем, что такой способ не оставляет кучи мусора на машине, рекомендую заново добавить docker.sock
в runner volume. Иначе при сборке вы получите сообщение что docker не найден.
Необходимо отредактироват файл confit.toml:
sudo nano /srv/gitlab-runner/config/config.toml
Приводим переменную volume
к такому виду и сохраняем:
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
Осталось только перезапустить контейнер и готово.
docker restart gitlab-runner