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

Combine build-yocto.yml and and build-common.yml to build-pipeline.yml

parent e6808701
No related branches found
No related tags found
1 merge request!316Combine build-yocto.yml and and build-common.yml to build-pipeline.yml
Pipeline #76567 passed with stage
in 19 minutes and 36 seconds
...@@ -6,7 +6,7 @@ include: ...@@ -6,7 +6,7 @@ include:
- project: '${CI_PROJECT_ROOT_NAMESPACE}/yocto/infrastructure/gitlab-ci' - project: '${CI_PROJECT_ROOT_NAMESPACE}/yocto/infrastructure/gitlab-ci'
ref: ${GITLAB_CI_REVISION} ref: ${GITLAB_CI_REVISION}
file: file:
- build-common.yml - build-pipeline.yml
- common.yml - common.yml
stages: stages:
......
...@@ -8,8 +8,7 @@ include: ...@@ -8,8 +8,7 @@ include:
- project: '{{ CI_PROJECT_ROOT_NAMESPACE }}/yocto/infrastructure/gitlab-ci' - project: '{{ CI_PROJECT_ROOT_NAMESPACE }}/yocto/infrastructure/gitlab-ci'
ref: {{ GITLAB_CI_REVISION }} ref: {{ GITLAB_CI_REVISION }}
file: file:
- build-common.yml - build-pipeline.yml
- build-yocto.yml
- common.yml - common.yml
stages: stages:
......
...@@ -8,7 +8,7 @@ workflow: ...@@ -8,7 +8,7 @@ workflow:
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
# Scripts # Scripts
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
.docker_check: .docker_check: &docker_check
# Check if the build folder is empty. Sometimes the docker volume for the build is not # Check if the build folder is empty. Sometimes the docker volume for the build is not
# removed afterwards (e.g. in case of a timeout), then a follow-up build might fail. # removed afterwards (e.g. in case of a timeout), then a follow-up build might fail.
- |- - |-
...@@ -21,7 +21,7 @@ workflow: ...@@ -21,7 +21,7 @@ workflow:
exit 1 exit 1
fi fi
.setup_ssh: .setup_ssh: &setup_ssh
# Setup ssh key to access private repos # Setup ssh key to access private repos
# https://docs.gitlab.com/ee/ci/ssh_keys/#ssh-keys-when-using-the-docker-executor # https://docs.gitlab.com/ee/ci/ssh_keys/#ssh-keys-when-using-the-docker-executor
# An SSH keypair has been generated for the manifest's pipeline to be able to access # An SSH keypair has been generated for the manifest's pipeline to be able to access
...@@ -45,7 +45,7 @@ workflow: ...@@ -45,7 +45,7 @@ workflow:
# Write SSH configuration from variable to config file # Write SSH configuration from variable to config file
- echo "$SSH_CONFIG" > ~/.ssh/config - echo "$SSH_CONFIG" > ~/.ssh/config
.repo_checkout: .repo_checkout: &repo_checkout
- echo "${LOGPREFIX} Perform repo checkout" - echo "${LOGPREFIX} Perform repo checkout"
- cd ${CI_PROJECT_DIR} - cd ${CI_PROJECT_DIR}
- repo init --submodules -u ${CI_REPOSITORY_URL} - repo init --submodules -u ${CI_REPOSITORY_URL}
...@@ -53,6 +53,74 @@ workflow: ...@@ -53,6 +53,74 @@ workflow:
- repo sync --detach --current-branch --force-remove-dirty - repo sync --detach --current-branch --force-remove-dirty
--optimized-fetch --force-sync --optimized-fetch --force-sync
.collect_srcrevs: &collect_srcrevs
# write all package AUTOREVS to file
- |-
SRCREVS_FILE="${CI_PROJECT_DIR}/${BUILDPATH}/${IMAGEPATH}/BUILD_SRCREVS.log"
if [ -d "$( dirname "${SRCREVS_FILE}" )" ];then
buildhistory-collect-srcrevs > ${SRCREVS_FILE}
echo "${LOGPREFIX} buildhistory-collect-srcrevs:"
cat ${SRCREVS_FILE}
fi
.dump_install_command: &dump_install_command
# print install instructions
- |-
if [[ ! -z "${INSTALLSCRIPT}" ]]; then
SCRIPT="${CI_PROJECT_DIR}/${BUILDPATH}/${IMAGEPATH}/${INSTALLSCRIPT}"
if [ ! -f "${SCRIPT}" ]; then
echo "Install script missing, searched for '$SCRIPT'"
exit 1
fi
if [ "$CI_PROJECT_VISIBILITY" = "public" ];then
cat <<-EOF
==============================
Install the image:
FNG="$FNG_INSTALL_URL"
curl --location "\$FNG" | sh -s -- --url="\$(dirname "\$FNG")"
==============================
EOF
else
cat <<-EOF
==============================
Install the image:
export GITLAB_TOKEN=<your_access_token>
FNG="$FNG_INSTALL_URL"
curl --location --header "PRIVATE-TOKEN: \$GITLAB_TOKEN" "\$FNG" \
| sh -s -- --url="\$(dirname "\$FNG")"
==============================
EOF
fi
fi
.build_script: &build_script
# setup build environment
- echo "${LOGPREFIX} Build configuration MACHINE=${CI_PARAM_MACHINE}
DISTRO=${CI_PARAM_DISTRO} IMAGE=${CI_PARAM_IMAGE}"
- source build.env
- echo "${LOGPREFIX} Using build dir ${BUILDPATH}"
- export MACHINE="${CI_PARAM_MACHINE}"
- export DISTRO="${CI_PARAM_DISTRO}"
- export EULA="1"
- source ./"${SETUPSCRIPT}" "${BUILDPATH}"
# start build
- echo -e "section_start:`date +%s`:bitbake_run\r\e[0KBitbake Log"
- echo "${LOGPREFIX} bitbake ${CI_PARAM_IMAGE} -c ${BITBAKE_TASK}"
- bitbake "${CI_PARAM_IMAGE}" -c "${BITBAKE_TASK}"
- echo -e "section_end:`date +%s`:bitbake_run\r\e[0K"
.save_build_env: &save_build_env
- echo "BUILD_MACHINE=$CI_PARAM_MACHINE" > build.env
- echo "BUILD_IMAGE=$CI_PARAM_IMAGE" >> build.env
- echo "BUILD_DISTRO=$CI_PARAM_DISTRO" >> build.env
- echo "BUILD_PATH_IMAGE=${BUILDPATH}/${IMAGEPATH}" >> build.env
- echo "BUILD_PATH_SDK=${BUILDPATH}/${SDKPATH}" >> build.env
- echo "BUILD_PATH_LICENSE=${BUILDPATH}/${LICENSESPATH}" >> build.env
- echo "FNG_INSTALL_URL=${JOB_URL}${FNG_INSTALL_PATH}" >> build.env
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
# Stage: Infrastructure # Stage: Infrastructure
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
...@@ -137,6 +205,31 @@ workflow: ...@@ -137,6 +205,31 @@ workflow:
- key: ${CI_JOB_NAME}-${BUILD_ARTIFACTS} - key: ${CI_JOB_NAME}-${BUILD_ARTIFACTS}
paths: *artifacts_paths paths: *artifacts_paths
.build_yocto:
extends:
- .buildbase
needs: []
variables:
GIT_STRATEGY: none
SETUPSCRIPT: "setup-environment"
LOGPREFIX: "CI:build:"
BUILDPATH: "build-${CI_PARAM_DISTRO}-${CI_PARAM_MACHINE}"
IMAGEBASEPATH: "tmp/deploy/images/"
IMAGEPATH: "${IMAGEBASEPATH}/${CI_PARAM_MACHINE}"
LICENSESPATH: "tmp/deploy/licenses"
SDKPATH: "tmp/deploy/sdk/"
JOB_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/${CI_JOB_ID}/artifacts/"
FNG_INSTALL_PATH: "${BUILDPATH}/${IMAGEPATH}/${INSTALLSCRIPT}"
before_script:
- *docker_check
- *setup_ssh
- *repo_checkout
script:
- *save_build_env
- *build_script
- *collect_srcrevs
- *dump_install_command
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
# Stage: test # Stage: test
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
......
---
# --------------------------------------------------------------------------------------
# Stage: Build
# --------------------------------------------------------------------------------------
.collect_srcrevs: &collect_srcrevs
# write all package AUTOREVS to file
- |-
SRCREVS_FILE="${CI_PROJECT_DIR}/${BUILDPATH}/${IMAGEPATH}/BUILD_SRCREVS.log"
if [ -d "$( dirname "${SRCREVS_FILE}" )" ];then
buildhistory-collect-srcrevs > ${SRCREVS_FILE}
echo "${LOGPREFIX} buildhistory-collect-srcrevs:"
cat ${SRCREVS_FILE}
fi
.dump_install_command: &dump_install_command
# print install instructions
- |-
if [[ ! -z "${INSTALLSCRIPT}" ]]; then
SCRIPT="${CI_PROJECT_DIR}/${BUILDPATH}/${IMAGEPATH}/${INSTALLSCRIPT}"
if [ ! -f "${SCRIPT}" ]; then
echo "Install script missing, searched for '$SCRIPT'"
exit 1
fi
if [ "$CI_PROJECT_VISIBILITY" = "public" ];then
cat <<-EOF
==============================
Install the image:
FNG="$FNG_INSTALL_URL"
curl --location "\$FNG" | sh -s -- --url="\$(dirname "\$FNG")"
==============================
EOF
else
cat <<-EOF
==============================
Install the image:
export GITLAB_TOKEN=<your_access_token>
FNG="$FNG_INSTALL_URL"
curl --location --header "PRIVATE-TOKEN: \$GITLAB_TOKEN" "\$FNG" \
| sh -s -- --url="\$(dirname "\$FNG")"
==============================
EOF
fi
fi
.build_script: &build_script
# setup build environment
- echo "${LOGPREFIX} Build configuration MACHINE=${CI_PARAM_MACHINE}
DISTRO=${CI_PARAM_DISTRO} IMAGE=${CI_PARAM_IMAGE}"
- source build.env
- echo "${LOGPREFIX} Using build dir ${BUILDPATH}"
- export MACHINE="${CI_PARAM_MACHINE}"
- export DISTRO="${CI_PARAM_DISTRO}"
- export EULA="1"
- source ./"${SETUPSCRIPT}" "${BUILDPATH}"
# start build
- echo -e "section_start:`date +%s`:bitbake_run\r\e[0KBitbake Log"
- echo "${LOGPREFIX} bitbake ${CI_PARAM_IMAGE} -c ${BITBAKE_TASK}"
- bitbake "${CI_PARAM_IMAGE}" -c "${BITBAKE_TASK}"
- echo -e "section_end:`date +%s`:bitbake_run\r\e[0K"
.save_build_env: &save_build_env
- echo "BUILD_MACHINE=$CI_PARAM_MACHINE" > build.env
- echo "BUILD_IMAGE=$CI_PARAM_IMAGE" >> build.env
- echo "BUILD_DISTRO=$CI_PARAM_DISTRO" >> build.env
- echo "BUILD_PATH_IMAGE=${BUILDPATH}/${IMAGEPATH}" >> build.env
- echo "BUILD_PATH_SDK=${BUILDPATH}/${SDKPATH}" >> build.env
- echo "BUILD_PATH_LICENSE=${BUILDPATH}/${LICENSESPATH}" >> build.env
- echo "FNG_INSTALL_URL=${JOB_URL}${FNG_INSTALL_PATH}" >> build.env
.build_yocto:
extends:
- .buildbase
needs: []
variables:
GIT_STRATEGY: none
SETUPSCRIPT: "setup-environment"
LOGPREFIX: "CI:build:"
BUILDPATH: "build-${CI_PARAM_DISTRO}-${CI_PARAM_MACHINE}"
IMAGEBASEPATH: "tmp/deploy/images/"
IMAGEPATH: "${IMAGEBASEPATH}/${CI_PARAM_MACHINE}"
LICENSESPATH: "tmp/deploy/licenses"
SDKPATH: "tmp/deploy/sdk/"
JOB_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/${CI_JOB_ID}/artifacts/"
FNG_INSTALL_PATH: "${BUILDPATH}/${IMAGEPATH}/${INSTALLSCRIPT}"
before_script:
- !reference [.docker_check]
- !reference [.setup_ssh]
- !reference [.repo_checkout]
script:
- *save_build_env
- *build_script
- *collect_srcrevs
- *dump_install_command
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