4 files + 98 − 103 Inline Compare changes Side-by-side Inline Show whitespace changes Files 4 build-pipeline-ci-test.yml +1 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ include: - project: '${CI_PROJECT_ROOT_NAMESPACE}/yocto/infrastructure/gitlab-ci' ref: ${GITLAB_CI_REVISION} file: - build-common.yml - build-pipeline.yml - common.yml stages: Loading build-pipeline-yocto.yml.jinja2 +1 −2 Original line number Diff line number Diff line Loading @@ -8,8 +8,7 @@ include: - project: '{{ CI_PROJECT_ROOT_NAMESPACE }}/yocto/infrastructure/gitlab-ci' ref: {{ GITLAB_CI_REVISION }} file: - build-common.yml - build-yocto.yml - build-pipeline.yml - common.yml stages: Loading build-common.yml→build-pipeline.yml +96 −3 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ workflow: # -------------------------------------------------------------------------------------- # Scripts # -------------------------------------------------------------------------------------- .docker_check: .docker_check: &docker_check # 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. - |- Loading @@ -21,7 +21,7 @@ workflow: exit 1 fi .setup_ssh: .setup_ssh: &setup_ssh # Setup ssh key to access private repos # 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 Loading @@ -45,7 +45,7 @@ workflow: # Write SSH configuration from variable to config file - echo "$SSH_CONFIG" > ~/.ssh/config .repo_checkout: .repo_checkout: &repo_checkout - echo "${LOGPREFIX} Perform repo checkout" - cd ${CI_PROJECT_DIR} - repo init --submodules -u ${CI_REPOSITORY_URL} Loading @@ -53,6 +53,74 @@ workflow: - repo sync --detach --current-branch --force-remove-dirty --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 # -------------------------------------------------------------------------------------- Loading Loading @@ -137,6 +205,31 @@ workflow: - key: ${CI_JOB_NAME}-${BUILD_ARTIFACTS} 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 # -------------------------------------------------------------------------------------- Loading build-yocto.ymldeleted 100644 → 0 +0 −97 Original line number Diff line number Diff line --- # -------------------------------------------------------------------------------------- # 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
build-pipeline-ci-test.yml +1 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ include: - project: '${CI_PROJECT_ROOT_NAMESPACE}/yocto/infrastructure/gitlab-ci' ref: ${GITLAB_CI_REVISION} file: - build-common.yml - build-pipeline.yml - common.yml stages: Loading
build-pipeline-yocto.yml.jinja2 +1 −2 Original line number Diff line number Diff line Loading @@ -8,8 +8,7 @@ include: - project: '{{ CI_PROJECT_ROOT_NAMESPACE }}/yocto/infrastructure/gitlab-ci' ref: {{ GITLAB_CI_REVISION }} file: - build-common.yml - build-yocto.yml - build-pipeline.yml - common.yml stages: Loading
build-common.yml→build-pipeline.yml +96 −3 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ workflow: # -------------------------------------------------------------------------------------- # Scripts # -------------------------------------------------------------------------------------- .docker_check: .docker_check: &docker_check # 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. - |- Loading @@ -21,7 +21,7 @@ workflow: exit 1 fi .setup_ssh: .setup_ssh: &setup_ssh # Setup ssh key to access private repos # 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 Loading @@ -45,7 +45,7 @@ workflow: # Write SSH configuration from variable to config file - echo "$SSH_CONFIG" > ~/.ssh/config .repo_checkout: .repo_checkout: &repo_checkout - echo "${LOGPREFIX} Perform repo checkout" - cd ${CI_PROJECT_DIR} - repo init --submodules -u ${CI_REPOSITORY_URL} Loading @@ -53,6 +53,74 @@ workflow: - repo sync --detach --current-branch --force-remove-dirty --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 # -------------------------------------------------------------------------------------- Loading Loading @@ -137,6 +205,31 @@ workflow: - key: ${CI_JOB_NAME}-${BUILD_ARTIFACTS} 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 # -------------------------------------------------------------------------------------- Loading
build-yocto.ymldeleted 100644 → 0 +0 −97 Original line number Diff line number Diff line --- # -------------------------------------------------------------------------------------- # 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