# --------------------------------------------------------------------------------------- # Global # --------------------------------------------------------------------------------------- image: "${CI_IMAGES}/python/3.9:99e363bc5feaa27ff18dbe7731a76ff04d7d0deb" stages: - integrate - merge - build - check variables: # CI_IMAGES_BASEPATH: Environment variable configure in gitlab CI_IMAGES: ${CI_IMAGES_BASEPATH}/ci-images # Include git submodules GIT_SUBMODULE_STRATEGY: recursive # FIXME: due to a missing feature in GitLab we cannot use this variable # in the build stage further down this file. If it ever changes, it has # to be changed there too. # (https://gitlab.com/gitlab-org/gitlab/-/issues/249583) MANIFEST_PROJECT: ${CI_PROJECT_ROOT_NAMESPACE}/yocto/manifest MASTER_BRANCH_MANIFEST: dunfell MASTER_BRANCH_PROJECT: linux-5.10.57-guf # We add the recipe name here to resolve the corresponding bitbake recipe. # Otherwise a very strict repository <-> recipe naming would be required. # The recipe name is used to modify the correct source version. BB_RECIPE_NAME: linux-guf # Reduced depth for kernel GIT_DEPTH: 10 workflow: rules: # Do not run pipelines on forked projects - if: $CI_PROJECT_PATH == "SECO-Northern-Europe/kernel/linux-guf" && $CI_MERGE_REQUEST_SOURCE_PROJECT_ID == $CI_MERGE_REQUEST_PROJECT_ID # --------------------------------------------------------------------------------------- # Stage: integrate # --------------------------------------------------------------------------------------- integrate: stage: integrate rules: # We have to make sure that the pipeline runs for the current manifest # master at the time a merge request is created. Otherwise we cannot # guarantee a green master after merging. - if: $CI_MERGE_REQUEST_IID tags: - infrastructure timeout: 5m cache: policy: push script: - cd ${CI_PROJECT_DIR} - .gitlab-ci/integrate_into_manifest.py --gitlab-url=${CI_SERVER_URL} --token=${GITBOT_TOKEN} --manifest-project=${MANIFEST_PROJECT} --integration-base=${MASTER_BRANCH_MANIFEST} --project=${CI_PROJECT_PATH} --merge-request=${CI_MERGE_REQUEST_IID} --save-revision-to=manifest_revision --recipe-name=${BB_RECIPE_NAME} artifacts: paths: - manifest_revision # --------------------------------------------------------------------------------------- # Stage: merge # --------------------------------------------------------------------------------------- merge: stage: merge rules: - if: $CI_COMMIT_BRANCH == $MASTER_BRANCH_PROJECT tags: - infrastructure timeout: 5m script: - cd ${CI_PROJECT_DIR} - .gitlab-ci/merge_into_manifest.py --gitlab-url=${CI_SERVER_URL} --token=${GITBOT_TOKEN} --manifest-project=${MANIFEST_PROJECT} --master-branch=${MASTER_BRANCH_MANIFEST} --project=${CI_PROJECT_PATH} --master-branch-project=${MASTER_BRANCH_PROJECT} --commit=${CI_COMMIT_SHA} --save-revision-to=manifest_revision --recipe-name=${BB_RECIPE_NAME} artifacts: paths: - manifest_revision # --------------------------------------------------------------------------------------- # Stage: build # --------------------------------------------------------------------------------------- build: stage: build rules: - if: $CI_MERGE_REQUEST_IID trigger: project: SECO-Northern-Europe/yocto/manifest branch: "integrate/${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}" strategy: depend # --------------------------------------------------------------------------------------- # Stage: check # --------------------------------------------------------------------------------------- check: stage: check rules: - if: $CI_MERGE_REQUEST_IID needs: ["integrate"] tags: - infrastructure timeout: 5m script: - cd ${CI_PROJECT_DIR} - .gitlab-ci/check_if_integration_branch_is_up_to_date.py --gitlab-url=${CI_SERVER_URL} --token=${GITBOT_TOKEN} --manifest-project=${MANIFEST_PROJECT} --integration-base=${MASTER_BRANCH_MANIFEST} --project=${CI_PROJECT_PATH} --merge-request=${CI_MERGE_REQUEST_IID}