diff options
author | Thomas Haller <thaller@redhat.com> | 2023-04-11 12:23:30 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2023-04-13 09:08:03 +0200 |
commit | b06ddab9d42a3ca3379ff6f6d5997a0fd5cc5bea (patch) | |
tree | 152dd40088fd1c6c82548729f32e0e1ecfc93cbc | |
parent | d39fb6f0148af24d3325b9ea91e3c0a0ea873306 (diff) | |
download | NetworkManager-b06ddab9d42a3ca3379ff6f6d5997a0fd5cc5bea.tar.gz |
gitlab-ci: add multiple stages/tiers for tests
We have many test configurations (i.e. distros like fedora:37,
debian:9). Almost all of them run manually triggered, because running
them every time would be wasteful.
Still, even as we trigger those tests only seldom, whenever we trigger
them all together, they consume still too many resources of the
freedesktop.org gitlab infrastructure.
One possibility would be to just drop old distros (e.g. fedora:30).
Which tests are setup in gitlab-ci is constantly refined and adjusted.
So dropping some distros is not necessarily wrong and bound to happen
eventually.
However, I also don't find it great to just disable tests that are still
passing. If we want to avoid consuming too many resources, we can just
choose not to run those tests. We don't need to enforce that by deleting
tests. Once deleted, such a configuration cannot be tested anymore as it
would be too cumbersome to recreate the setup manually.
Instead, introduce stages/tiers to clearer mark configuration that we
should test even less frequently.
Note that it is still required from the developer to not trigger too
many tests at once, to not monopolize the CI resources. The stages
should make that clearer to see, but don't solve it. Deleting tests
might solve it, but only if we delete a significant number of those
tests, which seems not desirable.
-rw-r--r-- | .gitlab-ci.yml | 355 | ||||
-rw-r--r-- | .gitlab-ci/ci.template | 71 | ||||
-rw-r--r-- | .gitlab-ci/config.yml | 49 |
3 files changed, 273 insertions, 202 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 71fe4e4cd0..eeae024b6b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,6 +15,8 @@ .templates_sha: &template_sha ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2 # see https://docs.gitlab.com/ee/ci/yaml/#includefile + + include: # Alpine container builder template - project: 'freedesktop/ci-templates' @@ -39,7 +41,9 @@ include: stages: - prep - - test + - tier1 + - tier2 + - tier3 - deploy - triage - container_clean @@ -53,17 +57,17 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". - FEDORA_TAG: '2023-01-18.0-82ad875db2dc' - UBUNTU_TAG: '2023-01-18.0-b674114b79c1' - DEBIAN_TAG: '2023-01-18.0-b674114b79c1' - CENTOS_TAG: '2023-01-18.0-82ad875db2dc' - ALPINE_TAG: '2023-01-18.0-14c807942fa4' + ALPINE_TAG: '2023-04-11.0-c319e2a8ce5b' + CENTOS_TAG: '2023-04-11.0-3322a2e54777' + DEBIAN_TAG: '2023-04-11.0-b529fd8eba83' + FEDORA_TAG: '2023-04-11.0-3322a2e54777' + UBUNTU_TAG: '2023-04-11.0-b529fd8eba83' + ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' + CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' + DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh' FEDORA_EXEC: 'bash .gitlab-ci/fedora-install.sh' UBUNTU_EXEC: 'bash .gitlab-ci/debian-install.sh' - DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh' - CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' - ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' .nm_artifacts: variables: @@ -93,93 +97,93 @@ variables: # Build a container for each distribution + version. The ci-templates # will re-use the containers if the tag doesn't change. -fedora:30@container-prep: +fedora:37@container-prep: extends: - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '30' + FDO_DISTRIBUTION_VERSION: '37' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC -fedora:31@container-prep: +fedora:36@container-prep: extends: - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '31' + FDO_DISTRIBUTION_VERSION: '36' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC -fedora:32@container-prep: +fedora:38@container-prep: extends: - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '32' + FDO_DISTRIBUTION_VERSION: '38' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC -fedora:33@container-prep: +fedora:30@container-prep: extends: - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '33' + FDO_DISTRIBUTION_VERSION: '30' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC -fedora:34@container-prep: +fedora:31@container-prep: extends: - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '34' + FDO_DISTRIBUTION_VERSION: '31' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC -fedora:35@container-prep: +fedora:32@container-prep: extends: - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '35' + FDO_DISTRIBUTION_VERSION: '32' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC -fedora:36@container-prep: +fedora:33@container-prep: extends: - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '36' + FDO_DISTRIBUTION_VERSION: '33' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC -fedora:37@container-prep: +fedora:34@container-prep: extends: - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '37' + FDO_DISTRIBUTION_VERSION: '34' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC -fedora:38@container-prep: +fedora:35@container-prep: extends: - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '38' + FDO_DISTRIBUTION_VERSION: '35' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC @@ -233,53 +237,53 @@ ubuntu:rolling@container-prep: FDO_DISTRIBUTION_TAG: $UBUNTU_TAG FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC -debian:9@container-prep: +debian:10@container-prep: extends: - .fdo.container-build@debian stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '9' + FDO_DISTRIBUTION_VERSION: '10' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC -debian:10@container-prep: +debian:11@container-prep: extends: - .fdo.container-build@debian stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '10' + FDO_DISTRIBUTION_VERSION: '11' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC -debian:11@container-prep: +debian:sid@container-prep: extends: - .fdo.container-build@debian stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '11' + FDO_DISTRIBUTION_VERSION: 'sid' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC -debian:testing@container-prep: +debian:9@container-prep: extends: - .fdo.container-build@debian stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: 'testing' + FDO_DISTRIBUTION_VERSION: '9' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC -debian:sid@container-prep: +debian:testing@container-prep: extends: - .fdo.container-build@debian stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: 'sid' + FDO_DISTRIBUTION_VERSION: 'testing' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC @@ -293,73 +297,73 @@ centos:7.5.1804@container-prep: FDO_DISTRIBUTION_TAG: $CENTOS_TAG FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC -centos:7.6.1810@container-prep: +centos:7.9.2009@container-prep: extends: - .fdo.container-build@centos stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '7.6.1810' + FDO_DISTRIBUTION_VERSION: '7.9.2009' FDO_DISTRIBUTION_TAG: $CENTOS_TAG FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC -centos:7.7.1908@container-prep: +centos:8.1.1911@container-prep: extends: - .fdo.container-build@centos stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '7.7.1908' + FDO_DISTRIBUTION_VERSION: '8.1.1911' FDO_DISTRIBUTION_TAG: $CENTOS_TAG FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC -centos:7.8.2003@container-prep: +centos:8.3.2011@container-prep: extends: - .fdo.container-build@centos stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '7.8.2003' + FDO_DISTRIBUTION_VERSION: '8.3.2011' FDO_DISTRIBUTION_TAG: $CENTOS_TAG FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC -centos:7.9.2009@container-prep: +centos:7.6.1810@container-prep: extends: - .fdo.container-build@centos stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '7.9.2009' + FDO_DISTRIBUTION_VERSION: '7.6.1810' FDO_DISTRIBUTION_TAG: $CENTOS_TAG FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC -centos:8.1.1911@container-prep: +centos:7.7.1908@container-prep: extends: - .fdo.container-build@centos stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '8.1.1911' + FDO_DISTRIBUTION_VERSION: '7.7.1908' FDO_DISTRIBUTION_TAG: $CENTOS_TAG FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC -centos:8.2.2004@container-prep: +centos:7.8.2003@container-prep: extends: - .fdo.container-build@centos stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '8.2.2004' + FDO_DISTRIBUTION_VERSION: '7.8.2003' FDO_DISTRIBUTION_TAG: $CENTOS_TAG FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC -centos:8.3.2011@container-prep: +centos:8.2.2004@container-prep: extends: - .fdo.container-build@centos stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '8.3.2011' + FDO_DISTRIBUTION_VERSION: '8.2.2004' FDO_DISTRIBUTION_TAG: $CENTOS_TAG FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC @@ -407,85 +411,85 @@ alpine:latest@container-prep: only: - schedules -fedora:30@container-clean: +fedora:37@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '30' + FDO_DISTRIBUTION_VERSION: '37' FDO_DISTRIBUTION_TAG: $FEDORA_TAG -fedora:31@container-clean: +fedora:36@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '31' + FDO_DISTRIBUTION_VERSION: '36' FDO_DISTRIBUTION_TAG: $FEDORA_TAG -fedora:32@container-clean: +fedora:38@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '32' + FDO_DISTRIBUTION_VERSION: '38' FDO_DISTRIBUTION_TAG: $FEDORA_TAG -fedora:33@container-clean: +fedora:30@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '33' + FDO_DISTRIBUTION_VERSION: '30' FDO_DISTRIBUTION_TAG: $FEDORA_TAG -fedora:34@container-clean: +fedora:31@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '34' + FDO_DISTRIBUTION_VERSION: '31' FDO_DISTRIBUTION_TAG: $FEDORA_TAG -fedora:35@container-clean: +fedora:32@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '35' + FDO_DISTRIBUTION_VERSION: '32' FDO_DISTRIBUTION_TAG: $FEDORA_TAG -fedora:36@container-clean: +fedora:33@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '36' + FDO_DISTRIBUTION_VERSION: '33' FDO_DISTRIBUTION_TAG: $FEDORA_TAG -fedora:37@container-clean: +fedora:34@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '37' + FDO_DISTRIBUTION_VERSION: '34' FDO_DISTRIBUTION_TAG: $FEDORA_TAG -fedora:38@container-clean: +fedora:35@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '38' + FDO_DISTRIBUTION_VERSION: '35' FDO_DISTRIBUTION_TAG: $FEDORA_TAG ubuntu:18.04@container-clean: @@ -533,49 +537,49 @@ ubuntu:rolling@container-clean: FDO_DISTRIBUTION_VERSION: 'rolling' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG -debian:9@container-clean: +debian:10@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '9' + FDO_DISTRIBUTION_VERSION: '10' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG -debian:10@container-clean: +debian:11@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '10' + FDO_DISTRIBUTION_VERSION: '11' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG -debian:11@container-clean: +debian:sid@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '11' + FDO_DISTRIBUTION_VERSION: 'sid' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG -debian:testing@container-clean: +debian:9@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: 'testing' + FDO_DISTRIBUTION_VERSION: '9' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG -debian:sid@container-clean: +debian:testing@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: 'sid' + FDO_DISTRIBUTION_VERSION: 'testing' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG centos:7.5.1804@container-clean: @@ -587,67 +591,67 @@ centos:7.5.1804@container-clean: FDO_DISTRIBUTION_VERSION: '7.5.1804' FDO_DISTRIBUTION_TAG: $CENTOS_TAG -centos:7.6.1810@container-clean: +centos:7.9.2009@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '7.6.1810' + FDO_DISTRIBUTION_VERSION: '7.9.2009' FDO_DISTRIBUTION_TAG: $CENTOS_TAG -centos:7.7.1908@container-clean: +centos:8.1.1911@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '7.7.1908' + FDO_DISTRIBUTION_VERSION: '8.1.1911' FDO_DISTRIBUTION_TAG: $CENTOS_TAG -centos:7.8.2003@container-clean: +centos:8.3.2011@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '7.8.2003' + FDO_DISTRIBUTION_VERSION: '8.3.2011' FDO_DISTRIBUTION_TAG: $CENTOS_TAG -centos:7.9.2009@container-clean: +centos:7.6.1810@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '7.9.2009' + FDO_DISTRIBUTION_VERSION: '7.6.1810' FDO_DISTRIBUTION_TAG: $CENTOS_TAG -centos:8.1.1911@container-clean: +centos:7.7.1908@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '8.1.1911' + FDO_DISTRIBUTION_VERSION: '7.7.1908' FDO_DISTRIBUTION_TAG: $CENTOS_TAG -centos:8.2.2004@container-clean: +centos:7.8.2003@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '8.2.2004' + FDO_DISTRIBUTION_VERSION: '7.8.2003' FDO_DISTRIBUTION_TAG: $CENTOS_TAG -centos:8.3.2011@container-clean: +centos:8.2.2004@container-clean: extends: - .container-clean variables: GIT_STRATEGY: none CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG - FDO_DISTRIBUTION_VERSION: '8.3.2011' + FDO_DISTRIBUTION_VERSION: '8.2.2004' FDO_DISTRIBUTION_TAG: $CENTOS_TAG alpine:latest@container-clean: @@ -667,7 +671,6 @@ alpine:latest@container-clean: ################################################################# .build@template: - stage: test script: - env - r=0 @@ -684,111 +687,120 @@ alpine:latest@container-clean: ################################################################# -t_fedora:30: +t_fedora:37: extends: - .build@template - .fdo.distribution-image@fedora - - .nm_artifacts_debug + - .nm_artifacts + stage: tier1 variables: - FDO_DISTRIBUTION_VERSION: '30' + FDO_DISTRIBUTION_VERSION: '37' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "fedora:30@container-prep" - when: manual + - "fedora:37@container-prep" -t_fedora:31: +t_fedora:36: extends: - .build@template - .fdo.distribution-image@fedora - .nm_artifacts_debug + stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: '31' + FDO_DISTRIBUTION_VERSION: '36' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "fedora:31@container-prep" + - "fedora:36@container-prep" when: manual -t_fedora:32: +t_fedora:38: extends: - .build@template - .fdo.distribution-image@fedora - .nm_artifacts_debug + stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: '32' + FDO_DISTRIBUTION_VERSION: '38' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "fedora:32@container-prep" + - "fedora:38@container-prep" when: manual -t_fedora:33: +t_fedora:30: extends: - .build@template - .fdo.distribution-image@fedora - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '33' + FDO_DISTRIBUTION_VERSION: '30' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "fedora:33@container-prep" + - "fedora:30@container-prep" when: manual -t_fedora:34: +t_fedora:31: extends: - .build@template - .fdo.distribution-image@fedora - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '34' + FDO_DISTRIBUTION_VERSION: '31' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "fedora:34@container-prep" + - "fedora:31@container-prep" when: manual -t_fedora:35: +t_fedora:32: extends: - .build@template - .fdo.distribution-image@fedora - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '35' + FDO_DISTRIBUTION_VERSION: '32' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "fedora:35@container-prep" + - "fedora:32@container-prep" when: manual -t_fedora:36: +t_fedora:33: extends: - .build@template - .fdo.distribution-image@fedora - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '36' + FDO_DISTRIBUTION_VERSION: '33' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "fedora:36@container-prep" + - "fedora:33@container-prep" when: manual -t_fedora:37: +t_fedora:34: extends: - .build@template - .fdo.distribution-image@fedora - - .nm_artifacts + - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '37' + FDO_DISTRIBUTION_VERSION: '34' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "fedora:37@container-prep" + - "fedora:34@container-prep" + when: manual -t_fedora:38: +t_fedora:35: extends: - .build@template - .fdo.distribution-image@fedora - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '38' + FDO_DISTRIBUTION_VERSION: '35' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "fedora:38@container-prep" + - "fedora:35@container-prep" when: manual t_ubuntu:18.04: @@ -796,6 +808,7 @@ t_ubuntu:18.04: - .build@template - .fdo.distribution-image@ubuntu - .nm_artifacts_debug + stage: tier2 variables: FDO_DISTRIBUTION_VERSION: '18.04' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG @@ -808,6 +821,7 @@ t_ubuntu:20.04: - .build@template - .fdo.distribution-image@ubuntu - .nm_artifacts_debug + stage: tier2 variables: FDO_DISTRIBUTION_VERSION: '20.04' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG @@ -820,6 +834,7 @@ t_ubuntu:22.04: - .build@template - .fdo.distribution-image@ubuntu - .nm_artifacts_debug + stage: tier2 variables: FDO_DISTRIBUTION_VERSION: '22.04' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG @@ -832,6 +847,7 @@ t_ubuntu:devel: - .build@template - .fdo.distribution-image@ubuntu - .nm_artifacts_debug + stage: tier2 variables: FDO_DISTRIBUTION_VERSION: 'devel' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG @@ -844,6 +860,7 @@ t_ubuntu:rolling: - .build@template - .fdo.distribution-image@ubuntu - .nm_artifacts_debug + stage: tier2 variables: FDO_DISTRIBUTION_VERSION: 'rolling' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG @@ -851,64 +868,69 @@ t_ubuntu:rolling: - "ubuntu:rolling@container-prep" when: manual -t_debian:9: +t_debian:10: extends: - .build@template - .fdo.distribution-image@debian - .nm_artifacts_debug + stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: '9' + FDO_DISTRIBUTION_VERSION: '10' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG needs: - - "debian:9@container-prep" + - "debian:10@container-prep" when: manual -t_debian:10: +t_debian:11: extends: - .build@template - .fdo.distribution-image@debian - .nm_artifacts_debug + stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: '10' + FDO_DISTRIBUTION_VERSION: '11' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG needs: - - "debian:10@container-prep" + - "debian:11@container-prep" when: manual -t_debian:11: +t_debian:sid: extends: - .build@template - .fdo.distribution-image@debian - .nm_artifacts_debug + stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: '11' + FDO_DISTRIBUTION_VERSION: 'sid' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG needs: - - "debian:11@container-prep" + - "debian:sid@container-prep" when: manual -t_debian:testing: +t_debian:9: extends: - .build@template - .fdo.distribution-image@debian - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: 'testing' + FDO_DISTRIBUTION_VERSION: '9' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG needs: - - "debian:testing@container-prep" + - "debian:9@container-prep" when: manual -t_debian:sid: +t_debian:testing: extends: - .build@template - .fdo.distribution-image@debian - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: 'sid' + FDO_DISTRIBUTION_VERSION: 'testing' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG needs: - - "debian:sid@container-prep" + - "debian:testing@container-prep" when: manual t_centos:7.5.1804: @@ -916,6 +938,7 @@ t_centos:7.5.1804: - .build@template - .fdo.distribution-image@centos - .nm_artifacts_debug + stage: tier2 variables: FDO_DISTRIBUTION_VERSION: '7.5.1804' FDO_DISTRIBUTION_TAG: $CENTOS_TAG @@ -923,88 +946,95 @@ t_centos:7.5.1804: - "centos:7.5.1804@container-prep" when: manual -t_centos:7.6.1810: +t_centos:7.9.2009: extends: - .build@template - .fdo.distribution-image@centos - .nm_artifacts_debug + stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: '7.6.1810' + FDO_DISTRIBUTION_VERSION: '7.9.2009' FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - - "centos:7.6.1810@container-prep" + - "centos:7.9.2009@container-prep" when: manual -t_centos:7.7.1908: +t_centos:8.1.1911: extends: - .build@template - .fdo.distribution-image@centos - .nm_artifacts_debug + stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: '7.7.1908' + FDO_DISTRIBUTION_VERSION: '8.1.1911' FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - - "centos:7.7.1908@container-prep" + - "centos:8.1.1911@container-prep" when: manual -t_centos:7.8.2003: +t_centos:8.3.2011: extends: - .build@template - .fdo.distribution-image@centos - .nm_artifacts_debug + stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: '7.8.2003' + FDO_DISTRIBUTION_VERSION: '8.3.2011' FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - - "centos:7.8.2003@container-prep" + - "centos:8.3.2011@container-prep" when: manual -t_centos:7.9.2009: +t_centos:7.6.1810: extends: - .build@template - .fdo.distribution-image@centos - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '7.9.2009' + FDO_DISTRIBUTION_VERSION: '7.6.1810' FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - - "centos:7.9.2009@container-prep" + - "centos:7.6.1810@container-prep" when: manual -t_centos:8.1.1911: +t_centos:7.7.1908: extends: - .build@template - .fdo.distribution-image@centos - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '8.1.1911' + FDO_DISTRIBUTION_VERSION: '7.7.1908' FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - - "centos:8.1.1911@container-prep" + - "centos:7.7.1908@container-prep" when: manual -t_centos:8.2.2004: +t_centos:7.8.2003: extends: - .build@template - .fdo.distribution-image@centos - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '8.2.2004' + FDO_DISTRIBUTION_VERSION: '7.8.2003' FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - - "centos:8.2.2004@container-prep" + - "centos:7.8.2003@container-prep" when: manual -t_centos:8.3.2011: +t_centos:8.2.2004: extends: - .build@template - .fdo.distribution-image@centos - .nm_artifacts_debug + stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '8.3.2011' + FDO_DISTRIBUTION_VERSION: '8.2.2004' FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - - "centos:8.3.2011@container-prep" + - "centos:8.2.2004@container-prep" when: manual t_alpine:latest: @@ -1012,6 +1042,7 @@ t_alpine:latest: - .build@template - .fdo.distribution-image@alpine - .nm_artifacts_debug + stage: tier2 variables: FDO_DISTRIBUTION_VERSION: 'latest' FDO_DISTRIBUTION_TAG: $ALPINE_TAG @@ -1033,7 +1064,7 @@ check-patch: FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - "fedora:37@container-prep" - stage: test + stage: tier1 script: - date '+%Y%m%d-%H%M%S'; NM_CHECKPATCH_FETCH_UPSTREAM=1 contrib/scripts/checkpatch-feature-branch.sh allow_failure: true @@ -1046,7 +1077,7 @@ check-tree: FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - "fedora:37@container-prep" - stage: test + stage: tier1 script: - date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-python-black-format.sh --check - date '+%Y%m%d-%H%M%S'; git ls-files -z -- 'po/*.po' | xargs -0 -n1 msgfmt -vc diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template index 02b33ff3bc..e06b9210c5 100644 --- a/.gitlab-ci/ci.template +++ b/.gitlab-ci/ci.template @@ -17,17 +17,37 @@ .templates_sha: &template_sha ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2 # see https://docs.gitlab.com/ee/ci/yaml/#includefile +{# Group distros by their common (name,base_type,tag) tuples.#} +{% set distro_groups = [] %} +{% for distro in distributions %} + {% set g = {'name':distro.name,'base_type':distro.base_type,'tag':distro.tag} %} + {% if g not in distro_groups %} + {% do distro_groups.append(g) %} + {% endif %} +{% endfor %} + +{# The "default_distro" builds our pages and is used for check-{tree,patch} tests. It is the first distro with tier 1. #} +{% set default_distro = [] %} +{% for distro in distributions %} + {% if distro.tier == 1 and default_distro|length == 0 %} + {% do default_distro.append(distro) %} + {% endif %} +{% endfor %} +{% set default_distro = default_distro[0] %} + include: -{% for distro in distributions|sort(attribute="name") %} - # {{ distro.name.capitalize() }} container builder template +{% for distro_group in distro_groups|sort(attribute='name') %} + # {{ distro_group.name.capitalize() }} container builder template - project: 'freedesktop/ci-templates' ref: *template_sha - file: '/templates/{{distro.name}}.yml' + file: '/templates/{{distro_group.name}}.yml' {% endfor %} stages: - prep - - test + - tier1 + - tier2 + - tier3 - deploy - triage - container_clean @@ -41,17 +61,17 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". -{% for distro in distributions %} - {{"%-13s"| format(distro.name.upper() + '_TAG:')}}'{{distro.tag}}-{{ +{% for distro_group in distro_groups|sort(attribute='name') %} + {{"%-13s"| format(distro_group.name.upper() + '_TAG:')}}'{{distro_group.tag}}-{{ (ci_fairy.hashfiles('./.gitlab-ci/config.yml', './.gitlab-ci/ci.template', - './.gitlab-ci/' + distro.base_type + '-install.sh', - './contrib/' + distro.base_type + '/REQUIRED_PACKAGES'))[0:12] + './.gitlab-ci/' + distro_group.base_type + '-install.sh', + './contrib/' + distro_group.base_type + '/REQUIRED_PACKAGES'))[0:12] }}' {% endfor %} -{% for distro in distributions %} - {{"%-13s"| format(distro.name.upper() + '_EXEC:')}}'bash .gitlab-ci/{{distro.base_type}}-install.sh' +{% for distro_group in distro_groups|sort(attribute='name') %} + {{"%-13s"| format(distro_group.name.upper() + '_EXEC:')}}'bash .gitlab-ci/{{distro_group.base_type}}-install.sh' {% endfor %} .nm_artifacts: @@ -151,7 +171,6 @@ variables: ################################################################# .build@template: - stage: test script: - env - r=0 @@ -174,12 +193,12 @@ t_{{distro.name}}:{{version}}: extends: - .build@template - .fdo.distribution-image@{{distro.name}} -{% if distro.name == pages_build.name and - version == pages_build.version %} +{% if distro == default_distro %} - .nm_artifacts {% else %} - .nm_artifacts_debug {% endif %} + stage: tier{{distro.tier}} variables: FDO_DISTRIBUTION_VERSION: '{{version}}' FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG @@ -191,7 +210,7 @@ t_{{distro.name}}:{{version}}: {% endif %} needs: - "{{distro.name}}:{{version}}@container-prep" -{% if not version in distro.get('always', []) and (distro.name != pages_build.name or version != pages_build.version) %} +{% if distro.tier > 1 %} when: manual {% endif %} {% endfor %} @@ -205,26 +224,26 @@ t_{{distro.name}}:{{version}}: check-patch: extends: - - .fdo.distribution-image@{{pages_build.name}} + - .fdo.distribution-image@{{default_distro.name}} variables: - FDO_DISTRIBUTION_VERSION: '{{pages_build.version}}' - FDO_DISTRIBUTION_TAG: ${{pages_build.name.upper()}}_TAG + FDO_DISTRIBUTION_VERSION: '{{default_distro.versions[0]}}' + FDO_DISTRIBUTION_TAG: ${{default_distro.name.upper()}}_TAG needs: - - "{{pages_build.name}}:{{pages_build.version}}@container-prep" - stage: test + - "{{default_distro.name}}:{{default_distro.versions[0]}}@container-prep" + stage: tier1 script: - date '+%Y%m%d-%H%M%S'; NM_CHECKPATCH_FETCH_UPSTREAM=1 contrib/scripts/checkpatch-feature-branch.sh allow_failure: true check-tree: extends: - - .fdo.distribution-image@{{pages_build.name}} + - .fdo.distribution-image@{{default_distro.name}} variables: - FDO_DISTRIBUTION_VERSION: '{{pages_build.version}}' - FDO_DISTRIBUTION_TAG: ${{pages_build.name.upper()}}_TAG + FDO_DISTRIBUTION_VERSION: '{{default_distro.versions[0]}}' + FDO_DISTRIBUTION_TAG: ${{default_distro.name.upper()}}_TAG needs: - - "{{pages_build.name}}:{{pages_build.version}}@container-prep" - stage: test + - "{{default_distro.name}}:{{default_distro.versions[0]}}@container-prep" + stage: tier1 script: - date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-python-black-format.sh --check - date '+%Y%m%d-%H%M%S'; git ls-files -z -- 'po/*.po' | xargs -0 -n1 msgfmt -vc @@ -242,9 +261,9 @@ pages: only: - main dependencies: - - t_{{pages_build.name}}:{{pages_build.version}} + - t_{{default_distro.name}}:{{default_distro.versions[0]}} needs: - - t_{{pages_build.name}}:{{pages_build.version}} + - t_{{default_distro.name}}:{{default_distro.versions[0]}} triage:issues: stage: triage diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml index 117785c8c3..7508fec74b 100644 --- a/.gitlab-ci/config.yml +++ b/.gitlab-ci/config.yml @@ -8,7 +8,7 @@ # # We're happy to rebuild all containers when one changes. -.default_tag: &default_tag '2023-01-18.0' +.default_tag: &default_tag '2023-04-11.0' # The list of all distributions we want to create job for. @@ -17,6 +17,21 @@ distributions: - name: fedora tag: *default_tag base_type: fedora + # Tier1 is used to build the pages and check-{tree,patch} + tier: 1 + versions: + - '37' + - name: fedora + tag: *default_tag + base_type: fedora + tier: 2 + versions: + - '36' + - '38' + - name: fedora + tag: *default_tag + base_type: fedora + tier: 3 versions: - '30' - '31' @@ -24,12 +39,10 @@ distributions: - '33' - '34' - '35' - - '36' - - '37' - - '38' - name: ubuntu tag: *default_tag base_type: debian + tier: 2 versions: - '18.04' - '20.04' @@ -39,31 +52,39 @@ distributions: - name: debian tag: *default_tag base_type: debian + tier: 2 versions: - - '9' - '10' - '11' - - 'testing' - 'sid' + - name: debian + tag: *default_tag + base_type: debian + tier: 3 + versions: + - '9' + - 'testing' - name: centos tag: *default_tag base_type: fedora + tier: 2 versions: - '7.5.1804' + - '7.9.2009' + - '8.1.1911' + - '8.3.2011' + - name: centos + tag: *default_tag + base_type: fedora + tier: 3 + versions: - '7.6.1810' - '7.7.1908' - '7.8.2003' - - '7.9.2009' - - '8.1.1911' - '8.2.2004' - - '8.3.2011' - name: alpine tag: *default_tag base_type: alpine + tier: 2 versions: - 'latest' - -# specifies which of the above distros is used as source for pages -pages_build: - name: fedora - version: '37' |