Интеграция Platform SDK в CI/CD GitLab
Процесс интеграции Platform SDK в CI/CD GitLab на примере сборки проекта, созданного в мастере Application SDK, содержит следующие шаги:
- Создание нового проекта.
- Создание проекта в Application SDK и загрузка в Gitlab.
- Активация режима CI/CD.
- Настройка токена.
- Создание и настройка пользователя runner.
- Создание и настройка службы gitlab-runner.
- Регистрация runner с помощью токена.
- Установка Platform SDK.
- Добавление в Gitlab скрипта для сборки.
- Настройка CI/CD шаблона.
- Проверка сборки проекта в Gitlab.
- Запуск 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
.
После успешной регистрации можно обновить страницу Settings → CI/CD → Runners.
В разделе 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:
Запуск Pipeline
Нажать кнопку Run pipeline.
Пример успешной сборки на скриншоте:
Артефакт сборки (собранный в Platform SDK rpm-пакет приложения MyApp) будет доступен для скачивания по ссылке Download в разделе Job artifacts: