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

Установка и запуск агента GitFlic Runner c типом Docker

Посмотрите в таблице совместимости нужную вам версию агента и скачайте её с страницы релизов runner. Последняя версия runner доступна по ссылке.


Установка зависимостей

  1. Установите необходимую версию Docker Engine

    sudo apt update && sudo apt install docker.io
    

    1.1 Удалите все конфликтные пакеты

    ``` shell
    for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
    ```
    

    1.2 Установите apt репозиторий

    ``` shell
    # Add Docker's official GPG key:
    sudo apt-get update
    sudo apt-get install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    # Add the repository to Apt sources:
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
    $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    ```
    

    1.3 Установите пакеты docker engine

    ``` shell
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    ```
    

    Воспользуйтесь официальной инструкцией по установке от команды Docker.

  2. Установите java

    • Проверьте доступные версии OpenJDK:
    sudo apt policy openjdk-11-jdk
    
    • Установите пакет:
    sudo apt install openjdk-11-jdk
    
    • Проверьте установленную версию:
    java --version
    
    • Скопируйте deb пакет axiom jdk на удаленный сервер
    scp axiomjdk11-*.deb <username>@<ip>:~/ 
    
    • Установите пакет:
    sudo apt install ./axiomjdk11*.deb
    
    • Проверьте установленную версию:
    java --version
    

Установка агента

  1. Создайте временную директорию и распакуйте в нее архив с дистрибутивом runner.

    sudo mkdir /tmp/gitflic-runner
    sudo unzip runner_*.zip -d /tmp/gitflic-runner
    
  2. Создайте директорию где будет находиться исполняемый файл runner,jar

    sudo mkdir -p /opt/gitflic-runner
    
  3. Скопируйте исполняемый файл runner.jar в созданную директорию

    sudo cp /tmp/gitflic-runner/runner.jar /opt/gitflic-runner
    
  4. Создайте пользователя gitflic-agent

    sudo useradd --no-create-home --system --shell /sbin/nologin gitflic-agent
    
  5. Добавьте пользователя gitflic-agent в группу docker

    sudo usermod -aG docker gitflic-agent
    

Регистрация агента

  1. Перейдите в веб интерфейс приложения

    GitFlic -> Панель администратора -> СI/CD

    http(s)://<Адрес веб интерфейса>/admin/runners
    

    Регистрация агента на gitflic.ru возможна только на уровне компании

    Настройки компании -> Агенты CI/CD*

    https://gitflic.ru/company/<company_name>/setting/cicd/runners
    
  2. Скопируйте и сохраните URL и Token

    Получение токена

  3. Перейдите в директорию с исполняемым файлом runner.jar

    sudo cd /opt/gitflic-runner
    
  4. Выполните команду регистрации

    sudo java -jar runner.jar register --url <url> --registration-token <token>
    
Ключ Обязательный Описание
--url \<url> Да URL скопированный в п.1
--registration-token \<token> или --token \<token> Да Token скопированный в п.1
--name \<name> Нет Название агента
--tags \<tags> Нет Теги агента (через запятую)
--registry-url \<docker_registry_url> Нет URL реестра пакетов. Необходим если задача CI/CD требуют доступа к образам приватного реестра
--registry-user \<docker_registry_user> Нет Пользователь, который используется для авторизации в реестре пакетов. Необходим если задача CI/CD требуют доступа к образам приватного реестра
--registry-password \<docker_registry_password> Нет Транспортный токен, который используется для авторизации в реестре пакетов. Необходим если задача CI/CD требуют доступа к образам приватного реестра
--docker-image \<image> Нет Образ, который будет использован для работы, если не указан любой другой в задачи или конвейере
\* При успешном завершении регистрации в веб интерфейсе приложения на вкладке из п.1 появится соответствующая запись о том, что агент подключен к приложению.</br>
\* В рабочей директории будет создана директория **config** содержащая файл **application.properties**.</br>

![Регистрация агента](/src/setup/runner-setup-1.jpg)
  1. Добавьте необходимые параметры для запуска в файл config/application.properties.

    runner.executor=docker
    docker.didEnable=false
    docker.host=unix:///var/run/docker.sock
    docker.registry-username= #Имя пользователя для доступа к registry
    docker.registry-password= #Пароль пользователя для доступа к registry
    docker.registry-url= #URL для входа в registry
    logging.file.name=data/log/server.log
    logging.level.root=INFO
    

    *При необходимости добавьте дополнительные параметры в файл application.properties созданный в п.4. С описанием параметров можно ознакомиться на данной странице.

  2. Установите владельца директорий пользователя gitflic-agent

    sudo chown -R gitflic-agent:gitflic-agent /opt/gitflic-runner
    

Указание пути к сокету Docker для GitFlic Runner на Windows

В случае, если GitFlic Runner с типом Docker запускается в Windows, необходимо использовать путь к сокету Docker через интерфейс npipe:

docker.host=npipe:////./pipe/docker_engine

Warning

В связи с недоступностью Docker Hub, для корректной работы агента необходимо использование другого реестра docker образов. Чтобы подключить к агенту GitFlic Docker Registry, необходимо изменить необходимые параметры в файле config/application.properties (пункт 5) по следующей схеме:

docker.registry-username= #username пользователя на gitflic.ru
docker.registry-password= #транспортный токен пользователя на gitflic.ru
docker.registry-url=https\://registry.gitflic.ru

Info

При использовании старой версии агента (< 3.1.1), могут возникать ошибки при загрузке образа gitflic-runner-helper, обусловленные недоступностью Docker Hub. Для их исправления требуется добавить в application.properties агента следующие параметры:

runner.helperImage=registry.gitflic.ru/company/gitflic/gitflic-runner-helper:{используемая версия агента}
docker.registry-username= #username пользователя на gitflic.ru
docker.registry-password= #транспортный токен пользователя на gitflic.ru
docker.registry-url=https\://registry.gitflic.ru

Таким образом агент будет использовать GitFlic Docker Registry и корректный образ gitflic-runner-helper. Если необходимо при работе с агентом использовать другой реестр докер контейнеров, gitflic-runner-helper образ можно загрузить на машину, где запущен агент, используя параметры подключения к GitFlic Docker Registry, описанные выше. При этом в application.properties должна быть указана лишь:

runner.helperImage=registry.gitflic.ru/company/gitflic/gitflic-runner-helper:{используемая версия агента}

Запуск агента

Выполните команду запуска

``` shell
sudo -u gitflic-agent java -jar runner.jar start --config=config/application.properties
```

*--config= - Параметр указывающий на расположение файла с настройками.

  1. Создайте файл юнита systemd

    touch /etc/systemd/system/gitflic-agent.service
    
  2. Вставьте необходимые параметры для запуска в файл /etc/systemd/system/gitflic-agent.service

    sudo cat <<EOF >> /etc/systemd/system/gitflic-agent.service
    [Unit]
    Description=Gitflic-runner
    
    [Service]
    User=gitflic-agent
    Group=gitflic-agent
    WorkingDirectory=/opt/gitflic-runner
    ExecStart=/usr/bin/java -jar runner.jar start --config=config/application.properties
    ExecStop=/bin/kill -s 15 $MAINPID
    StandardOutput=journal
    StandardError=journal
    Restart=on-failure
    RestartSec=10
    TimeoutStartSec=2min
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    /etc/systemd/system/gitflic-agent.service
    [Unit]
    Description=Gitflic-runner
    
    [Service]
    User=gitflic-agent
    Group=gitflic-agent
    WorkingDirectory=/opt/gitflic-runner
    ExecStart=/usr/bin/java -jar runner.jar start --config=config/application.properties
    ExecStop=/bin/kill -s 15 $MAINPID
    StandardOutput=journal
    StandardError=journal
    Restart=on-failure
    RestartSec=10
    TimeoutStartSec=2min
    
    [Install]
    WantedBy=multi-user.target
    
  3. Перезагрузите юниты в системе

    sudo systemctl daemon-reload
    
  4. Включите автозапуск и запустите агента

    systemctl enable gitflic-agent.service
    systemctl start gitflic-agent.service