From ff101ada3ab65ce452f0ef235e486432fd9160fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Thu, 4 Apr 2024 12:15:06 +0200 Subject: [PATCH] ci: update distributions that we test in the CI We had an agreement on what distributions should we test and when. We'll test in Tier 2 those distros that can potentially use the current version of NM and in Tier 3 those distros that are still maintained (not EOL'd). So, Tier 2 is to catch errors that might be severe because might be blocking for the distributions planning to use the current NM version, they must be fixed ASAP, before doing the release if possible. These "distribution versions" will be different for main branch than for stable branches: - Debian 12 uses NM-1.42, so Debian 12 should be Tier 2 in the branch nm-1-42. - However, Debian 12 will never use newer stable versions, so it should be Tier 3 in main branch. We want to run the Tier 3 tests even if those distros won't use newer vesions of NM because they are useful to test NM compilation with older compilers and tools. Fixing failures here might not be considered urgent, though. To save resources from Freedesktop we'll run Tier 1 on every MR and Tiers 2 and 3 before doing a release, or on demand if we need. --- .gitlab-ci.yml | 456 ++++++++++++++++++++++++------------------ .gitlab-ci/config.yml | 66 +++--- 2 files changed, 305 insertions(+), 217 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c283cc2769..8e2a4e171a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,11 +57,11 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". - ALPINE_TAG: 'tag-84d008505f54' - CENTOS_TAG: 'tag-eb0b116664f7' - DEBIAN_TAG: 'tag-183208b2b592' - FEDORA_TAG: 'tag-eb0b116664f7' - UBUNTU_TAG: 'tag-183208b2b592' + ALPINE_TAG: 'tag-ec0f564800e3' + CENTOS_TAG: 'tag-b114f45d4a4e' + DEBIAN_TAG: 'tag-318ea804326f' + FEDORA_TAG: 'tag-b114f45d4a4e' + UBUNTU_TAG: 'tag-318ea804326f' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' @@ -97,28 +97,7 @@ variables: # Build a container for each distribution + version. The ci-templates # will re-use the containers if the tag doesn't change. -tier1:fedora:39@prep: - extends: - - .fdo.container-build@fedora - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '39' - FDO_DISTRIBUTION_TAG: $FEDORA_TAG - FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC - -tier2:fedora:38@prep: - extends: - - .fdo.container-build@fedora - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '38' - FDO_DISTRIBUTION_TAG: $FEDORA_TAG - FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC - when: manual - -tier2:fedora:40@prep: +tier1:fedora:40@prep: extends: - .fdo.container-build@fedora stage: prep @@ -127,28 +106,47 @@ tier2:fedora:40@prep: FDO_DISTRIBUTION_VERSION: '40' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC - when: manual -tier2:ubuntu:20.04@prep: +tier1:fedora:rawhide@prep: extends: - - .fdo.container-build@ubuntu + - .fdo.container-build@fedora stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '20.04' - FDO_DISTRIBUTION_TAG: $UBUNTU_TAG - FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC - when: manual + FDO_DISTRIBUTION_VERSION: 'rawhide' + FDO_DISTRIBUTION_TAG: $FEDORA_TAG + FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC -tier2:ubuntu:22.04@prep: +tier1:centos:stream9@prep: extends: - - .fdo.container-build@ubuntu + - .fdo.container-build@centos stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '22.04' - FDO_DISTRIBUTION_TAG: $UBUNTU_TAG - FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC + FDO_DISTRIBUTION_VERSION: 'stream9' + FDO_DISTRIBUTION_TAG: $CENTOS_TAG + FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC + +tier2:debian:sid@prep: + extends: + - .fdo.container-build@debian + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: 'sid' + FDO_DISTRIBUTION_TAG: $DEBIAN_TAG + FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC + when: manual + +tier2:debian:testing@prep: + extends: + - .fdo.container-build@debian + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: 'testing' + FDO_DISTRIBUTION_TAG: $DEBIAN_TAG + FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC when: manual tier2:ubuntu:devel@prep: @@ -162,7 +160,62 @@ tier2:ubuntu:devel@prep: FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC when: manual -tier2:ubuntu:rolling@prep: +tier2:alpine:edge@prep: + extends: + - .fdo.container-build@alpine + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: 'edge' + FDO_DISTRIBUTION_TAG: $ALPINE_TAG + FDO_DISTRIBUTION_EXEC: $ALPINE_EXEC + when: manual + +tier3:fedora:39@prep: + extends: + - .fdo.container-build@fedora + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: '39' + FDO_DISTRIBUTION_TAG: $FEDORA_TAG + FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC + when: manual + +tier3:ubuntu:20.04@prep: + extends: + - .fdo.container-build@ubuntu + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: '20.04' + FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC + when: manual + +tier3:ubuntu:22.04@prep: + extends: + - .fdo.container-build@ubuntu + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: '22.04' + FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC + when: manual + +tier3:ubuntu:24.04@prep: + extends: + - .fdo.container-build@ubuntu + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: '24.04' + FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC + when: manual + +tier3:ubuntu:rolling@prep: extends: - .fdo.container-build@ubuntu stage: prep @@ -173,51 +226,29 @@ tier2:ubuntu:rolling@prep: FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC when: manual -tier2:debian:10@prep: +tier3:debian:stable@prep: extends: - .fdo.container-build@debian stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '10' + FDO_DISTRIBUTION_VERSION: 'stable' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC when: manual -tier2:debian:11@prep: +tier3:debian:oldstable@prep: extends: - .fdo.container-build@debian stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '11' + FDO_DISTRIBUTION_VERSION: 'oldstable' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC when: manual -tier2:debian:sid@prep: - extends: - - .fdo.container-build@debian - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: 'sid' - FDO_DISTRIBUTION_TAG: $DEBIAN_TAG - FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC - when: manual - -tier3:debian:testing@prep: - extends: - - .fdo.container-build@debian - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: 'testing' - FDO_DISTRIBUTION_TAG: $DEBIAN_TAG - FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC - when: manual - -tier2:centos:stream8@prep: +tier3:centos:stream8@prep: extends: - .fdo.container-build@centos stage: prep @@ -228,18 +259,7 @@ tier2:centos:stream8@prep: FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC when: manual -tier2:centos:stream9@prep: - extends: - - .fdo.container-build@centos - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: 'stream9' - FDO_DISTRIBUTION_TAG: $CENTOS_TAG - FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC - when: manual - -tier2:alpine:latest@prep: +tier3:alpine:latest@prep: extends: - .fdo.container-build@alpine stage: prep @@ -266,7 +286,7 @@ tier2:alpine:latest@prep: dependencies: [] -t_fedora:39: +t_fedora:40: extends: - .build@template - .fdo.distribution-image@fedora @@ -285,107 +305,61 @@ t_fedora:39: - tarball+meson - tarball - subtree - variables: - FDO_DISTRIBUTION_VERSION: '39' - FDO_DISTRIBUTION_TAG: $FEDORA_TAG - needs: - - "tier1:fedora:39@prep" - -t_fedora:38: - extends: - - .build@template - - .fdo.distribution-image@fedora - - .nm_artifacts_debug - stage: tier2 - variables: - FDO_DISTRIBUTION_VERSION: '38' - FDO_DISTRIBUTION_TAG: $FEDORA_TAG - needs: - - "tier2:fedora:38@prep" - -t_fedora:40: - extends: - - .build@template - - .fdo.distribution-image@fedora - - .nm_artifacts_debug - stage: tier2 variables: FDO_DISTRIBUTION_VERSION: '40' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier2:fedora:40@prep" + - "tier1:fedora:40@prep" -t_ubuntu:20.04: +t_fedora:rawhide: extends: - .build@template - - .fdo.distribution-image@ubuntu - - .nm_artifacts_debug - stage: tier2 + - .fdo.distribution-image@fedora + - .nm_artifacts + stage: tier1 + parallel: + matrix: + - NM_TEST_SELECT_RUN: + - autotools+gcc+docs+valgrind + - meson+gcc+docs+valgrind + - autotools+clang + - meson+clang + - rpm+autotools + - rpm+meson + - tarball+autotools + - tarball+meson + - tarball + - subtree variables: - FDO_DISTRIBUTION_VERSION: '20.04' - FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + FDO_DISTRIBUTION_VERSION: 'rawhide' + FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier2:ubuntu:20.04@prep" + - "tier1:fedora:rawhide@prep" -t_ubuntu:22.04: +t_centos:stream9: extends: - .build@template - - .fdo.distribution-image@ubuntu + - .fdo.distribution-image@centos - .nm_artifacts_debug - stage: tier2 + stage: tier1 + parallel: + matrix: + - NM_TEST_SELECT_RUN: + - autotools+gcc+docs+valgrind + - meson+gcc+docs+valgrind + - autotools+clang + - meson+clang + - rpm+autotools + - rpm+meson + - tarball+autotools + - tarball+meson + - tarball + - subtree variables: - FDO_DISTRIBUTION_VERSION: '22.04' - FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + FDO_DISTRIBUTION_VERSION: 'stream9' + FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - - "tier2:ubuntu:22.04@prep" - -t_ubuntu:devel: - extends: - - .build@template - - .fdo.distribution-image@ubuntu - - .nm_artifacts_debug - stage: tier2 - variables: - FDO_DISTRIBUTION_VERSION: 'devel' - FDO_DISTRIBUTION_TAG: $UBUNTU_TAG - needs: - - "tier2:ubuntu:devel@prep" - -t_ubuntu:rolling: - extends: - - .build@template - - .fdo.distribution-image@ubuntu - - .nm_artifacts_debug - stage: tier2 - variables: - FDO_DISTRIBUTION_VERSION: 'rolling' - FDO_DISTRIBUTION_TAG: $UBUNTU_TAG - needs: - - "tier2:ubuntu:rolling@prep" - -t_debian:10: - extends: - - .build@template - - .fdo.distribution-image@debian - - .nm_artifacts_debug - stage: tier2 - variables: - FDO_DISTRIBUTION_VERSION: '10' - FDO_DISTRIBUTION_TAG: $DEBIAN_TAG - needs: - - "tier2:debian:10@prep" - -t_debian:11: - extends: - - .build@template - - .fdo.distribution-image@debian - - .nm_artifacts_debug - stage: tier2 - variables: - FDO_DISTRIBUTION_VERSION: '11' - FDO_DISTRIBUTION_TAG: $DEBIAN_TAG - needs: - - "tier2:debian:11@prep" + - "tier1:centos:stream9@prep" t_debian:sid: extends: @@ -404,48 +378,144 @@ t_debian:testing: - .build@template - .fdo.distribution-image@debian - .nm_artifacts_debug - stage: tier3 + stage: tier2 variables: FDO_DISTRIBUTION_VERSION: 'testing' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG needs: - - "tier3:debian:testing@prep" + - "tier2:debian:testing@prep" -t_centos:stream8: +t_ubuntu:devel: extends: - .build@template - - .fdo.distribution-image@centos + - .fdo.distribution-image@ubuntu - .nm_artifacts_debug stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: 'stream8' - FDO_DISTRIBUTION_TAG: $CENTOS_TAG + FDO_DISTRIBUTION_VERSION: 'devel' + FDO_DISTRIBUTION_TAG: $UBUNTU_TAG needs: - - "tier2:centos:stream8@prep" + - "tier2:ubuntu:devel@prep" -t_centos:stream9: - extends: - - .build@template - - .fdo.distribution-image@centos - - .nm_artifacts_debug - stage: tier2 - variables: - FDO_DISTRIBUTION_VERSION: 'stream9' - FDO_DISTRIBUTION_TAG: $CENTOS_TAG - needs: - - "tier2:centos:stream9@prep" - -t_alpine:latest: +t_alpine:edge: extends: - .build@template - .fdo.distribution-image@alpine - .nm_artifacts_debug stage: tier2 + variables: + FDO_DISTRIBUTION_VERSION: 'edge' + FDO_DISTRIBUTION_TAG: $ALPINE_TAG + needs: + - "tier2:alpine:edge@prep" + +t_fedora:39: + extends: + - .build@template + - .fdo.distribution-image@fedora + - .nm_artifacts_debug + stage: tier3 + variables: + FDO_DISTRIBUTION_VERSION: '39' + FDO_DISTRIBUTION_TAG: $FEDORA_TAG + needs: + - "tier3:fedora:39@prep" + +t_ubuntu:20.04: + extends: + - .build@template + - .fdo.distribution-image@ubuntu + - .nm_artifacts_debug + stage: tier3 + variables: + FDO_DISTRIBUTION_VERSION: '20.04' + FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + needs: + - "tier3:ubuntu:20.04@prep" + +t_ubuntu:22.04: + extends: + - .build@template + - .fdo.distribution-image@ubuntu + - .nm_artifacts_debug + stage: tier3 + variables: + FDO_DISTRIBUTION_VERSION: '22.04' + FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + needs: + - "tier3:ubuntu:22.04@prep" + +t_ubuntu:24.04: + extends: + - .build@template + - .fdo.distribution-image@ubuntu + - .nm_artifacts_debug + stage: tier3 + variables: + FDO_DISTRIBUTION_VERSION: '24.04' + FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + needs: + - "tier3:ubuntu:24.04@prep" + +t_ubuntu:rolling: + extends: + - .build@template + - .fdo.distribution-image@ubuntu + - .nm_artifacts_debug + stage: tier3 + variables: + FDO_DISTRIBUTION_VERSION: 'rolling' + FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + needs: + - "tier3:ubuntu:rolling@prep" + +t_debian:stable: + extends: + - .build@template + - .fdo.distribution-image@debian + - .nm_artifacts_debug + stage: tier3 + variables: + FDO_DISTRIBUTION_VERSION: 'stable' + FDO_DISTRIBUTION_TAG: $DEBIAN_TAG + needs: + - "tier3:debian:stable@prep" + +t_debian:oldstable: + extends: + - .build@template + - .fdo.distribution-image@debian + - .nm_artifacts_debug + stage: tier3 + variables: + FDO_DISTRIBUTION_VERSION: 'oldstable' + FDO_DISTRIBUTION_TAG: $DEBIAN_TAG + needs: + - "tier3:debian:oldstable@prep" + +t_centos:stream8: + extends: + - .build@template + - .fdo.distribution-image@centos + - .nm_artifacts_debug + stage: tier3 + variables: + FDO_DISTRIBUTION_VERSION: 'stream8' + FDO_DISTRIBUTION_TAG: $CENTOS_TAG + needs: + - "tier3:centos:stream8@prep" + +t_alpine:latest: + extends: + - .build@template + - .fdo.distribution-image@alpine + - .nm_artifacts_debug + stage: tier3 variables: FDO_DISTRIBUTION_VERSION: 'latest' FDO_DISTRIBUTION_TAG: $ALPINE_TAG needs: - - "tier2:alpine:latest@prep" + - "tier3:alpine:latest@prep" ################################################################# # # @@ -457,10 +527,10 @@ check-patch: extends: - .fdo.distribution-image@fedora variables: - FDO_DISTRIBUTION_VERSION: '39' + FDO_DISTRIBUTION_VERSION: '40' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier1:fedora:39@prep" + - "tier1:fedora:40@prep" stage: tier1 script: - date '+%Y%m%d-%H%M%S'; NM_CHECKPATCH_FETCH_UPSTREAM=1 contrib/scripts/checkpatch-feature-branch.sh @@ -470,10 +540,10 @@ check-tree: extends: - .fdo.distribution-image@fedora variables: - FDO_DISTRIBUTION_VERSION: '39' + FDO_DISTRIBUTION_VERSION: '40' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier1:fedora:39@prep" + - "tier1:fedora:40@prep" stage: tier1 script: - date '+%Y%m%d-%H%M%S'; clang-format --version @@ -495,9 +565,9 @@ pages: only: - main dependencies: - - "t_fedora:39: [autotools+gcc+docs+valgrind]" + - "t_fedora:40: [autotools+gcc+docs+valgrind]" needs: - - "t_fedora:39: [autotools+gcc+docs+valgrind]" + - "t_fedora:40: [autotools+gcc+docs+valgrind]" triage:issues: stage: triage diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml index 3e83f48073..4e97ecf187 100644 --- a/.gitlab-ci/config.yml +++ b/.gitlab-ci/config.yml @@ -18,39 +18,57 @@ base_types: # The list of all distributions we want to create job for. distributions: + # TIER 1: CI run for all MRs. + # The first tier:1 in the list is used to build the pages and check-{tree,patch}. - name: fedora - # The first tier:1 in the list is used to build the pages and check-{tree,patch} tier: 1 versions: - - '39' - - name: fedora + - '40' + - rawhide + - name: centos + tier: 1 + versions: + - 'stream9' + + # TIER 2: distribution versions that will or might use the current NM version. + # Run when doing a release. + - name: debian tier: 2 versions: - - '38' - - '40' + - sid + - testing - name: ubuntu tier: 2 versions: - - '20.04' - - '22.04' - - 'devel' - - 'rolling' - - name: debian - tier: 2 - versions: - - '10' - - '11' - - 'sid' - - name: debian - tier: 3 - versions: - - 'testing' - - name: centos - tier: 2 - versions: - - 'stream8' - - 'stream9' + - devel - name: alpine tier: 2 + versions: + - edge + + # TIER 3: distribution versions not in EOL but don't use the current NM version. + # Run when doing a release, but a failure won't be blocking for the release. + - name: fedora + tier: 3 + versions: + - '39' + - name: ubuntu + tier: 3 + versions: + - '20.04' + - '22.04' + - '24.04' + - 'rolling' # latest non-LTS + - name: debian + tier: 3 + versions: + - 'stable' + - 'oldstable' + - name: centos + tier: 3 + versions: + - 'stream8' + - name: alpine + tier: 3 versions: - 'latest'