Установка GitHub runner

Статья по установке и базовой настройке GitHub runner на ваш собственный сервер. Ничего сложного, но как всегда не без нюансов.

Установка GitHub runner

Добавить раннер можно на уровне репозитория, организации или предприятия (объединение нескольких организаций). В этой статье рассматривается первый вариант.

Предварительные требования

Разворачивать раннер я планирую на виртуальной машине с Ubuntu 20.04. Для его установки никаких специфических требований 1 нет, кроме уж совсем базового набора софта, доступа до ресурсов GitHub и др. Тем не менее потребуется Docker 2, если вы хотите запускать задачи внутри контейнеров.

Примечание: если хотите автоматизировать развертывание Docker, рекомендую использовать для этого Ansible. Например я пользуюсь ролью Ansible Role: Docker.

Также помните, что помимо самого раннера на хосте будут запускаться экшны, а это приложения Node.js. Базовое окружение они подтянут под себя сами, но например некоторый софт нужно будет установить отдельно.

Примечание: например gradle-build-action подтягивает архив нужной версии Грэдла, но при попытке распаковать его он упадет, если в системе не установлен unzip.

Вы можете максимально подогнать окружение своих раннеров под те, которые предоставляет GitHub, благо список софта 3 есть в официальной документации.

Установка

Актуальную инструкцию по установке вы всегда можете получить в настройках нужного репозитория – Settings / Actions / Runners / New self-hosted runner. Вот так это выглядит:

Установка GitHub runner 02

Выполнять команды нужно под пользователем, имеющим полные привилегии sudo.

Примечание: при запуске под рутом скрипт ругнется. Если вас не смущает выполнение установки под суперпользователем, то просто задайте переменную окружения  – RUNNER_ALLOW_RUNASROOT=1.

Скрипт задаст несколько вопросов в интерактивном режиме. Вы можете заранее на них ответить, передав соответствующие параметры скрипту. В итоге команда может выглядеть следующим образом:

У скрипта также есть справка:

При запуске ./run.sh сервис запустится прямо из консоли, а в списке раннеров появится только что добавленный. Если отправите SIGTERM (Ctrl+C), сервис остановится. Чтобы заставить его работать как службу, читайте следующую главу.

Автозапуск

Для меня загадка почему это не сделать сразу через скрипт начальной настройки, но разработчики почему-то выделили процесс создания systemd-юнита в отдельный гайд 4. Все упирается в пару команд:

Будет создан и активирован systemd-юнит:

Кастомизируйте юнит на свое усмотрение, если вдруг это необходимо.

Удаление

Для корректного удаления мало просто остановить systemd-юнит, нужно найти раннер также на GitHub и нажать Remove:

Установка GitHub runner 03

Копируйте команду и выполняйте на раннере. После этого он будет удален.

Яндекс.Метрика