Регистрация и запуск раннеров
Настройка раннеров
Подготовительные действия
Установите docker, скачайте раннер и настройте demo.yaml
файл конфигурации CI/CD.
Для проверки примеров CI/CD с конфигурацией demo.yaml
доступен репозиторий CICD_examples, ветка demo (opens in a new tab), в нем:
- подготовлен файл конфигурации
.gitverse/workflows/demo.yaml
; - загружен раннер
act_runner
.
Конфигурация demo.yaml
Файл demo.yaml
следует расположить в директории .gitverse/workflows
вашего проекта, он определяет конфигурацию работы CI/CD для GitVerse:
name: Демонстрация GitVerse CI/CD
on:
push:
jobs:
build-test:
name: Test context
runs-on: ubuntu-latest
steps:
- name: Display event name
run: echo ${{ gitverse.event_name }}
- name: Display Workflow
run: echo ${{ gitverse.workflow }}
- name: Display repository name
run: echo ${{ gitverse.Repository}}
- name: Display repository owner
run: echo ${{ gitverse.repository_owner }}
- name: Display actor
run: echo ${{ gitverse.actor }}
Раннер так же обработает .yaml
файлы в директории .github/workflows
.
Структура:
name:
Название конфигурации CI/CD - "Демонстрация GitVerse CI/CD";on:
Определяет события, на которые реагирует CI/CD:push:
В данном случае, это событиеpush
;
jobs:
Определяет список задач, которые нужно выполнить:build-test:
name: Test context
Название задачи;runs-on: ubuntu-latest
Определяет операционную систему, на которой будет выполняться задача;steps:
Список шагов, которые нужно выполнить в рамках задачи. Каждый шаг имеет:name:
Название шагаrun:
Команда, которую нужно выполнить в рамках шага, используя переменные окружения GitVerse, такие как gitverse.event_name, gitverse.workflow, gitverse.Repository, gitverse.repository_owner, gitverse.actor.
Каждый шаг выполняет команду echo для вывода соответствующей переменной окружения GitVerse:
- Display event name. Команда
echo ${{ gitverse.event_name }}
выводит значение переменной event_name из переменных окружения GitVerse; - Display Workflow. Команда
echo ${{ gitverse.workflow }}
выводит значение переменной workflow из переменных окружения GitVerse; - Display repository name. Команда
echo ${{ gitverse.Repository }}
выводит значение переменной Repository из переменных окружения GitVerse; - Display repository owner. Команда
echo ${{ gitverse.repository_owner }}
выводит значение переменной repository_owner из переменных окружения GitVerse; - Display actor. Команда
echo ${{ gitverse.actor }}
выводит значение переменной actor из переменных окружения GitVerse.
Установка Docker (Ubuntu)
Установка Docker может потребовать от вас рутовых прав.
Обновите индекс пакета apt:
sudo apt update
Установите пакеты, позволяющие apt использовать репозиторий через HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Добавьте открытый ключ GPG Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Установите стабильный репозиторий:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Повторно обновите индекс пакета apt:
sudo apt update
Установите Docker:
sudo apt install docker-ce
Запустить службу Docker:
sudo systemctl start docker
Проверьте версию докера::
$ sudo docker --version Docker version 27.1.1, build 6312585
Проверьте, что докер исполняется:
$ sudo systemctl status docker docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) ...
Запуск раннеров
Запуск бинарного раннера с интерактивной регистрацией
Создайте yaml файл demo.yaml рабочего процесса (workflow) в каталоге
./gitverse/workflows/
репозитория.Скачайте бинарный файл раннера и поместите раннер в каталог вашего проекта.
Раннер работает только с заданиями из репозитория, к которому он привязан.
Сделайте файл исполняемым и проверьте, что скачанный файл соответствует вашей ОС.
Пример:
chmod +x act_runner ./act_runner --version
Успешным будет ответ вида:
act_runner version 40a6fce
Включите CI/CD в профиле вашего репозитория (Настройки>Репозиторий>CI/CD>Обновить).
Пример:
Получите регистрационный токен раннера (Настройки>Раннеры>Добавить раннер>копировать токен).
Пример:
Зарегистрируйте раннер, используя полученный токен.
Пример:
./act_runner register
У вас запросят регистрационный токен, введите его:
INFO Registering runner, arch=amd64, os=linux, version=40a6fce. WARN Runner in user-mode. INFO Enter the runner token: <token>
Далее введите имя раннера:
INFO Enter the runner name (if set empty, use hostname: <host name>): demo-runner
(Опционально) введите лейбл раннера:
INFO Enter the runner labels, leave blank to use the default labels (comma-separated, for example, ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster,linux_arm:host): runnerlabel
Пример сообщения об успешной регистрации:
INFO Registering runner, name=demo-runner, instance=https://gitverse.ru/sc, labels=[runnerlabel]. DEBU Successfully pinged the GitVerse instance server INFO Runner registered successfully.
Регистрационный токен раннера может быть активирован только один раз.
💡После регистрации в текущей директории появится файл
.runner
. Он хранит данные регистрации – не редактируйте его вручную! Если файл потеряется или повредится, удалите его и повторите регистрацию. При необходимости можно указать иное местоположение файла через конфигурацию.После регистрации раннер отобразится со статусом "Недоступен" (Профиль репозитория>Настройки>Раннеры).
Пример:
Запустите службу Docker.
Пример:
sudo systemctl start docker
Проверьте версию докера::
$ sudo docker --version Docker version 27.1.1, build 6312585
Проверьте, что докер исполняется:
$ sudo systemctl status docker docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) ...
Запустите раннер.
Пример:
sudo ./act_runner daemon
Пример сообщения об успешном запуске:
INFO[0000] Starting runner daemon
Статус раннера изменится после запуска (Профиль репозитория>Настройки>Раннеры).
Пример:
Внесите изменения в репозиторий, чтобы раннер среагировал на событие push.
Пример:
В профиле репозитория на вкладке CI/CD отразится выполненная работа по данному коммиту.
Пример:
Кликните на задачу, чтобы посмотреть детали:
Запуск бинарного раннера на виртуальной машине cloud.ru
Зарегистрируйтесь/войдите на cloud.ru и создайте виртуальную машину (opens in a new tab).
Пример:
Подключитесь к ВМ по SSH (opens in a new tab).
Пример:
ssh author@194.5.93.199
Отобразится сообщение об успешном соединении. После установления соединения по SSH, вы сможете взаимодействовать с ВМ через командную строку для выполнения команд и управления сервером:
Логин и публичный IP для подключения к ВМ можно посмотреть в настройках данной ВМ, нажмите на ВМ:
На открывшейся странице отображены нужные для подключения по SSH данные:
В терминале ВМ создайте ключи SSH и привяжите к аккаунту GitVerse.
Пример:
Введите:
Отобразится:
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/author/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/author/.ssh/id_rsa Your public key has been saved in /home/author/.ssh/id_rsa.pub
В консоли ВМ клонируйте репозиторий.
Пример:
sudo git clone ssh://git@gitverse.ru:2222/author/actions-repo.git
Зайдите в папку с клонированным проектом:
Пример:
cd ~/Work/actions-repo
Далее выполните действия с первого шага для запуска бинарного раннера с интерактивной регистрацией.
Запуск раннера в Docker контейнере на виртуальной машине cloud.ru
Зарегистрируйтесь/войдите на cloud.ru и создайте виртуальную машину (далее - ВМ) (opens in a new tab).
Пример:
Подключитесь к ВМ по SSH (opens in a new tab). Логин и публичный IP можно посмотреть в настройках данной ВМ.
Пример:
ssh author@194.5.93.199
В терминале ВМ создайте ключи SSH и привяжите к аккаунту GitVerse.
Пример:
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/author/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/author/.ssh/id_rsa Your public key has been saved in /home/author/.ssh/id_rsa.pub
Пример:
sudo git clone ssh://git@gitverse.ru:2222/author/actions-repo.git
Зайдите в папку с клонированным проектом:
Пример:
cd ~/Work/actions-repo
Создайте yaml файл demo.yaml рабочего процесса (workflow) в каталоге
./gitverse/workflows/
репозитория.Запустите службу Docker.
Пример:
sudo systemctl start docker
Проверьте версию докера::
$ sudo docker --version Docker version 27.1.1, build 6312585
Проверьте, что докер исполняется:
$ sudo systemctl status docker docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) ...
Скачайте докер образ раннера.
Пример:
sudo docker pull gitverse.ru/gitverse/act-runner:3.0.1
Должно прийти сообщение вида:
3.0.1: Pulling from gitverse/act-runner 3c854c8cbf46: Pull complete 7d93e3aa1115: Pull complete 6c0aaec6dc7c: Pull complete 0ef879a0db1b: Pull complete Digest: sha256:28e6ea0f8ecca9cccc5c9cae6022cb9878a948b10413320b5c7546b5cd9533fb Status: Downloaded newer image for gitverse.ru/gitverse/act-runner:3.0.1 gitverse.ru/gitverse/act-runner:3.0.1
Получите регистрационный токен раннера (Настройки>Раннеры>Добавить раннер>копировать токен).
Пример:
Выполните запуск и регистрацию докера в контейнере:
Пример:
sudo docker run \ -v /var/run/docker.sock:/var/run/docker.sock \ -e RUNNER_REGISTRATION_TOKEN=aQFelOnS7FqA9eCFUkjSJD06ztdWjk3gaRrSjNVp \ gitverse.ru/gitverse/act-runner:3.0.1
Должно прийти сообщение вида:
level=info msg="Registering runner, arch=amd64, os=linux, version=40a6fce." level=debug msg="Successfully pinged the GitVerse instance server" level=info msg="Runner registered successfully." SUCCESS time="2024-04-24T17:23:27Z" level=info msg="Starting runner daemon" time="2024-04-24T17:23:28Z" level=info msg="task 1573 repo is author/actions-repo https://github.com https://gitverse.ru/sc"
⚠️При первом запуске произойдет скачивание образа контейнера. При последующих запусках раннер начнет исполняться сразу после выполнения команды.
В профиле репозитория на вкладке Настройки>Ранеры отобразится новый статус раннера:
Внесите изменения в репозиторий, чтобы раннер среагировал на событие push.
Пример:
В профиле репозитория на вкладке CI/CD отразится выполненная работа по данному коммиту.
Пример:
Кликните на задачу, чтобы посмотреть детали:
Запуск раннера в фоновом режиме и запись логов в файл
Запуск раннера в фоновом режиме и запись логов в файл
Для раннера в Docker контейнере
Для запуска раннера в фоновом режиме добавьте в команду опцию -d
, а также перенаправление вывода 2>&1
(stdout и stderr) в указанный файл лога. Убедитесь, что у вас есть права на запись в указанный файл лога.
Пример:
sudo docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-e RUNNER_REGISTRATION_TOKEN=TjrvgIS5Vk0jD6C1zd313CiQ3v9KB8OFznzXt2KE \
gitverse.ru/gitverse/act-runner:3.0.1 > logfile2.log 2>&1
Прерывание процесса Docker
Узнайте идентификатор контейнера, запустив команду:
sudo docker ps
Придет сообщение вида:
$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5f1aca58bf5d gitverse.ru/gitverse/act-runner:3.0.1 "/sbin/tini -- /opt/…" About a minute ago Up About a minute zealous_bhabha
Затем используйте команду
docker stop
с идентификатором контейнера, чтобы его остановить:sudo docker stop 5f1aca58bf5d
Для бинарного раннера
nohup sudo ./act_runner daemon &> ./runner.log &
Пояснение:
nohup
- запускает команду, игнорируя сигналыSIGHUP
, что позволяет продолжить работу после завершения сеанса пользователя;sudo ./act_runner daemon
- запускает бинарный файлact_runner
в режиме демона с привилегиями суперпользователя;&> ./runner.log
- перенаправляет стандартный вывод и стандартный вывод ошибок в файлrunner.log
;&
- запускает процесс в фоновом режиме.
Прерывание процесса
Для прерывания процесса выполните:
sudo pkill act_runner
или
sudo pkill <PID>
Получение PID процессов
Чтобы посмотреть запущенные вами процессы выполните:
ps ux
Чтобы посмотреть все процессы в системе выполните:
ps aux
Обе команды ps aux
и ps ux
покажут вам список запущенных процессов, их PID (идентификатор процесса), использование CPU и памяти и другую информацию.