[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN PATCH 3/3] CI: New stage "containers" to rebuild some containers
On Fri, 15 Nov 2024, Anthony PERARD wrote: > 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. This is a fantastic contribution, thanks Anthony! I think we can simplify this patch by removing all stages except for "containers" on the scheduled pipeline with XEN_CI_REBUILD_CONTAINERS set to true. I think it is a good idea to have a special schedule pipeline for this, and we should exploit the fact that it is special and only use it to rebuild the containers. If we want to, we can have a second scheduled pipeline to do a full normal run afterwards. This way, there is no need to carry the changes to build.yaml or test.yaml that are a bit hard to read/understand for someone unfamiliar with gitlab. When XEN_CI_REBUILD_CONTAINERS == true we only do the containers stage. > 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 |