[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [XEN PATCH 3/3] CI: New stage "containers" to rebuild some containers
Rebuild rolling release containers when XEN_CI_REBUILD_CONTAINERS is set. This is to be use with a scheduled pipeline. When $XEN_CI_REBUILD_CONTAINERS is set, only build jobs related to the containers been rebuild will be executed. Build jobs that are using one of the containers been rebuild should wait for the container to be rebuild. If it's a normal pipeline, those dependency are simply ignored. Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> --- .gitlab-ci.yml | 2 + automation/gitlab-ci/build.yaml | 57 ++++++++++++++++++---------- automation/gitlab-ci/containers.yaml | 29 ++++++++++++++ automation/gitlab-ci/test.yaml | 13 +++++++ 4 files changed, 81 insertions(+), 20 deletions(-) create mode 100644 automation/gitlab-ci/containers.yaml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 941e5822e8..dab9171086 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,11 +8,13 @@ workflow: - when: always stages: + - containers - analyze - build - test include: + - 'automation/gitlab-ci/containers.yaml' - 'automation/gitlab-ci/analyze.yaml' - 'automation/gitlab-ci/build.yaml' - 'automation/gitlab-ci/test.yaml' diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml index 1ca6764225..e01eec1423 100644 --- a/automation/gitlab-ci/build.yaml +++ b/automation/gitlab-ci/build.yaml @@ -3,6 +3,9 @@ image: ${XEN_REGISTRY}/${CONTAINER} script: - ./automation/scripts/build 2>&1 | tee build.log + rules: + - if: $XEN_CI_REBUILD_CONTAINERS && $XEN_CI_RUN_AFTER_CONTAINER_BUILD + - if: $XEN_CI_REBUILD_CONTAINERS == null artifacts: paths: - binaries/ @@ -255,6 +258,8 @@ .test-jobs-artifact-common: stage: build needs: [] + rules: + - if: $XEN_CI_REBUILD_CONTAINERS == null # Arm test artifacts @@ -516,17 +521,24 @@ alpine-3.18-clang-debug: variables: CONTAINER: alpine:3.18 -archlinux-gcc: - extends: .gcc-x86-64-build +.container-archlinux-current: variables: CONTAINER: archlinux:current + XEN_CI_RUN_AFTER_CONTAINER_BUILD: true + needs: + - job: container-archlinux-current + optional: true allow_failure: true +archlinux-gcc: + extends: + - .gcc-x86-64-build + - .container-archlinux-current + archlinux-gcc-debug: - extends: .gcc-x86-64-build-debug - variables: - CONTAINER: archlinux:current - allow_failure: true + extends: + - .gcc-x86-64-build-debug + - .container-archlinux-current centos-7-gcc: extends: .gcc-x86-64-build @@ -657,29 +669,34 @@ opensuse-leap-15.6-gcc-debug: variables: CONTAINER: opensuse:leap-15.6-x86_64 -opensuse-tumbleweed-clang: - extends: .clang-x86-64-build +.container-opensuse-tumbleweed-x86_64: variables: CONTAINER: opensuse:tumbleweed-x86_64 + XEN_CI_RUN_AFTER_CONTAINER_BUILD: true + needs: + - job: container-opensuse-tumbleweed-x86_64 + optional: true allow_failure: true +opensuse-tumbleweed-clang: + extends: + - .clang-x86-64-build + - .container-opensuse-tumbleweed-x86_64 + opensuse-tumbleweed-clang-debug: - extends: .clang-x86-64-build-debug - variables: - CONTAINER: opensuse:tumbleweed-x86_64 - allow_failure: true + extends: + - .clang-x86-64-build-debug + - .container-opensuse-tumbleweed-x86_64 opensuse-tumbleweed-gcc: - extends: .gcc-x86-64-build - variables: - CONTAINER: opensuse:tumbleweed-x86_64 - allow_failure: true + extends: + - .gcc-x86-64-build + - .container-opensuse-tumbleweed-x86_64 opensuse-tumbleweed-gcc-debug: - extends: .gcc-x86-64-build-debug - variables: - CONTAINER: opensuse:tumbleweed-x86_64 - allow_failure: true + extends: + - .gcc-x86-64-build-debug + - .container-opensuse-tumbleweed-x86_64 # PowerPC builds (x86 cross) debian-11-ppc64le-gcc: diff --git a/automation/gitlab-ci/containers.yaml b/automation/gitlab-ci/containers.yaml new file mode 100644 index 0000000000..25e8bdc34b --- /dev/null +++ b/automation/gitlab-ci/containers.yaml @@ -0,0 +1,29 @@ +.container-build-tmpl: + stage: containers + image: docker:stable + tags: + - container-builder + rules: + - if: $XEN_CI_REBUILD_CONTAINERS + services: + - docker:dind + before_script: + - apk add make + - docker info + - docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY + script: + - make -C automation/build PUSH=1 REGISTRY=${XEN_REGISTRY} ${CONTAINER/:/\/} + after_script: + - docker logout + +container-archlinux-current: + extends: + - .container-build-tmpl + variables: + CONTAINER: "archlinux:current" + +container-opensuse-tumbleweed-x86_64: + extends: + - .container-build-tmpl + variables: + CONTAINER: "opensuse:tumbleweed-x86_64" diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml index 1822e3ea5f..e4d4f1f3c9 100644 --- a/automation/gitlab-ci/test.yaml +++ b/automation/gitlab-ci/test.yaml @@ -1,6 +1,16 @@ +.test-rules: + # Only add rules which prevent jobs from been added to the pipeline. They + # should all have "when: never". + pre_rules: + - if: $XEN_CI_REBUILD_CONTAINERS + when: never + .test-jobs-common: stage: test image: ${XEN_REGISTRY}/${CONTAINER} + rules: + - !reference [.test-rules, pre_rules] + - when: always .arm64-test-needs: &arm64-test-needs - alpine-3.18-arm64-rootfs-export @@ -99,6 +109,7 @@ - '*.dtb' when: always rules: + - !reference [.test-rules, pre_rules] - if: $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" tags: - xilinx @@ -117,6 +128,7 @@ - '*.log' when: always rules: + - !reference [.test-rules, pre_rules] - if: $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" tags: - xilinx @@ -136,6 +148,7 @@ - '*.log' when: always rules: + - !reference [.test-rules, pre_rules] - if: $QUBES_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" tags: - qubes-hw2 -- Anthony Perard | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |