Перейти к содержанию

GitLab Runner

Описание

GitLab Runner - отдельный сервис на системе, который принимает pipeline и выполняет их у себя.


Основы

GitLab Runner использует конфигурауционный файл TOML формата.

Когда runner запущен от root sudo gitlab-runner run , файл лежит по пути:

/etc/gitlab-runner/config.toml
Если runner запущен не от root gitlab-runner run, то файл находится тут:
~/.gitlab-runner/config.toml

В других системах (non Unix) файл находится:

./config.toml


Использование в pipeline

Для использования определенного gitlab runner в каждом pipeline нужно использовать ключевое слово tag и название runner (а точнее его tag)

tags: 
 - shell

А что если не указать tag в piipeline

В таком случае runner будет выбран самостоятельно из shared (общедоступных)


Сигналы

Команда Сигнал Описание
register SIGINT Отменить регистрацию Runner. Если Runner уже успел зарегистрироваться, удалить его регистрацию.
run, run-single SIGINT, SIGTERM Прервать все запущенные сборки и завершнить работу раннера
run, run-single SIGQUIT Перестать принимать новый сборки и завершить работу раннера после завершения всех запущенных сборок
run SIGHUP Принудително перечитать конфигурационный файл

Пример использования сигналов

SIGINT - срочно остановить Runner

gitlab-runner run
...
...
в другом терминале
kill -SIGINT $(PIDOF gitlb-runner)
или 
Ctrl+C

когда нужно

  • случайно запустил runner
  • нужно немедленно его выключить
  • не важно, что происходит с pipeline

SIGTERM - остановка через systemd

sudo systemctl stop gitlab-runner

systemctl делает

kill -SIGTERM <PID Runner>

кто делает

  • systemctl
  • Docker
  • Kubernetes
  • Другие менеджеры процессов.

SIGQUIT - обновление Runner без потери Job

Нужно бновить Runner. Делать stop плохо, сломаются Job

Поэтому:

klill -SIGQUIT $(pidof gitlab-runner)

После этого Runner не берет новые задачи, а запущенные Job продолжают работать и как только они закончатся Runner сам завершит свою работу.


SIGHUP - изменить настройки без перезапуска

ты изменил настройки config.toml и хочешь начать их использовать

kill -SIGHUP $(pidof gitlab-runner)

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

# if [ "$SHLVL" = 1 ]; then

#     [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q

# fi

затем перезапустить runner:

gitlab-runner restart

Ошибка: permission denied while trying to connect to the docker API at unix:///var/run/docker.sock

это означает что пользователь gitlab-runner не может использовать сокет docker

Нужно включить пользователя gitlab-runner в группу Docker

sudo usermod -aG docker gitlab-runner

Ошибки на executor docker