Документация
ОС Аврора 5.0.1

Интеграция Platform SDK в CI/CD GitLab

Процесс интеграции Platform SDK в CI/CD GitLab на примере сборки проекта, созданного в мастере Application SDK, содержит следующие шаги:

  1. Создание нового проекта.
  2. Создание проекта в Application SDK и загрузка в Gitlab.
  3. Активация режима CI/CD.
  4. Настройка токена.
  5. Создание и настройка пользователя runner.
  6. Создание и настройка службы gitlab-runner.
  7. Регистрация runner с помощью токена.
  8. Установка Platform SDK.
  9. Добавление в Gitlab скрипта для сборки.
  10. Настройка CI/CD шаблона.
  11. Проверка сборки проекта в Gitlab.
  12. Запуск Pipeline.

Создание нового проекта

Создать новый пустой проект в GitLab (например, https://git.UrDomain.ru/username/myapp).

Создание проекта в Application SDK и загрузка в Gitlab

Создать в мастере Application SDK проект приложения (например, MyApp) и загрузить его в GitLab (https://git.UrDomain.ru/username/myapp/-/tree/master/MyApp).

Активация режима CI/CD

В настройках проекта Settings → General → Visibility, project features, permissions активировать переключатель CI/CD, после чего в левом боковом меню появится пункт CI/CD.

Настройка токена

В настройках проекта Settings → CI/CD → Runners в разделе Shared runners отключить опцию Enable shared runners for this project. Затем из раздела Specific runners скопировать токен registration token для локального runner.

Создание и настройка пользователя runner

Создать пользователя для установки в его домашней директории Platform SDK и GitLab runner. Предварительно убедиться, что пользователь gitlab-runner и его служба отсутствует в системе:

sudo userdel -r -f gitlab-runner
sudo rm /etc/sudoers.d/gitlab-runner
sudo systemctl stop gitlab-runner.service
sudo rm /etc/systemd/system/multi-user.target.wants/gitlab-runner.service
sudo rm /etc/systemd/system/gitlab-runner.service
sudo rm -rf /etc/gitlab-runner
sudo rm /usr/local/bin/gitlab-runner
sudo systemctl daemon-reload

Создание и настройка службы gitlab-runner

Создать пользователя gitlab-runner, установить и запустить в нем runner как службу:

# Создать и настроить пользователя GitLab Runner
CI_USER="gitlab-runner"
sudo useradd --comment 'GitLab Runner' --create-home $CI_USER --shell /bin/bash
sudo passwd --delete $CI_USER
sudo usermod -aG sudo $CI_USER
echo "$CI_USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$CI_USER
sudo rm -f /home/$CI_USER/.bash_logout
# Установить и запустить 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 gitlab-runner install --user=$CI_USER --working-directory=/home/$CI_USER
sudo gitlab-runner start

Регистрация runner с помощью токена

Зарегистрировать runner с помощью токена из Настройка токена:

sudo gitlab-runner register --url https://git.omprussia.ru/ --registration-token $REGISTRATION_TOKEN

После запуска команды нужно подтвердить несколько входных параметров:

  • URL, на котором развернут GitLab;
  • регистрационный токен;
  • описание runner (по умолчанию — результат команды hostname).

Важно: список тегов runner (например, aurora_psdk_runner) должен совпадать со списком тегов в файле .gitlab-ci.yml:

build-job:
stage: build
tags:
- aurora_psdk_runner

Опциональное примечание для runner можно оставить пустым.

Важно: В качестве исполняемого файла для runner следует указать shell.

После успешной регистрации можно обновить страницу SettingsCI/CDRunners. В разделе Available specific runners появится зарегистрированный runner.

Установка Platform SDK

Переключиться на пользователя gitlab-runner, перейти в домашнюю директорию и установить Platform SDK.

Добавление в Gitlab скрипта для сборки

В проект GitLab добавить скрипт build.sh для сборки:

#!/bin/bash

usage() {
	cat <<EOF

Build project in CI

Usage:
$(basename $0) [OPTION]

Options:
-n   | --name    <STRING>                project name
-v   | --version <STRING>                Aurora Platform SDK version
-r   | --release <STRING>                Aurora Platform SDK release
-t   | --target  [i486|armv7hl|aarch64]  select target
-h   | --help                            this help

EOF

	# exit if any argument is given
	[[ -n "$1" ]] && exit 1
}

fail() {
	echo ""
	echo "FAIL: $@"
	usage
	exit 1
}

# handle commandline options
while [[ ${1:-} ]]; do
	case "$1" in
	-n | --name ) shift
		OPT_PROJECT_NAME=$1; shift
		;;
	-v | --version ) shift
		OPT_PSDK_VERSION=$1; shift
		;;
	-r | --release ) shift
		OPT_PSDK_DEVEL_RELEASE=$1; shift
		;;
	-t | --target ) shift
		OPT_TARGET=$1; shift
		;;
	-h | --help ) shift
		usage quit
		;;
	* )
		usage quit
		;;
	esac
done

if [[ -z $OPT_PROJECT_NAME ]]; then
	fail "enter project name"
fi

if [[ -z $OPT_PSDK_VERSION ]] || [[ -z $OPT_PSDK_DEVEL_RELEASE ]]; then
	fail "incorrect version or release"
fi

if [[ "$OPT_TARGET" != "i486" ]] && [[ "$OPT_TARGET" != "armv7hl" ]] && [[ "$OPT_TARGET" != "aarch64" ]]; then
	fail "incorrect target"
fi

PROJECT_NAME=$OPT_PROJECT_NAME
PSDK_VERSION=$OPT_PSDK_VERSION
PSDK_DEVEL_RELEASE=$OPT_PSDK_DEVEL_RELEASE

PROJECT_DIR="./$PROJECT_NAME"
CI_BUILD_DIR=$PWD

cd $PROJECT_DIR

PSDK_FULL_VERSION=$PSDK_VERSION.$PSDK_DEVEL_RELEASE
PSDK_TARGET=AuroraOS-$PSDK_FULL_VERSION

TARGET=$PSDK_TARGET-$OPT_TARGET

# Build project
echo "Build $PROJECT_NAME project for $TARGET"
mb2 --target $TARGET build

# Copy build artifacts
mkdir -p $CI_BUILD_DIR/artifacts
cp RPMS/* $CI_BUILD_DIR/artifacts/

Настройка CI/CD шаблона

В разделе CI/CD нажать кнопку Use Template и вместо шаблона добавить следующий скрипт:

stages:
- build

build-job:
stage: build
tags: 
	- aurora_psdk_runner
artifacts:
	paths:
	- ./artifacts/*.rpm
script:
	- /home/gitlab-runner/AuroraPlatformSDK/sdks/aurora_psdk/sdk-chroot ./build.sh -n $PROJECT -v $VERSION -r $RELEASE -t $BUILD_TARGET

Здесь нужно еще раз убедиться, что в списке tags указаны теги, которые были прописаны в ходе регистрации runner в Регистрация runner с помощью токена.

Также следует убедиться, что корректно указан путь к скрипту запуска Platform SDK (см. Установка Platform SDK).

Проверка сборки проекта в Gitlab

Проверить сборку проекта. Для этого в GitLab перейти в раздел CI/CD, нажать кнопку Run pipeline. Далее необходимо указать переменные, которые будут подаваться на вход скрипту build.sh:

  • PROJECT — название собираемого проекта (MyApp, см. Создание проекта в Application SDK и загрузка в Gitlab);
  • VERSION — основная версия Platform SDK (например, 4.0.2);
  • RELEASE — номер билда Platform SDK (например, 159);
  • BUILD_TARGET — имя архитектуры таргета (например, armv7hl).

Чтобы не вводить каждый раз эти переменные при запуске сборки, их можно добавить в переменные GitLab:

Gitlab variables

Запуск Pipeline

Нажать кнопку Run pipeline.

Пример успешной сборки на скриншоте:

Pipeline

Артефакт сборки (собранный в Platform SDK rpm-пакет приложения MyApp) будет доступен для скачивания по ссылке Download в разделе Job artifacts:

Job artifacts

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.