Skip to content
Snippets Groups Projects
Commit e04dc453 authored by Felix Gerking's avatar Felix Gerking Committed by Clemens Terasa
Browse files

CI: Add gitlab-ci for reproducible builds

BCS 746-000016
parent dd23afe7
No related branches found
No related tags found
No related merge requests found
......@@ -96,6 +96,9 @@ modules.order
!.gitattributes
!.gitignore
!.mailmap
!.gitlab-ci
!.gitlab-ci.yml
!.gitmodules
#
# Generated include files
......
Subproject commit 610e4a46b18fd050a0cbf030a9a83ae01e764b22
# ---------------------------------------------------------------------------------------
# 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}
[submodule ".gitlab-ci"]
path = .gitlab-ci
url = ../../yocto/infrastructure/gitlab-ci.git
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