]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
ci: Regenerate with latest 'lcitool' and fix manual job definitions
authorPeter Krempa <pkrempa@redhat.com>
Thu, 18 Jan 2024 15:20:14 +0000 (16:20 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 19 Jan 2024 13:48:21 +0000 (14:48 +0100)
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>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
.gitlab-ci.yml
ci/gitlab/build-templates.yml
ci/gitlab/builds.yml
ci/integration-template.yml
ci/integration.yml

index 8bad761b3298df5fdb22ce80b1dfa5a183cd37f5..81433652ae34d6c677867ef46a8d06f8c4d85434 100644 (file)
@@ -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:
index 1f533ec2ddf1eb67f44e2c77a77e0de424d4b41f..75d9a6f127bd1523fbaaee1d4fa1fb4d217d5265 100644 (file)
 #    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
     - 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'
         - 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
 #    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
     - 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'
         - 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
index 434e272e5a34352900c82e899bb3c823586f7ba2..49a0b27029d4ed1aeb5aa1a6d9936aa7ca8cf0de 100644 (file)
@@ -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
index 166445527ced7e47d1bda8b7847144baa45894f1..ded57cfaafa2f94f390293cb841828e9c02ba858 100644 (file)
 
 .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/*
       - 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
index 1614aa56d6a96674a18fd5ce5e0f27ab84260e9e..f754c59962aa63d1bd19e33ded30cd92270f7a68 100644 (file)
@@ -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