Skip to content
Snippets Groups Projects
Commit 922f49f8 authored by Tim Jaacks's avatar Tim Jaacks
Browse files

Add yocto version job

This adds a machine-independent job "build-version" which populates the
RELEASE_VERSION and RELEASE_NAME variables, so that following jobs can
use these without depending on the various build jobs.
The variables can be set from the trigger job in a project's
`.gitlab-ci.yml` file. They are eval'ed before saving them to
version.env, so we can use deferred variable expansion or even command
execution to construct their values. This mechanism is already used for
the Flash-N-Go System variables.
parent 073ae81e
No related branches found
No related tags found
1 merge request!329Add yocto version job
...@@ -33,6 +33,12 @@ variables: ...@@ -33,6 +33,12 @@ variables:
changelog: changelog:
extends: .changelog extends: .changelog
build-version:
extends: .build_version
variables:
# We have to set a machine, even if it is not actually needed for what the job does,
# so we just choose the first.
MACHINE: {{ MACHINES.split(' ')[0] }}
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
# Generated jobs # Generated jobs
......
...@@ -96,22 +96,23 @@ workflow: ...@@ -96,22 +96,23 @@ workflow:
fi fi
fi fi
.build_script: &build_script .setup_build: &setup_build
# setup build environment
- echo "Build configuration MACHINE=${MACHINE} - echo "Build configuration MACHINE=${MACHINE}
DISTRO=${YOCTO_DISTRO} IMAGE=${YOCTO_IMAGE}" DISTRO=${YOCTO_DISTRO} IMAGE=${YOCTO_IMAGE}"
- echo "Using build dir ${BUILD_PATH}" - echo "Using build dir ${BUILD_PATH}"
- export MACHINE="${MACHINE}" - export MACHINE="${MACHINE}"
- export DISTRO="${YOCTO_DISTRO}" - export DISTRO="${YOCTO_DISTRO}"
- export EULA="1" - export EULA="1"
- source ./"${SETUP_SCRIPT}" "${BUILD_PATH}" - source "${SETUP_SCRIPT}" "${BUILD_PATH}"
# start build
.run_build: &run_build
- echo -e "section_start:`date +%s`:bitbake_run\r\e[0KBitbake Log" - echo -e "section_start:`date +%s`:bitbake_run\r\e[0KBitbake Log"
- echo "bitbake ${YOCTO_IMAGE} -c ${BITBAKE_TASK}" - echo "bitbake ${YOCTO_IMAGE} -c ${BITBAKE_TASK}"
- bitbake "${YOCTO_IMAGE}" -c "${BITBAKE_TASK}" - bitbake "${YOCTO_IMAGE}" -c "${BITBAKE_TASK}"
- echo -e "section_end:`date +%s`:bitbake_run\r\e[0K" - echo -e "section_end:`date +%s`:bitbake_run\r\e[0K"
.save_build_env: &save_build_env .save_build_env: &save_build_env
- cd ${CI_PROJECT_DIR}
# Artifact paths are needed for packaging # Artifact paths are needed for packaging
- echo "IMAGE_PATH=${IMAGE_PATH}" > build.env - echo "IMAGE_PATH=${IMAGE_PATH}" > build.env
- echo "SDK_PATH=${SDK_PATH}" >> build.env - echo "SDK_PATH=${SDK_PATH}" >> build.env
...@@ -140,6 +141,40 @@ workflow: ...@@ -140,6 +141,40 @@ workflow:
paths: paths:
- "changelog.md" - "changelog.md"
.build_version:
extends:
- .build_yocto
stage: Infrastructure
tags:
- infrastructure
needs: []
rules:
- when: always
variables:
BITBAKE_ENV_COMMAND: bitbake ${YOCTO_IMAGE} -e
# RELEASE_VERSION and RELEASE_NAME are eval'ed before saving them to version.env,
# so we can use deferred variable expansion or even command execution to construct
# their values.
RELEASE_VERSION: $${DISTRO_VERSION}
RELEASE_NAME: Yocto-${RELEASE_VERSION}
script:
# Extract all variable assignments from the BitBake environment and source them.
# The rather complicated regex also regards values containing escaped quotes.
- source <( ${BITBAKE_ENV_COMMAND} | egrep '^[A-Z]\w*="([^\\"]+|\\.)*"$' )
- echo ${RELEASE_VERSION}
- echo ${RELEASE_NAME}
- RELEASE_VERSION=$(eval echo "${RELEASE_VERSION}")
- RELEASE_NAME=$(eval echo "${RELEASE_NAME}")
- echo "RELEASE_VERSION=${RELEASE_VERSION}" >> ${CI_PROJECT_DIR}/version.env
- echo "RELEASE_NAME=${RELEASE_NAME}" >> ${CI_PROJECT_DIR}/version.env
- cat ${CI_PROJECT_DIR}/version.env
artifacts:
expire_in: 1 week
reports:
dotenv: version.env
paths: []
cache: []
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
# Stage: build # Stage: build
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
...@@ -220,10 +255,11 @@ workflow: ...@@ -220,10 +255,11 @@ workflow:
- *docker_check - *docker_check
- *setup_ssh - *setup_ssh
- *repo_checkout - *repo_checkout
- *setup_build
script: script:
- *save_build_env - *run_build
- *build_script
- *collect_srcrevs - *collect_srcrevs
- *save_build_env
- *dump_install_command - *dump_install_command
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
......
...@@ -72,7 +72,9 @@ yocto-simulation-pipeline: ...@@ -72,7 +72,9 @@ yocto-simulation-pipeline:
https://git.seco.com/seco-ne/yocto/manifest/-/jobs/artifacts/kirkstone/7.0/download?job=build https://git.seco.com/seco-ne/yocto/manifest/-/jobs/artifacts/kirkstone/7.0/download?job=build
YOCTO_IMAGE: seconorth-image YOCTO_IMAGE: seconorth-image
YOCTO_DISTRO: seconorth-wayland YOCTO_DISTRO: seconorth-wayland
SETUP_SCRIPT: /dev/null
INSTALL_SCRIPT: fng-install.sh INSTALL_SCRIPT: fng-install.sh
BITBAKE_ENV_COMMAND: echo DISTRO_VERSION="kirkstone-7.0"
ARTIFACTS_PATH: build-*/tmp/deploy/images/**/* ARTIFACTS_PATH: build-*/tmp/deploy/images/**/*
PACKAGE_TYPE: image PACKAGE_TYPE: image
TEST_STAGE: "true" TEST_STAGE: "true"
...@@ -92,7 +94,9 @@ sdk-simulation-pipeline: ...@@ -92,7 +94,9 @@ sdk-simulation-pipeline:
https://git.seco.com/seco-ne/yocto/manifest/-/jobs/artifacts/kirkstone/7.0/download?job=buildsdk https://git.seco.com/seco-ne/yocto/manifest/-/jobs/artifacts/kirkstone/7.0/download?job=buildsdk
YOCTO_IMAGE: seconorth-image YOCTO_IMAGE: seconorth-image
YOCTO_DISTRO: seconorth-wayland YOCTO_DISTRO: seconorth-wayland
SETUP_SCRIPT: /dev/null
INSTALL_SCRIPT: fng-install.sh INSTALL_SCRIPT: fng-install.sh
BITBAKE_ENV_COMMAND: echo DISTRO_VERSION="kirkstone-7.0"
ARTIFACTS_PATH: build-*/tmp/deploy/sdk/* ARTIFACTS_PATH: build-*/tmp/deploy/sdk/*
MANUAL_BUILD: "true" MANUAL_BUILD: "true"
PACKAGE_TYPE: sdk PACKAGE_TYPE: sdk
...@@ -96,6 +96,15 @@ fngsystem-pipeline: ...@@ -96,6 +96,15 @@ fngsystem-pipeline:
YOCTO_IMAGE: fngsystem-image YOCTO_IMAGE: fngsystem-image
YOCTO_DISTRO: guf-fngsystem YOCTO_DISTRO: guf-fngsystem
INSTALL_SCRIPT: fngsystem-self-update.sh INSTALL_SCRIPT: fngsystem-self-update.sh
# FIXME: For now we need a two-step variable assignment here due to a GitLab bug:
# https://gitlab.com/gitlab-org/gitlab/-/issues/273409
# Escaped variables are not correctly passed to child pipelines. Proposed workaround
# is to use raw variables, but we need at least GitLab 15.6 for that. As soon as we
# update our GitLab, we can get rid of the DEFERRED_RELEASE_VERSION variable and
# assign its value to RELEASE_VERSION directly.
DEFERRED_RELEASE_VERSION: $$(echo $$DISTRO_VERSION | sed "s/fngsystem-//")
RELEASE_VERSION: $DEFERRED_RELEASE_VERSION
RELEASE_NAME: FNGSystem-${DEFERRED_RELEASE_VERSION}
ARTIFACTS_PATH: build-*/tmp/deploy/images/**/* ARTIFACTS_PATH: build-*/tmp/deploy/images/**/*
PACKAGE_TYPE: image PACKAGE_TYPE: image
ALPHAPLAN_STAGE: "true" ALPHAPLAN_STAGE: "true"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment