Настройка GitLab CI для сборки проектов gsf-cli
Contents
Настройка GitLab CI для сборки проектов gsf-cli#
Инструкция по настройке CI процесса для автоматической сборки applib
.
1. Настройка gitlab-runner
#
Инструкция применима к хосту сборки с debian like
системой.
1.1 Настройка раннера в GitLab проекте#
Перейдите в нужный проект.
Откройте меню:
Settings
→CI/CD
.Разверните секцию
Runners
.Нажмите «New project runner».
Укажите:
Tag — метка, по которой будет запускаться раннер.
Runner description — описание раннера.
Отключите опцию
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
будет собранное прикладное решение.