Статья по установке и базовой настройке GitHub runner на ваш собственный сервер. Ничего сложного, но как всегда не без нюансов.
Содержание
Установка GitHub runner
Добавить раннер можно на уровне репозитория, организации или предприятия (объединение нескольких организаций). В этой статье рассматривается первый вариант.
Предварительные требования
Разворачивать раннер я планирую на виртуальной машине с Ubuntu 20.04. Для его установки никаких специфических требований 1 нет, кроме уж совсем базового набора софта, доступа до ресурсов GitHub и др. Тем не менее потребуется Docker 2, если вы хотите запускать задачи внутри контейнеров.
Также помните, что помимо самого раннера на хосте будут запускаться экшны, а это приложения Node.js. Базовое окружение они подтянут под себя сами, но например некоторый софт нужно будет установить отдельно.
Вы можете максимально подогнать окружение своих раннеров под те, которые предоставляет GitHub, благо список софта 3 есть в официальной документации.
Установка
Актуальную инструкцию по установке вы всегда можете получить в настройках нужного репозитория – Settings / Actions / Runners / New self-hosted runner. Вот так это выглядит:
Выполнять команды нужно под пользователем, имеющим полные привилегии sudo.
Скрипт задаст несколько вопросов в интерактивном режиме. Вы можете заранее на них ответить, передав соответствующие параметры скрипту. В итоге команда может выглядеть следующим образом:
1 2 3 4 5 6 7 |
./config.sh \ --url https://github.com/bissquit/rkn-exporter \ --token AGCYKNEHTQBK4JAEX2JCMF3CZSBGU \ --name runner-01 \ --runnergroup Default \ --labels home \ --unattended |
У скрипта также есть справка:
1 |
./config.sh --help |
При запуске ./run.sh сервис запустится прямо из консоли, а в списке раннеров появится только что добавленный. Если отправите SIGTERM (Ctrl+C), сервис остановится. Чтобы заставить его работать как службу, читайте следующую главу.
Автозапуск
Для меня загадка почему это не сделать сразу через скрипт начальной настройки, но разработчики почему-то выделили процесс создания systemd-юнита в отдельный гайд 4. Все упирается в пару команд:
1 2 |
sudo ./svc.sh install sudo ./svc.sh start |
Будет создан и активирован systemd-юнит:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ cat /etc/systemd/system/actions.runner.bissquit-rkn-exporter.runner-01.service [Unit] Description=GitHub Actions Runner (bissquit-rkn-exporter.runner-01) After=network.target [Service] ExecStart=/home/github-runner/runsvc.sh User=github-runner WorkingDirectory=/home/github-runner KillMode=process KillSignal=SIGTERM TimeoutStopSec=5min [Install] WantedBy=multi-user.target |
Кастомизируйте юнит на свое усмотрение, если вдруг это необходимо.
Удаление
Для корректного удаления мало просто остановить systemd-юнит, нужно найти раннер также на GitHub и нажать Remove:
Копируйте команду и выполняйте на раннере. После этого он будет удален.