[PATCH] ci: Regenerate with latest 'lcitool' and fix manual job definitions

Peter Krempa posted 1 patch 3 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/d55dfac068a3fbe78a8e8a279b9baf61fda31465.1705660279.git.pkrempa@redhat.com
.gitlab-ci.yml                |  68 +---
ci/gitlab/build-templates.yml | 118 +++---
ci/gitlab/builds.yml          | 696 +++++++---------------------------
ci/integration-template.yml   |  30 +-
ci/integration.yml            | 147 ++-----
5 files changed, 253 insertions(+), 806 deletions(-)
[PATCH] ci: Regenerate with latest 'lcitool' and fix manual job definitions
Posted by Peter Krempa 3 months, 1 week ago
The latest lcitool merged the 'prebuilt-env' and 'local-env' jobs into
one which use variables to pick up the right environment and steps
rather than duplicating everything.

Regenerate the generated job definitions, fix the helper definitions
and also fix the manually defined jobs (website-job).

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
 .gitlab-ci.yml                |  68 +---
 ci/gitlab/build-templates.yml | 118 +++---
 ci/gitlab/builds.yml          | 696 +++++++---------------------------
 ci/integration-template.yml   |  30 +-
 ci/integration.yml            | 147 ++-----
 5 files changed, 253 insertions(+), 806 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8bad761b32..81433652ae 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -20,6 +20,7 @@ include:
   - '/ci/integration.yml'

 .native_build_job:
+  extends: .gitlab_native_build_job
   cache:
     paths:
       - ccache/
@@ -40,17 +41,8 @@ include:
         mv "$HOME"/rpmbuild/RPMS/x86_64/ libvirt-rpms/;
       fi

-.native_build_job_prebuilt_env:
-  extends:
-    - .native_build_job
-    - .gitlab_native_build_job_prebuilt_env
-
-.native_build_job_local_env:
-  extends:
-    - .native_build_job
-    - .gitlab_native_build_job_local_env
-
 .cross_build_job:
+  extends: .gitlab_cross_build_job
   cache:
     paths:
       - ccache/
@@ -68,21 +60,14 @@ include:
         fi;
       fi

-.cross_build_job_prebuilt_env:
-  extends:
-    - .cross_build_job
-    - .gitlab_cross_build_job_prebuilt_env
-
-.cross_build_job_local_env:
-  extends:
-    - .cross_build_job
-    - .gitlab_cross_build_job_local_env
-
-
 # This artifact published by this job is downloaded by libvirt.org to
 # be deployed to the web root:
 #    https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=website
-.website_job:
+website_job:
+  extends: .gitlab_native_build_job
+  needs:
+    - job: x86_64-almalinux-8-container
+      optional: true
   script:
     - source ci/jobs.sh
     - run_website_build
@@ -96,50 +81,21 @@ include:
     expire_in: 30 days
     paths:
       - website
-
-website_prebuilt_env:
-  extends:
-    - .website_job
-    - .gitlab_native_build_job_prebuilt_env
-  needs:
-    - job: x86_64-almalinux-8-container
-      optional: true
   variables:
     NAME: almalinux-8
-
-website_local_env:
-  extends:
-    - .website_job
-    - .gitlab_native_build_job_local_env
-  variables:
-    IMAGE: docker.io/library/almalinux:8
-    NAME: almalinux-8
-
+    TARGET_BASE_IMAGE: docker.io/library/almalinux:8

 .codestyle_job:
   stage: sanity_checks
-  script:
-    - source ci/jobs.sh
-    - run_codestyle
-
-codestyle_prebuilt_env:
-  extends:
-    - .codestyle_job
-    - .gitlab_native_build_job_prebuilt_env
   needs:
     - job: x86_64-opensuse-leap-15-container
       optional: true
+  script:
+    - source ci/jobs.sh
+    - run_codestyle
   variables:
     NAME: opensuse-leap-15
-
-codestyle_local_env:
-  extends:
-    - .codestyle_job
-    - .gitlab_native_build_job_local_env
-  variables:
-    IMAGE: registry.opensuse.org/opensuse/leap:15.4
-    NAME: opensuse-leap-15
-
+    TARGET_BASE_IMAGE: registry.opensuse.org/opensuse/leap:15.5

 # This artifact published by this job is downloaded to push to Weblate
 # for translation usage:
diff --git a/ci/gitlab/build-templates.yml b/ci/gitlab/build-templates.yml
index 1f533ec2dd..75d9a6f127 100644
--- a/ci/gitlab/build-templates.yml
+++ b/ci/gitlab/build-templates.yml
@@ -20,16 +20,25 @@
 #    include CI changes
 #  - Validating code committed to a fork branch
 #
-# Note: the rules across the prebuilt_env and local_env templates
+# Note: the rules across the prebuilt and local container scenarios
 # should be logical inverses, such that jobs are mutually exclusive
 #
-.gitlab_native_build_job_prebuilt_env:
-  image: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt/ci-$NAME:latest
+.gitlab_native_build_job:
+  image: $IMAGE
   stage: builds
   interruptible: true
   before_script:
+    - if test "$IMAGE" == "$TARGET_BASE_IMAGE" ;
+      then
+        source ci/buildenv/$NAME.sh ;
+        install_buildenv ;
+      fi
     - cat /packages.txt
+  variables:
+    IMAGE: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt/ci-$NAME:latest
   rules:
+    ### Rules where we expect to use pre-built container images
+
     # upstream: pushes to the default branch
     - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL'
       when: manual
@@ -63,49 +72,41 @@
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH'
       when: on_success

-    # upstream+forks: that's all folks
-    - when: never

-.gitlab_native_build_job_local_env:
-  image: $IMAGE
-  stage: builds
-  interruptible: true
-  before_script:
-    - source ci/buildenv/$NAME.sh
-    - install_buildenv
-    - cat /packages.txt
-  rules:
-    # upstream: pushes to a non-default branch
-    - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL'
-      when: manual
-      allow_failure: true
-    - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
-      when: on_success
-
-    # forks: avoid build in local env when job requests run in upstream containers
-    - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV'
-      when: never
+    ### Rules where we need to use the target base container image

     # forks: pushes to branches with pipeline requested
     - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE && $JOB_OPTIONAL'
       when: manual
       allow_failure: true
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
     - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE'
       when: on_success
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE

     # upstream: other web/api/scheduled pipelines targeting non-default branches
     - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL'
       when: manual
       allow_failure: true
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
     - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH'
       when: on_success
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE

     # forks: other web/api/scheduled pipelines
     - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $JOB_OPTIONAL'
       when: manual
       allow_failure: true
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
     - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/'
       when: on_success
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE

     # upstream+forks: merge requests targeting the default branch, with CI changes
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL'
@@ -114,18 +115,28 @@
         - ci/containers/$NAME.Dockerfile
       when: manual
       allow_failure: true
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH'
       changes:
         - ci/gitlab/container-templates.yml
         - ci/containers/$NAME.Dockerfile
       when: on_success
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE

     # upstream+forks: merge requests targeting non-default branches
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL'
       when: manual
       allow_failure: true
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH'
       when: on_success
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
+
+    ### Neither prebuilt or local container images

     # upstream+forks: that's all folks
     - when: never
@@ -146,16 +157,25 @@
 #    include CI changes
 #  - Validating code committed to a fork branch
 #
-# Note: the rules across the prebuilt_env and local_env templates
+# Note: the rules across the prebuilt and local container scenarios
 # should be logical inverses, such that jobs are mutually exclusive
 #
-.gitlab_cross_build_job_prebuilt_env:
-  image: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt/ci-$NAME-cross-$CROSS:latest
+.gitlab_cross_build_job:
+  image: $IMAGE
   stage: builds
   interruptible: true
   before_script:
+    - if test "$IMAGE" == "$TARGET_BASE_IMAGE" ;
+      then
+        source ci/buildenv/$NAME-cross-$CROSS.sh ;
+        install_buildenv ;
+      fi
     - cat /packages.txt
+  variables:
+    IMAGE: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt/ci-$NAME-cross-$CROSS:latest
   rules:
+    ### Rules where we expect to use pre-built container images
+
     # upstream: pushes to the default branch
     - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL'
       when: manual
@@ -189,49 +209,41 @@
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH'
       when: on_success

-    # upstream+forks: that's all folks
-    - when: never

-.gitlab_cross_build_job_local_env:
-  image: $IMAGE
-  stage: builds
-  interruptible: true
-  before_script:
-    - source ci/buildenv/$NAME-cross-$CROSS.sh
-    - install_buildenv
-    - cat /packages.txt
-  rules:
-    # upstream: pushes to a non-default branch
-    - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL'
-      when: manual
-      allow_failure: true
-    - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
-      when: on_success
-
-    # forks: avoid build in local env when job requests run in upstream containers
-    - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV'
-      when: never
+    ### Rules where we need to use the target base container image

     # forks: pushes to branches with pipeline requested
     - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE && $JOB_OPTIONAL'
       when: manual
       allow_failure: true
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
     - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE'
       when: on_success
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE

     # upstream: other web/api/scheduled pipelines targeting non-default branches
     - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL'
       when: manual
       allow_failure: true
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
     - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH'
       when: on_success
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE

     # forks: other web/api/scheduled pipelines
     - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $JOB_OPTIONAL'
       when: manual
       allow_failure: true
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
     - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/'
       when: on_success
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE

     # upstream+forks: merge requests targeting the default branch, with CI changes
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL'
@@ -240,18 +252,28 @@
         - ci/containers/$NAME-cross-$CROSS.Dockerfile
       when: manual
       allow_failure: true
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH'
       changes:
         - ci/gitlab/container-templates.yml
         - ci/containers/$NAME-cross-$CROSS.Dockerfile
       when: on_success
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE

     # upstream+forks: merge requests targeting non-default branches
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL'
       when: manual
       allow_failure: true
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH'
       when: on_success
+      variables:
+        IMAGE: $TARGET_BASE_IMAGE
+
+    ### Neither prebuilt or local container images

     # upstream+forks: that's all folks
     - when: never
diff --git a/ci/gitlab/builds.yml b/ci/gitlab/builds.yml
index 434e272e5a..49a0b27029 100644
--- a/ci/gitlab/builds.yml
+++ b/ci/gitlab/builds.yml
@@ -7,8 +7,8 @@

 # Native build jobs

-x86_64-almalinux-8-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-almalinux-8:
+  extends: .native_build_job
   needs:
     - job: x86_64-almalinux-8-container
       optional: true
@@ -17,20 +17,11 @@ x86_64-almalinux-8-prebuilt-env:
     JOB_OPTIONAL: 1
     NAME: almalinux-8
     RPM: skip
-
-x86_64-almalinux-8-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    IMAGE: docker.io/library/almalinux:8
-    JOB_OPTIONAL: 1
-    NAME: almalinux-8
-    RPM: skip
+    TARGET_BASE_IMAGE: docker.io/library/almalinux:8


-x86_64-almalinux-8-clang-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-almalinux-8-clang:
+  extends: .native_build_job
   needs:
     - job: x86_64-almalinux-8-container
       optional: true
@@ -39,108 +30,63 @@ x86_64-almalinux-8-clang-prebuilt-env:
     CC: clang
     NAME: almalinux-8
     RPM: skip
-
-x86_64-almalinux-8-clang-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CC: clang
-    IMAGE: docker.io/library/almalinux:8
-    NAME: almalinux-8
-    RPM: skip
+    TARGET_BASE_IMAGE: docker.io/library/almalinux:8


-x86_64-alpine-319-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-alpine-319:
+  extends: .native_build_job
   needs:
     - job: x86_64-alpine-319-container
       optional: true
   allow_failure: false
   variables:
     NAME: alpine-319
-
-x86_64-alpine-319-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    IMAGE: docker.io/library/alpine:3.19
-    NAME: alpine-319
+    TARGET_BASE_IMAGE: docker.io/library/alpine:3.19


-x86_64-alpine-edge-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-alpine-edge:
+  extends: .native_build_job
   needs:
     - job: x86_64-alpine-edge-container
       optional: true
   allow_failure: true
   variables:
     NAME: alpine-edge
-
-x86_64-alpine-edge-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: true
-  variables:
-    IMAGE: docker.io/library/alpine:edge
-    NAME: alpine-edge
+    TARGET_BASE_IMAGE: docker.io/library/alpine:edge


-x86_64-centos-stream-8-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-centos-stream-8:
+  extends: .native_build_job
   needs:
     - job: x86_64-centos-stream-8-container
       optional: true
   allow_failure: false
   variables:
     NAME: centos-stream-8
-  artifacts:
-    expire_in: 1 day
-    paths:
-      - libvirt-rpms
-
-x86_64-centos-stream-8-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    IMAGE: quay.io/centos/centos:stream8
-    NAME: centos-stream-8
+    TARGET_BASE_IMAGE: quay.io/centos/centos:stream8
   artifacts:
     expire_in: 1 day
     paths:
       - libvirt-rpms


-x86_64-centos-stream-9-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-centos-stream-9:
+  extends: .native_build_job
   needs:
     - job: x86_64-centos-stream-9-container
       optional: true
   allow_failure: false
   variables:
     NAME: centos-stream-9
-  artifacts:
-    expire_in: 1 day
-    paths:
-      - libvirt-rpms
-
-x86_64-centos-stream-9-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    IMAGE: quay.io/centos/centos:stream9
-    NAME: centos-stream-9
+    TARGET_BASE_IMAGE: quay.io/centos/centos:stream9
   artifacts:
     expire_in: 1 day
     paths:
       - libvirt-rpms


-x86_64-debian-11-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-debian-11:
+  extends: .native_build_job
   needs:
     - job: x86_64-debian-11-container
       optional: true
@@ -148,19 +94,11 @@ x86_64-debian-11-prebuilt-env:
   variables:
     JOB_OPTIONAL: 1
     NAME: debian-11
-
-x86_64-debian-11-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    IMAGE: docker.io/library/debian:11-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-11
+    TARGET_BASE_IMAGE: docker.io/library/debian:11-slim


-x86_64-debian-11-clang-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-debian-11-clang:
+  extends: .native_build_job
   needs:
     - job: x86_64-debian-11-container
       optional: true
@@ -168,143 +106,85 @@ x86_64-debian-11-clang-prebuilt-env:
   variables:
     JOB_OPTIONAL: 1
     NAME: debian-11
-
-x86_64-debian-11-clang-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    IMAGE: docker.io/library/debian:11-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-11
+    TARGET_BASE_IMAGE: docker.io/library/debian:11-slim


-x86_64-debian-12-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-debian-12:
+  extends: .native_build_job
   needs:
     - job: x86_64-debian-12-container
       optional: true
   allow_failure: false
   variables:
     NAME: debian-12
-
-x86_64-debian-12-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    IMAGE: docker.io/library/debian:12-slim
-    NAME: debian-12
+    TARGET_BASE_IMAGE: docker.io/library/debian:12-slim


-x86_64-debian-12-clang-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-debian-12-clang:
+  extends: .native_build_job
   needs:
     - job: x86_64-debian-12-container
       optional: true
   allow_failure: false
   variables:
     NAME: debian-12
-
-x86_64-debian-12-clang-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    IMAGE: docker.io/library/debian:12-slim
-    NAME: debian-12
+    TARGET_BASE_IMAGE: docker.io/library/debian:12-slim


-x86_64-debian-sid-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-debian-sid:
+  extends: .native_build_job
   needs:
     - job: x86_64-debian-sid-container
       optional: true
   allow_failure: true
   variables:
     NAME: debian-sid
-
-x86_64-debian-sid-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: true
-  variables:
-    IMAGE: docker.io/library/debian:sid-slim
-    NAME: debian-sid
+    TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim


-x86_64-fedora-38-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-fedora-38:
+  extends: .native_build_job
   needs:
     - job: x86_64-fedora-38-container
       optional: true
   allow_failure: false
   variables:
     NAME: fedora-38
-  artifacts:
-    expire_in: 1 day
-    paths:
-      - libvirt-rpms
-
-x86_64-fedora-38-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    IMAGE: registry.fedoraproject.org/fedora:38
-    NAME: fedora-38
+    TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:38
   artifacts:
     expire_in: 1 day
     paths:
       - libvirt-rpms


-x86_64-fedora-39-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-fedora-39:
+  extends: .native_build_job
   needs:
     - job: x86_64-fedora-39-container
       optional: true
   allow_failure: false
   variables:
     NAME: fedora-39
-  artifacts:
-    expire_in: 1 day
-    paths:
-      - libvirt-rpms
-
-x86_64-fedora-39-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    IMAGE: registry.fedoraproject.org/fedora:39
-    NAME: fedora-39
+    TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:39
   artifacts:
     expire_in: 1 day
     paths:
       - libvirt-rpms


-x86_64-fedora-rawhide-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-fedora-rawhide:
+  extends: .native_build_job
   needs:
     - job: x86_64-fedora-rawhide-container
       optional: true
   allow_failure: true
   variables:
     NAME: fedora-rawhide
-
-x86_64-fedora-rawhide-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: true
-  variables:
-    IMAGE: registry.fedoraproject.org/fedora:rawhide
-    NAME: fedora-rawhide
+    TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:rawhide


-x86_64-fedora-rawhide-clang-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-fedora-rawhide-clang:
+  extends: .native_build_job
   needs:
     - job: x86_64-fedora-rawhide-container
       optional: true
@@ -313,20 +193,11 @@ x86_64-fedora-rawhide-clang-prebuilt-env:
     CC: clang
     NAME: fedora-rawhide
     RPM: skip
-
-x86_64-fedora-rawhide-clang-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: true
-  variables:
-    CC: clang
-    IMAGE: registry.fedoraproject.org/fedora:rawhide
-    NAME: fedora-rawhide
-    RPM: skip
+    TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:rawhide


-x86_64-opensuse-leap-15-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-opensuse-leap-15:
+  extends: .native_build_job
   needs:
     - job: x86_64-opensuse-leap-15-container
       optional: true
@@ -335,20 +206,11 @@ x86_64-opensuse-leap-15-prebuilt-env:
     CFLAGS: -Wno-missing-include-dirs
     NAME: opensuse-leap-15
     RPM: skip
-
-x86_64-opensuse-leap-15-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CFLAGS: -Wno-missing-include-dirs
-    IMAGE: registry.opensuse.org/opensuse/leap:15.5
-    NAME: opensuse-leap-15
-    RPM: skip
+    TARGET_BASE_IMAGE: registry.opensuse.org/opensuse/leap:15.5


-x86_64-opensuse-tumbleweed-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-opensuse-tumbleweed:
+  extends: .native_build_job
   needs:
     - job: x86_64-opensuse-tumbleweed-container
       optional: true
@@ -356,19 +218,11 @@ x86_64-opensuse-tumbleweed-prebuilt-env:
   variables:
     NAME: opensuse-tumbleweed
     RPM: skip
-
-x86_64-opensuse-tumbleweed-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: true
-  variables:
-    IMAGE: registry.opensuse.org/opensuse/tumbleweed:latest
-    NAME: opensuse-tumbleweed
-    RPM: skip
+    TARGET_BASE_IMAGE: registry.opensuse.org/opensuse/tumbleweed:latest


-x86_64-ubuntu-2004-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-ubuntu-2004:
+  extends: .native_build_job
   needs:
     - job: x86_64-ubuntu-2004-container
       optional: true
@@ -377,22 +231,12 @@ x86_64-ubuntu-2004-prebuilt-env:
     ASAN_OPTIONS: verify_asan_link_order=0
     MESON_ARGS: -Db_lundef=false -Db_sanitize=address,undefined
     NAME: ubuntu-2004
-    UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
-
-x86_64-ubuntu-2004-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    ASAN_OPTIONS: verify_asan_link_order=0
-    IMAGE: docker.io/library/ubuntu:20.04
-    MESON_ARGS: -Db_lundef=false -Db_sanitize=address,undefined
-    NAME: ubuntu-2004
+    TARGET_BASE_IMAGE: docker.io/library/ubuntu:20.04
     UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1


-x86_64-ubuntu-2204-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-ubuntu-2204:
+  extends: .native_build_job
   needs:
     - job: x86_64-ubuntu-2204-container
       optional: true
@@ -400,19 +244,11 @@ x86_64-ubuntu-2204-prebuilt-env:
   variables:
     JOB_OPTIONAL: 1
     NAME: ubuntu-2204
+    TARGET_BASE_IMAGE: docker.io/library/ubuntu:22.04

-x86_64-ubuntu-2204-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    IMAGE: docker.io/library/ubuntu:22.04
-    JOB_OPTIONAL: 1
-    NAME: ubuntu-2204

-
-x86_64-ubuntu-2204-clang-prebuilt-env:
-  extends: .native_build_job_prebuilt_env
+x86_64-ubuntu-2204-clang:
+  extends: .native_build_job
   needs:
     - job: x86_64-ubuntu-2204-container
       optional: true
@@ -421,25 +257,15 @@ x86_64-ubuntu-2204-clang-prebuilt-env:
     CC: clang
     MESON_ARGS: -Db_lundef=false -Db_sanitize=address,undefined
     NAME: ubuntu-2204
-    UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
-
-x86_64-ubuntu-2204-clang-local-env:
-  extends: .native_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CC: clang
-    IMAGE: docker.io/library/ubuntu:22.04
-    MESON_ARGS: -Db_lundef=false -Db_sanitize=address,undefined
-    NAME: ubuntu-2204
+    TARGET_BASE_IMAGE: docker.io/library/ubuntu:22.04
     UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1



 # Cross build jobs

-aarch64-debian-11-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+aarch64-debian-11:
+  extends: .cross_build_job
   needs:
     - job: aarch64-debian-11-container
       optional: true
@@ -448,20 +274,11 @@ aarch64-debian-11-prebuilt-env:
     CROSS: aarch64
     JOB_OPTIONAL: 1
     NAME: debian-11
-
-aarch64-debian-11-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: aarch64
-    IMAGE: docker.io/library/debian:11-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-11
+    TARGET_BASE_IMAGE: docker.io/library/debian:11-slim


-armv6l-debian-11-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+armv6l-debian-11:
+  extends: .cross_build_job
   needs:
     - job: armv6l-debian-11-container
       optional: true
@@ -470,20 +287,11 @@ armv6l-debian-11-prebuilt-env:
     CROSS: armv6l
     JOB_OPTIONAL: 1
     NAME: debian-11
-
-armv6l-debian-11-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: armv6l
-    IMAGE: docker.io/library/debian:11-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-11
+    TARGET_BASE_IMAGE: docker.io/library/debian:11-slim


-armv7l-debian-11-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+armv7l-debian-11:
+  extends: .cross_build_job
   needs:
     - job: armv7l-debian-11-container
       optional: true
@@ -492,20 +300,11 @@ armv7l-debian-11-prebuilt-env:
     CROSS: armv7l
     JOB_OPTIONAL: 1
     NAME: debian-11
-
-armv7l-debian-11-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: armv7l
-    IMAGE: docker.io/library/debian:11-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-11
+    TARGET_BASE_IMAGE: docker.io/library/debian:11-slim


-i686-debian-11-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+i686-debian-11:
+  extends: .cross_build_job
   needs:
     - job: i686-debian-11-container
       optional: true
@@ -514,20 +313,11 @@ i686-debian-11-prebuilt-env:
     CROSS: i686
     JOB_OPTIONAL: 1
     NAME: debian-11
-
-i686-debian-11-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: i686
-    IMAGE: docker.io/library/debian:11-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-11
+    TARGET_BASE_IMAGE: docker.io/library/debian:11-slim


-mips64el-debian-11-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+mips64el-debian-11:
+  extends: .cross_build_job
   needs:
     - job: mips64el-debian-11-container
       optional: true
@@ -536,20 +326,11 @@ mips64el-debian-11-prebuilt-env:
     CROSS: mips64el
     JOB_OPTIONAL: 1
     NAME: debian-11
-
-mips64el-debian-11-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: mips64el
-    IMAGE: docker.io/library/debian:11-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-11
+    TARGET_BASE_IMAGE: docker.io/library/debian:11-slim


-mipsel-debian-11-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+mipsel-debian-11:
+  extends: .cross_build_job
   needs:
     - job: mipsel-debian-11-container
       optional: true
@@ -558,20 +339,11 @@ mipsel-debian-11-prebuilt-env:
     CROSS: mipsel
     JOB_OPTIONAL: 1
     NAME: debian-11
-
-mipsel-debian-11-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: mipsel
-    IMAGE: docker.io/library/debian:11-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-11
+    TARGET_BASE_IMAGE: docker.io/library/debian:11-slim


-ppc64le-debian-11-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+ppc64le-debian-11:
+  extends: .cross_build_job
   needs:
     - job: ppc64le-debian-11-container
       optional: true
@@ -580,20 +352,11 @@ ppc64le-debian-11-prebuilt-env:
     CROSS: ppc64le
     JOB_OPTIONAL: 1
     NAME: debian-11
-
-ppc64le-debian-11-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: ppc64le
-    IMAGE: docker.io/library/debian:11-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-11
+    TARGET_BASE_IMAGE: docker.io/library/debian:11-slim


-s390x-debian-11-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+s390x-debian-11:
+  extends: .cross_build_job
   needs:
     - job: s390x-debian-11-container
       optional: true
@@ -602,20 +365,11 @@ s390x-debian-11-prebuilt-env:
     CROSS: s390x
     JOB_OPTIONAL: 1
     NAME: debian-11
-
-s390x-debian-11-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: s390x
-    IMAGE: docker.io/library/debian:11-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-11
+    TARGET_BASE_IMAGE: docker.io/library/debian:11-slim


-aarch64-debian-12-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+aarch64-debian-12:
+  extends: .cross_build_job
   needs:
     - job: aarch64-debian-12-container
       optional: true
@@ -624,20 +378,11 @@ aarch64-debian-12-prebuilt-env:
     CROSS: aarch64
     JOB_OPTIONAL: 1
     NAME: debian-12
-
-aarch64-debian-12-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: aarch64
-    IMAGE: docker.io/library/debian:12-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-12
+    TARGET_BASE_IMAGE: docker.io/library/debian:12-slim


-armv6l-debian-12-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+armv6l-debian-12:
+  extends: .cross_build_job
   needs:
     - job: armv6l-debian-12-container
       optional: true
@@ -646,20 +391,11 @@ armv6l-debian-12-prebuilt-env:
     CROSS: armv6l
     JOB_OPTIONAL: 1
     NAME: debian-12
-
-armv6l-debian-12-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: armv6l
-    IMAGE: docker.io/library/debian:12-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-12
+    TARGET_BASE_IMAGE: docker.io/library/debian:12-slim


-armv7l-debian-12-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+armv7l-debian-12:
+  extends: .cross_build_job
   needs:
     - job: armv7l-debian-12-container
       optional: true
@@ -667,19 +403,11 @@ armv7l-debian-12-prebuilt-env:
   variables:
     CROSS: armv7l
     NAME: debian-12
-
-armv7l-debian-12-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: armv7l
-    IMAGE: docker.io/library/debian:12-slim
-    NAME: debian-12
+    TARGET_BASE_IMAGE: docker.io/library/debian:12-slim


-i686-debian-12-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+i686-debian-12:
+  extends: .cross_build_job
   needs:
     - job: i686-debian-12-container
       optional: true
@@ -688,20 +416,11 @@ i686-debian-12-prebuilt-env:
     CROSS: i686
     JOB_OPTIONAL: 1
     NAME: debian-12
-
-i686-debian-12-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: i686
-    IMAGE: docker.io/library/debian:12-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-12
+    TARGET_BASE_IMAGE: docker.io/library/debian:12-slim


-mips64el-debian-12-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+mips64el-debian-12:
+  extends: .cross_build_job
   needs:
     - job: mips64el-debian-12-container
       optional: true
@@ -710,20 +429,11 @@ mips64el-debian-12-prebuilt-env:
     CROSS: mips64el
     JOB_OPTIONAL: 1
     NAME: debian-12
-
-mips64el-debian-12-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: mips64el
-    IMAGE: docker.io/library/debian:12-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-12
+    TARGET_BASE_IMAGE: docker.io/library/debian:12-slim


-mipsel-debian-12-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+mipsel-debian-12:
+  extends: .cross_build_job
   needs:
     - job: mipsel-debian-12-container
       optional: true
@@ -732,20 +442,11 @@ mipsel-debian-12-prebuilt-env:
     CROSS: mipsel
     JOB_OPTIONAL: 1
     NAME: debian-12
-
-mipsel-debian-12-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: mipsel
-    IMAGE: docker.io/library/debian:12-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-12
+    TARGET_BASE_IMAGE: docker.io/library/debian:12-slim


-ppc64le-debian-12-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+ppc64le-debian-12:
+  extends: .cross_build_job
   needs:
     - job: ppc64le-debian-12-container
       optional: true
@@ -754,20 +455,11 @@ ppc64le-debian-12-prebuilt-env:
     CROSS: ppc64le
     JOB_OPTIONAL: 1
     NAME: debian-12
-
-ppc64le-debian-12-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: ppc64le
-    IMAGE: docker.io/library/debian:12-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-12
+    TARGET_BASE_IMAGE: docker.io/library/debian:12-slim


-s390x-debian-12-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+s390x-debian-12:
+  extends: .cross_build_job
   needs:
     - job: s390x-debian-12-container
       optional: true
@@ -776,20 +468,11 @@ s390x-debian-12-prebuilt-env:
     CROSS: s390x
     JOB_OPTIONAL: 1
     NAME: debian-12
-
-s390x-debian-12-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: s390x
-    IMAGE: docker.io/library/debian:12-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-12
+    TARGET_BASE_IMAGE: docker.io/library/debian:12-slim


-aarch64-debian-sid-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+aarch64-debian-sid:
+  extends: .cross_build_job
   needs:
     - job: aarch64-debian-sid-container
       optional: true
@@ -798,20 +481,11 @@ aarch64-debian-sid-prebuilt-env:
     CROSS: aarch64
     JOB_OPTIONAL: 1
     NAME: debian-sid
-
-aarch64-debian-sid-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: aarch64
-    IMAGE: docker.io/library/debian:sid-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-sid
+    TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim


-armv6l-debian-sid-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+armv6l-debian-sid:
+  extends: .cross_build_job
   needs:
     - job: armv6l-debian-sid-container
       optional: true
@@ -820,20 +494,11 @@ armv6l-debian-sid-prebuilt-env:
     CROSS: armv6l
     JOB_OPTIONAL: 1
     NAME: debian-sid
-
-armv6l-debian-sid-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: armv6l
-    IMAGE: docker.io/library/debian:sid-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-sid
+    TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim


-armv7l-debian-sid-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+armv7l-debian-sid:
+  extends: .cross_build_job
   needs:
     - job: armv7l-debian-sid-container
       optional: true
@@ -842,20 +507,11 @@ armv7l-debian-sid-prebuilt-env:
     CROSS: armv7l
     JOB_OPTIONAL: 1
     NAME: debian-sid
-
-armv7l-debian-sid-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: armv7l
-    IMAGE: docker.io/library/debian:sid-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-sid
+    TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim


-i686-debian-sid-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+i686-debian-sid:
+  extends: .cross_build_job
   needs:
     - job: i686-debian-sid-container
       optional: true
@@ -864,20 +520,11 @@ i686-debian-sid-prebuilt-env:
     CROSS: i686
     JOB_OPTIONAL: 1
     NAME: debian-sid
-
-i686-debian-sid-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: i686
-    IMAGE: docker.io/library/debian:sid-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-sid
+    TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim


-mips64el-debian-sid-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+mips64el-debian-sid:
+  extends: .cross_build_job
   needs:
     - job: mips64el-debian-sid-container
       optional: true
@@ -886,20 +533,11 @@ mips64el-debian-sid-prebuilt-env:
     CROSS: mips64el
     JOB_OPTIONAL: 1
     NAME: debian-sid
-
-mips64el-debian-sid-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: mips64el
-    IMAGE: docker.io/library/debian:sid-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-sid
+    TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim


-ppc64le-debian-sid-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+ppc64le-debian-sid:
+  extends: .cross_build_job
   needs:
     - job: ppc64le-debian-sid-container
       optional: true
@@ -908,20 +546,11 @@ ppc64le-debian-sid-prebuilt-env:
     CROSS: ppc64le
     JOB_OPTIONAL: 1
     NAME: debian-sid
-
-ppc64le-debian-sid-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: ppc64le
-    IMAGE: docker.io/library/debian:sid-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-sid
+    TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim


-s390x-debian-sid-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+s390x-debian-sid:
+  extends: .cross_build_job
   needs:
     - job: s390x-debian-sid-container
       optional: true
@@ -930,20 +559,11 @@ s390x-debian-sid-prebuilt-env:
     CROSS: s390x
     JOB_OPTIONAL: 1
     NAME: debian-sid
-
-s390x-debian-sid-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: s390x
-    IMAGE: docker.io/library/debian:sid-slim
-    JOB_OPTIONAL: 1
-    NAME: debian-sid
+    TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim


-mingw32-fedora-38-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+mingw32-fedora-38:
+  extends: .cross_build_job
   needs:
     - job: mingw32-fedora-38-container
       optional: true
@@ -952,20 +572,11 @@ mingw32-fedora-38-prebuilt-env:
     CROSS: mingw32
     JOB_OPTIONAL: 1
     NAME: fedora-38
-
-mingw32-fedora-38-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: mingw32
-    IMAGE: registry.fedoraproject.org/fedora:38
-    JOB_OPTIONAL: 1
-    NAME: fedora-38
+    TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:38


-mingw64-fedora-38-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+mingw64-fedora-38:
+  extends: .cross_build_job
   needs:
     - job: mingw64-fedora-38-container
       optional: true
@@ -973,19 +584,11 @@ mingw64-fedora-38-prebuilt-env:
   variables:
     CROSS: mingw64
     NAME: fedora-38
-
-mingw64-fedora-38-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: false
-  variables:
-    CROSS: mingw64
-    IMAGE: registry.fedoraproject.org/fedora:38
-    NAME: fedora-38
+    TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:38


-mingw32-fedora-rawhide-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+mingw32-fedora-rawhide:
+  extends: .cross_build_job
   needs:
     - job: mingw32-fedora-rawhide-container
       optional: true
@@ -993,19 +596,11 @@ mingw32-fedora-rawhide-prebuilt-env:
   variables:
     CROSS: mingw32
     NAME: fedora-rawhide
-
-mingw32-fedora-rawhide-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: true
-  variables:
-    CROSS: mingw32
-    IMAGE: registry.fedoraproject.org/fedora:rawhide
-    NAME: fedora-rawhide
+    TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:rawhide


-mingw64-fedora-rawhide-prebuilt-env:
-  extends: .cross_build_job_prebuilt_env
+mingw64-fedora-rawhide:
+  extends: .cross_build_job
   needs:
     - job: mingw64-fedora-rawhide-container
       optional: true
@@ -1014,16 +609,7 @@ mingw64-fedora-rawhide-prebuilt-env:
     CROSS: mingw64
     JOB_OPTIONAL: 1
     NAME: fedora-rawhide
-
-mingw64-fedora-rawhide-local-env:
-  extends: .cross_build_job_local_env
-  needs: []
-  allow_failure: true
-  variables:
-    CROSS: mingw64
-    IMAGE: registry.fedoraproject.org/fedora:rawhide
-    JOB_OPTIONAL: 1
-    NAME: fedora-rawhide
+    TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:rawhide


 # Native cirrus build jobs
diff --git a/ci/integration-template.yml b/ci/integration-template.yml
index 166445527c..ded57cfaaf 100644
--- a/ci/integration-template.yml
+++ b/ci/integration-template.yml
@@ -47,6 +47,10 @@

 .integration_tests:
   stage: integration_tests
+  rules:
+    - if: '$LIBVIRT_CI_INTEGRATION == null'
+      when: never
+    - !reference [.gitlab_native_build_job, rules]
   before_script:
     - mkdir "$SCRATCH_DIR"
     - sudo dnf install -y libvirt-rpms/* libvirt-perl-rpms/* libvirt-python-rpms/*
@@ -65,35 +69,13 @@
       - logs
     when: on_failure

-.integration_tests_prebuilt_env:
-  extends: .integration_tests
-  rules:
-    - if: '$LIBVIRT_CI_INTEGRATION == null'
-      when: never
-    - !reference [.gitlab_native_build_job_prebuilt_env, rules]
-
-.integration_tests_local_env:
-  extends: .integration_tests
-  rules:
-    - if: '$LIBVIRT_CI_INTEGRATION == null'
-      when: never
-    - !reference [.gitlab_native_build_job_local_env, rules]
-

 # YAML anchors don't work with Shell conditions so we can't use a variable
 # to conditionally build+install QEMU from source.
 # Instead, create a new test job template for this scenario.
 .integration_tests_upstream_qemu:
+  extends:
+    - .integration_tests
   before_script:
     - !reference [.integration_tests, before_script]
     - *qemu-build-template
-
-.integration_tests_upstream_qemu_prebuilt_env:
-  extends:
-    - .integration_tests_prebuilt_env
-    - .integration_tests_upstream_qemu
-
-.integration_tests_upstream_qemu_local_env:
-  extends:
-    - .integration_tests_local_env
-    - .integration_tests_upstream_qemu
diff --git a/ci/integration.yml b/ci/integration.yml
index 1614aa56d6..f754c59962 100644
--- a/ci/integration.yml
+++ b/ci/integration.yml
@@ -5,7 +5,8 @@ include:
 # and libvirt-python CI jobs, so the new target needs to be introduced
 # there before it can be used here. The VM template for the target
 # also needs to be created on the runner host.
-.centos-stream-8-tests:
+centos-stream-8-tests:
+  extends: .integration_tests
   variables:
     # needed by libvirt-gitlab-executor
     DISTRO: centos-stream-8
@@ -13,43 +14,23 @@ include:
     LIBVIRT_CI_INTEGRATION_RUNNER_TAG: redhat-vm-host
   tags:
     - $LIBVIRT_CI_INTEGRATION_RUNNER_TAG
-
-centos-stream-8-tests-prebuilt-env:
-  extends:
-    - .integration_tests_prebuilt_env
-    - .centos-stream-8-tests
   needs:
-    - x86_64-centos-stream-8-prebuilt-env
+    - x86_64-centos-stream-8
     - project: libvirt/libvirt-perl
-      job: x86_64-centos-stream-8-prebuilt-env
+      job: x86_64-centos-stream-8
       ref: master
       artifacts: true
     - project: libvirt/libvirt-python
-      job: x86_64-centos-stream-8-prebuilt-env
+      job: x86_64-centos-stream-8
       ref: master
       artifacts: true

-centos-stream-8-tests-local-env:
-  extends:
-    - .integration_tests_local_env
-    - .centos-stream-8-tests
-  needs:
-    - x86_64-centos-stream-8-local-env
-    - project: libvirt/libvirt-perl
-      job: x86_64-centos-stream-8-prebuilt-env
-      ref: master
-      artifacts: true
-    - project: libvirt/libvirt-python
-      job: x86_64-centos-stream-8-prebuilt-env
-      ref: master
-      artifacts: true
-
-
 # NOTE The integration tests use artifacts produced by the libvirt-perl
 # and libvirt-python CI jobs, so the new target needs to be introduced
 # there before it can be used here. The VM template for the target
 # also needs to be created on the runner host.
-.centos-stream-9-tests:
+centos-stream-9-tests:
+  extends: .integration_tests
   variables:
     # needed by libvirt-gitlab-executor
     DISTRO: centos-stream-9
@@ -57,43 +38,23 @@ centos-stream-8-tests-local-env:
     LIBVIRT_CI_INTEGRATION_RUNNER_TAG: redhat-vm-host
   tags:
     - $LIBVIRT_CI_INTEGRATION_RUNNER_TAG
-
-centos-stream-9-tests-prebuilt-env:
-  extends:
-    - .integration_tests_prebuilt_env
-    - .centos-stream-9-tests
   needs:
-    - x86_64-centos-stream-9-prebuilt-env
+    - x86_64-centos-stream-9
     - project: libvirt/libvirt-perl
-      job: x86_64-centos-stream-9-prebuilt-env
+      job: x86_64-centos-stream-9
       ref: master
       artifacts: true
     - project: libvirt/libvirt-python
-      job: x86_64-centos-stream-9-prebuilt-env
+      job: x86_64-centos-stream-9
       ref: master
       artifacts: true

-centos-stream-9-tests-local-env:
-  extends:
-    - .integration_tests_local_env
-    - .centos-stream-9-tests
-  needs:
-    - x86_64-centos-stream-9-local-env
-    - project: libvirt/libvirt-perl
-      job: x86_64-centos-stream-9-prebuilt-env
-      ref: master
-      artifacts: true
-    - project: libvirt/libvirt-python
-      job: x86_64-centos-stream-9-prebuilt-env
-      ref: master
-      artifacts: true
-
-
 # NOTE The integration tests use artifacts produced by the libvirt-perl
 # and libvirt-python CI jobs, so the new target needs to be introduced
 # there before it can be used here. The VM template for the target
 # also needs to be created on the runner host.
-.fedora-38-tests:
+fedora-38-tests:
+  extends: .integration_tests
   variables:
     # needed by libvirt-gitlab-executor
     DISTRO: fedora-38
@@ -101,43 +62,23 @@ centos-stream-9-tests-local-env:
     LIBVIRT_CI_INTEGRATION_RUNNER_TAG: redhat-vm-host
   tags:
     - $LIBVIRT_CI_INTEGRATION_RUNNER_TAG
-
-fedora-38-tests-prebuilt-env:
-  extends:
-    - .integration_tests_prebuilt_env
-    - .fedora-38-tests
   needs:
-    - x86_64-fedora-38-prebuilt-env
+    - x86_64-fedora-38
     - project: libvirt/libvirt-perl
-      job: x86_64-fedora-38-prebuilt-env
+      job: x86_64-fedora-38
       ref: master
       artifacts: true
     - project: libvirt/libvirt-python
-      job: x86_64-fedora-38-prebuilt-env
+      job: x86_64-fedora-38
       ref: master
       artifacts: true

-fedora-38-tests-local-env:
-  extends:
-    - .integration_tests_local_env
-    - .fedora-38-tests
-  needs:
-    - x86_64-fedora-38-local-env
-    - project: libvirt/libvirt-perl
-      job: x86_64-fedora-38-prebuilt-env
-      ref: master
-      artifacts: true
-    - project: libvirt/libvirt-python
-      job: x86_64-fedora-38-prebuilt-env
-      ref: master
-      artifacts: true
-
-
 # NOTE The integration tests use artifacts produced by the libvirt-perl
 # and libvirt-python CI jobs, so the new target needs to be introduced
 # there before it can be used here. The VM template for the target
 # also needs to be created on the runner host.
-.fedora-39-tests:
+fedora-39-tests:
+  extends: .integration_tests
   variables:
     # needed by libvirt-gitlab-executor
     DISTRO: fedora-39
@@ -145,43 +86,23 @@ fedora-38-tests-local-env:
     LIBVIRT_CI_INTEGRATION_RUNNER_TAG: redhat-vm-host
   tags:
     - $LIBVIRT_CI_INTEGRATION_RUNNER_TAG
-
-fedora-39-tests-prebuilt-env:
-  extends:
-    - .integration_tests_prebuilt_env
-    - .fedora-39-tests
-  needs:
-    - x86_64-fedora-39-prebuilt-env
-    - project: libvirt/libvirt-perl
-      job: x86_64-fedora-39-prebuilt-env
-      ref: master
-      artifacts: true
-    - project: libvirt/libvirt-python
-      job: x86_64-fedora-39-prebuilt-env
-      ref: master
-      artifacts: true
-
-fedora-39-tests-local-env:
-  extends:
-    - .integration_tests_local_env
-    - .fedora-39-tests
   needs:
-    - x86_64-fedora-39-local-env
+    - x86_64-fedora-39
     - project: libvirt/libvirt-perl
-      job: x86_64-fedora-39-prebuilt-env
+      job: x86_64-fedora-39
       ref: master
       artifacts: true
     - project: libvirt/libvirt-python
-      job: x86_64-fedora-39-prebuilt-env
+      job: x86_64-fedora-39
       ref: master
       artifacts: true

-
 # NOTE The integration tests use artifacts produced by the libvirt-perl
 # and libvirt-python CI jobs, so the new target needs to be introduced
 # there before it can be used here. The VM template for the target
 # also needs to be created on the runner host.
 .fedora-39-upstream-qemu-tests:
+  extends: .integration_tests
   variables:
     # needed by libvirt-gitlab-executor
     DISTRO: fedora-39
@@ -189,33 +110,13 @@ fedora-39-tests-local-env:
     LIBVIRT_CI_INTEGRATION_RUNNER_TAG: redhat-vm-host
   tags:
     - $LIBVIRT_CI_INTEGRATION_RUNNER_TAG
-
-fedora-39-upstream-qemu-tests-prebuilt-env:
-  extends:
-    - .integration_tests_upstream_qemu_prebuilt_env
-    - .fedora-39-upstream-qemu-tests
-  needs:
-    - x86_64-fedora-39-prebuilt-env
-    - project: libvirt/libvirt-perl
-      job: x86_64-fedora-39-prebuilt-env
-      ref: master
-      artifacts: true
-    - project: libvirt/libvirt-python
-      job: x86_64-fedora-39-prebuilt-env
-      ref: master
-      artifacts: true
-
-fedora-39-upstream-qemu-tests-local-env:
-  extends:
-    - .integration_tests_upstream_qemu_local_env
-    - .fedora-39-upstream-qemu-tests
   needs:
-    - x86_64-fedora-39-local-env
+    - x86_64-fedora-39
     - project: libvirt/libvirt-perl
-      job: x86_64-fedora-39-prebuilt-env
+      job: x86_64-fedora-39
       ref: master
       artifacts: true
     - project: libvirt/libvirt-python
-      job: x86_64-fedora-39-prebuilt-env
+      job: x86_64-fedora-39
       ref: master
       artifacts: true
-- 
2.43.0
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-leave@lists.libvirt.org
Re: [PATCH] ci: Regenerate with latest 'lcitool' and fix manual job definitions
Posted by Daniel P. Berrangé 3 months, 1 week ago
On Fri, Jan 19, 2024 at 11:31:19AM +0100, Peter Krempa wrote:
> The latest lcitool merged the 'prebuilt-env' and 'local-env' jobs into
> one which use variables to pick up the right environment and steps
> rather than duplicating everything.
> 
> Regenerate the generated job definitions, fix the helper definitions
> and also fix the manually defined jobs (website-job).
> 
> Signed-off-by: Peter Krempa <pkrempa@redhat.com>
> ---
>  .gitlab-ci.yml                |  68 +---
>  ci/gitlab/build-templates.yml | 118 +++---
>  ci/gitlab/builds.yml          | 696 +++++++---------------------------
>  ci/integration-template.yml   |  30 +-
>  ci/integration.yml            | 147 ++-----
>  5 files changed, 253 insertions(+), 806 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

Aside from whitespace/ordering differences this was essentially the
same as what I had tested with.

This requires synchronized merging with the perl & python changes

https://gitlab.com/libvirt/libvirt-perl/-/merge_requests/112
https://gitlab.com/libvirt/libvirt-python/-/merge_requests/134

to support the integration tests.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-leave@lists.libvirt.org
Re: [PATCH] ci: Regenerate with latest 'lcitool' and fix manual job definitions
Posted by Daniel P. Berrangé 3 months, 1 week ago
On Fri, Jan 19, 2024 at 10:44:56AM +0000, Daniel P. Berrangé wrote:
> On Fri, Jan 19, 2024 at 11:31:19AM +0100, Peter Krempa wrote:
> > The latest lcitool merged the 'prebuilt-env' and 'local-env' jobs into
> > one which use variables to pick up the right environment and steps
> > rather than duplicating everything.
> > 
> > Regenerate the generated job definitions, fix the helper definitions
> > and also fix the manually defined jobs (website-job).
> > 
> > Signed-off-by: Peter Krempa <pkrempa@redhat.com>
> > ---
> >  .gitlab-ci.yml                |  68 +---
> >  ci/gitlab/build-templates.yml | 118 +++---
> >  ci/gitlab/builds.yml          | 696 +++++++---------------------------
> >  ci/integration-template.yml   |  30 +-
> >  ci/integration.yml            | 147 ++-----
> >  5 files changed, 253 insertions(+), 806 deletions(-)
> 
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> 
> Aside from whitespace/ordering differences this was essentially the
> same as what I had tested with.
> 
> This requires synchronized merging with the perl & python changes
> 
> https://gitlab.com/libvirt/libvirt-perl/-/merge_requests/112
> https://gitlab.com/libvirt/libvirt-python/-/merge_requests/134
> 
> to support the integration tests.

These two are merged, so once their pipelines have finished on
master, this is good to merge too.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-leave@lists.libvirt.org