GitLab Runner
Описание
GitLab Runner - отдельный сервис на системе, который принимает pipeline и выполняет их у себя.
Основы
GitLab Runner использует конфигурауционный файл TOML формата.
Когда runner запущен от root sudo gitlab-runner run , файл лежит по пути:
Если runner запущен не от root gitlab-runner run, то файл находится тут:В других системах (non Unix) файл находится:
Использование в pipeline
Для использования определенного gitlab runner в каждом pipeline нужно использовать ключевое слово tag и название runner (а точнее его tag)
А что если не указать tag в piipeline
В таком случае runner будет выбран самостоятельно из shared (общедоступных)
Сигналы
| Команда | Сигнал | Описание |
|---|---|---|
register |
SIGINT | Отменить регистрацию Runner. Если Runner уже успел зарегистрироваться, удалить его регистрацию. |
run, run-single |
SIGINT, SIGTERM | Прервать все запущенные сборки и завершнить работу раннера |
run, run-single |
SIGQUIT | Перестать принимать новый сборки и завершить работу раннера после завершения всех запущенных сборок |
run |
SIGHUP | Принудително перечитать конфигурационный файл |
Пример использования сигналов
SIGINT - срочно остановить Runner
когда нужно
- случайно запустил runner
- нужно немедленно его выключить
- не важно, что происходит с pipeline
SIGTERM - остановка через systemd
кто делает
- systemctl
- Docker
- Kubernetes
- Другие менеджеры процессов.
SIGQUIT - обновление Runner без потери Job
Нужно бновить Runner. Делать stop плохо, сломаются Job
Поэтому:
После этого Runner не берет новые задачи, а запущенные Job продолжают работать и как только они закончатся Runner сам завершит свою работу.
SIGHUP - изменить настройки без перезапуска
ты изменил настройки config.toml и хочешь начать их использовать
Runner открывает заново файл, читает новые настройки и продолжает работать, Job не прерываются.
Это быстрее чем остановить Runner и заново запустить.
Управление Runner
| Команда | Описание |
|---|---|
gitlab-runner run |
запустить сервис от текущего пользователя |
sudo gitlab-runner run |
запустить сервси от root |
gitlab-runner run --config (-c) "/home/test/config.toml" |
запустить сервис с использованием другого config.toml (не по умолчанию) |
Ошибки на executor shell
Ошибка: Job failed: prepare environment: exit status 1
то это ошибка shell скрипта, и нужно закоментировать все что есть в файле sudo nano /home/gitlab-runner/.bash_logout
затем перезапустить runner:
Ошибка: permission denied while trying to connect to the docker API at unix:///var/run/docker.sock
это означает что пользователь gitlab-runner не может использовать сокет docker
Нужно включить пользователя gitlab-runner в группу Docker