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

CI

Установка и настройка self-hosted раннера

Информация

Для установки раннера вам потребуются права администратора на репозиторий.

  1. Для создания раннера переходим по следующей ссылке, не забыв поменять {repo} на название репозитория, для которого планируется создать раннер.

    Привожу ниже пример ссылки для репозитория SWAP-Docs, то есть этой документации.

    https://github.com/SmartWorkforce-APP/SWAP-Docs/settings/actions/runners/new

    Находим на странице секцию Configure и строчку с url и token. Забираем из неё значения из --url и --token в переменные среды.

  2. Т.к. оригинальный github actions runner не запускается на старых системах, типа CentOS 7, мы воспользуемся этим мультиплатформенным раннером на основе act: https://github.com/ChristopherHX/github-act-runner

    Для его установки и настройки выполним следующие команды:

    Bash
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    # Добавляем пользователя runner
    useradd runner
    # Сменяем текущего пользователя и дальнейшие команды выполняем от его имени
    su - runner
    # Скачиваем последнюю версию github-act-runner
    curl -o runner.tar.gz -L https://github.com/ChristopherHX/github-act-runner/releases/download/v0.9.0/build-linux-amd64.tar.gz
    # И распаковываем её в текущий каталог
    tar xzf runner.tar.gz
    
    # Заполняем эти переменные своими значениями
    # (для удобства конфигурации они были вынесены в переменные среды)
    CI_RUNNER_NAME="goswap_app_ci_runner"
    CI_RUNNER_URL="https://github.com/{owner}/{repo}"  # поменяйте здесь {owner} и {repo} на свои
    CI_RUNNER_TOKEN="{token}"  # поменяйте здесь {token} на тот, что вы нашли на странице создания нового раннера
    CI_RUNNER_PAT="{pat}"  # этот токен вы должны получить в настройках разработчика https://github.com/settings/tokens
    CI_RUNNER_LABELS="centos7-amd64"
    
    # Отконфигурируем раннер с этими параметрами
    ./github-act-runner configure    \
        --url "$CI_RUNNER_URL"       \
        --token "$CI_RUNNER_TOKEN"   \
        --pat "$CI_RUNNER_PAT"       \
        --name "$CI_RUNNER_NAME"     \
        --labels "$CI_RUNNER_LABELS"
    
    # И запустим его
    ./github-act-runner run
    

Тестирование CI-сценариев на локальной машине

  1. Для этого нам понадобится act. Скачайте и установите его по ссылке: https://nektosact.com/installation/index.html
  2. Создайте файл .actrc в корне склонированного репозитория с проектом. Поместите в него следующее содержимое:
Text Only
1
2
3
4
5
6
-P centos7-amd64=redhat/ubi9:latest
--secret-file .secrets
--env ACTIONS_RUNTIME_URL=http://artifacts.docker.internal:8844/
--env ACTIONS_RUNTIME_TOKEN=foo
--env ACTIONS_CACHE_URL=http://artifacts.docker.internal:8844/
--artifact-server-path artifacts
  1. Для тестирования загрузки артефактов нам также потребуется поднять локальный сервер артефактов. Делается это одной командой докера:
Bash
1
2
3
4
5
6
docker run \
  --name artifact-server \
  -d -p 8844:8080 \
  --add-host artifacts.docker.internal:host-gateway \
  -e AUTH_KEY=foo \
  ghcr.io/jefuller/artifact-server:latest

Если у вас уже занят порт 8844 каким-то другим сервисом - поменяйте его на свой в команде выше и в файле .actrc. Обратите внимание на переменную AUTH_KEY. Она должна быть равной значению ACTIONS_RUNTIME_TOKEN из .actrc.

  1. Также создайте файл .secrets в корне склонированного репозитория с проектом. Его содержимое будет примерно следующим:
Text Only
1
2
3
TELEGRAM_BOT_TOKEN="{telegram_bot_token}"
TELEGRAM_CHAT_ID="{telegram_chat_id}"
GITHUB_TOKEN="{github_personal_access_token}"

После чего запускайте act из консоли.

Команды act

Для просмотра всех существующих "заданий" (они же jobs):

Bash
1
act -l

Для запуска конкретного задания:

Bash
1
act -j "{job_id}"

где {job_id} - идентификатор выбранного задания из списка act -l (вторая колонка таблицы)