Настройка GitLab CI для сборки проектов gsf-cli#

Инструкция по настройке CI процесса для автоматической сборки applib.

1. Настройка gitlab-runner#

Инструкция применима к хосту сборки с debian like системой.

1.1 Настройка раннера в GitLab проекте#

  1. Перейдите в нужный проект.

  2. Откройте меню: SettingsCI/CD.

  3. Разверните секцию Runners.

  4. Нажмите «New project runner».

  5. Укажите:

    • Tag — метка, по которой будет запускаться раннер.

    • Runner description — описание раннера.

  6. Отключите опцию Run untagged jobs.

После нажатия вы перейдёте на страницу справки по регистрации gitlab-runner.

Выберите нужную операционную систему и сохраните предложенную команду регистрации.


1.2. Установка GitLab Runner#

На хосте сборки выполните следующие команды:

# Скачивание бинарного файла GitLab Runner
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

# Выдача прав на исполнение
sudo chmod +x /usr/local/bin/gitlab-runner

# Создание системного пользователя
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

# Установка раннера как systemd-сервиса
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

# Запуск сервиса
sudo gitlab-runner start

1.3. Регистрация раннера#

Выполните команду регистрации, полученную на этапе Настройка раннера в GitLab проекте:

Пример:

sudo gitlab-runner register --url http://gitlablocal --token glrt-t3_m2-zeUzFHMysT3QDwmsT

Данная команда выдаст диалоговое окно, в котором:

  • Укажите имя раннера (можно оставить по умолчанию).

  • Выберите тип исполнителя: shell.

  • Убедитесь, что вы используете тот же tag, что был указан на этапе Настройка раннера в GitLab проекте.

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


1.4. Проверка#

Для проверки работоспособности раннера, создайте минимальный .gitlab-ci.yml (Укажите корректный тэг раннера):

test-job:
  tags:
    - <your-runner-tag>
  script:
    - echo "Runner работает!"

Возможные проблемы#

Если при запуске пайплайна, он выдает такую ошибку:

Тогда требуется:

  • в файле /home/gitlab-runner/.bash_logout закомментировать строки:

    if [ "$SHLVL" = 1 ]; then
        [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
    fi
    
  • перезапустить сервис gitlab-runner

    sudo systemctl restart  gitlab-runner.service
    

2. Установка и настройка GSF-CLI на хосте сборки#

Программное обеспечение, которое потребуется для сборки#

2.1. Установка требуемых пакетов#

sudo apt update && sudo apt install -y sudo wget git mc zip unzip

2.2. Подготовка директорий#

Создайте рабочие каталоги:

sudo mkdir -p /opt/global/tmp
sudo mkdir -p /opt/global/builds

2.3. Загрузка необходимых компонентов#

# GSF CLI
sudo wget -P /opt/global/tmp https://repo.global-system.ru/artifactory/common/ru/bitec/gsf-cli-linux/SNAPSHOT/gsf-cli-linux-SNAPSHOT.zip

# sbt
sudo wget -P /opt/global/tmp https://github.com/sbt/sbt/releases/download/v1.10.7/sbt-1.10.7.zip

# JDK 21 от BellSoft
sudo wget -P /opt/global/tmp https://github.com/bell-sw/Liberica/releases/download/21.0.6%2B10/bellsoft-jdk21.0.6+10-linux-amd64-full.deb

2.4. Установка и распаковка компонентов#

# Установка JDK
sudo apt install /opt/global/tmp/bellsoft-jdk21.0.6+10-linux-amd64-full.deb

# Распаковка SBT
sudo unzip /opt/global/tmp/sbt-1.10.7.zip -d /opt/global

# Распаковка GSF CLI
sudo unzip /opt/global/tmp/gsf-cli-linux-SNAPSHOT.zip -d /opt/global/gsf-cli

2.5. Установка GSF CLI#

sudo /opt/global/gsf-cli/bin/installpkg.sh
sudo /opt/global/gsf-cli/bin/initvenv.sh

2.6. Настройка сборочного проекта#

Конфигурационный файл#

Создайте конфигурационный файл:

sudo nano /opt/global/builds/config.json

cо следующим содержимым (укажите корректный project_branch и project_source)

  • project_source — url на конфигурационный проект

  • project_branch — ветка конфигурационного проекта

{
  "sbt_home": "/opt/global/sbt",
  "svn_path": "",
  "projects": [
    {
      "project_branch": "test",
      "jdk_home": "/usr/lib/jvm/bellsoft-java21-amd64/",
      "name": "main",
      "project_source": "https://extgit.global-system.ru/pgtest.git",
      "project_source_type": "vcs",
      "publish_type": "SNAPSHOT",
      "vcs_type": "git"
    }
  ]
}

Детальное описание файла можно посмотреть тут

Регистрация приватного ключа#

sudo /opt/global/gsf-cli/config.sh register_private_key -c /opt/global

Установка необходимых учётных данных#

sudo /opt/global/gsf-cli/credential_manager.sh set -u <url> -l <login> -p <password>

Указывайте учетные данные для необходимых репозиториев, указанных в файле default.yaml из конфигурационного проекта.

Пример:

Если у вас закрытая среда, то ознакомьтесь с документацией


2.7. Активация headless-режима#

Включаем headless режим, для отключение диалога с пользователем в процессе сборки.

sudo /opt/global/gsf-cli/config.sh enable_headless

2.8. Загрузка конфигурации#

Команда для загрузки конфигурации из config.json.

sudo /opt/global/gsf-cli/config.sh load_config -f /opt/global/builds/config.json

2.9. Смена владельца директории#

Сделайте владельцем директории с gsf-cli, пользователя, который был создан в шаге Установка GitLab Runner, в данном примере это gitlab-runner

sudo chown gitlab-runner:gitlab-runner /opt/global -R

3. Конфигурация пайплайна#

Создайте файл .gitlab-ci.yml в корне проекта.

Минимальная конфигурация .gitlab-ci.yml для сборки проекта:

stages:
  - build

ssh_execute:
  stage: build
  tags:
    - <runner_tag>
  script:
    - |
      /opt/global/gsf-cli/manage.sh --all build

После выполнения данного пайплайна в папке /opt/global/gsf-cli/workspace/sources/<project_name>/application/build/publish/applib будет собранное прикладное решение.