diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c3c36ed81d..3e1de8d458 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -60,11 +60,11 @@ variables: # # This is done by running `ci-fairy generate-template` and possibly bumping # ".default_tag". - ALPINE_TAG: 'tag-77ec3d923fd6' - CENTOS_TAG: 'tag-7a677f4838e1' - DEBIAN_TAG: 'tag-ecad19904683' - FEDORA_TAG: 'tag-7a677f4838e1' - UBUNTU_TAG: 'tag-ecad19904683' + ALPINE_TAG: 'tag-672dcdb2e2bf' + CENTOS_TAG: 'tag-d7d348d344cf' + DEBIAN_TAG: 'tag-217545cfdeb1' + FEDORA_TAG: 'tag-d7d348d344cf' + UBUNTU_TAG: 'tag-217545cfdeb1' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' @@ -102,7 +102,61 @@ variables: # Build a container for each distribution + version. The ci-templates # will re-use the containers if the tag doesn't change. -tier1:fedora:41@prep: +tier1:fedora:42@prep: + extends: + - .fdo.container-build@fedora + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: '42' + FDO_DISTRIBUTION_TAG: $FEDORA_TAG + FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' || $SCHEDULED_PIPELINE_NAME == "weekly" + +tier2:ubuntu:25.04@prep: + extends: + - .fdo.container-build@ubuntu + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: '25.04' + FDO_DISTRIBUTION_TAG: $UBUNTU_TAG + FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier2:debian:13@prep: + extends: + - .fdo.container-build@debian + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: '13' + FDO_DISTRIBUTION_TAG: $DEBIAN_TAG + FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier2:alpine:3.22@prep: + extends: + - .fdo.container-build@alpine + stage: prep + variables: + GIT_STRATEGY: none + FDO_DISTRIBUTION_VERSION: '3.22' + FDO_DISTRIBUTION_TAG: $ALPINE_TAG + FDO_DISTRIBUTION_EXEC: $ALPINE_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier3:fedora:41@prep: extends: - .fdo.container-build@fedora stage: prep @@ -111,116 +165,6 @@ tier1:fedora:41@prep: FDO_DISTRIBUTION_VERSION: '41' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' || $SCHEDULED_PIPELINE_NAME == "weekly" - -tier2:fedora:rawhide@prep: - extends: - - .fdo.container-build@fedora - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: 'rawhide' - FDO_DISTRIBUTION_TAG: $FEDORA_TAG - FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - when: manual - allow_failure: true - -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 - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - when: manual - allow_failure: true - -tier2:ubuntu:devel@prep: - extends: - - .fdo.container-build@ubuntu - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: 'devel' - FDO_DISTRIBUTION_TAG: $UBUNTU_TAG - FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - when: manual - allow_failure: true - -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 - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - when: manual - allow_failure: true - -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 - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - when: manual - allow_failure: true - -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 - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - when: manual - allow_failure: true - -tier3:fedora:40@prep: - extends: - - .fdo.container-build@fedora - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '40' - FDO_DISTRIBUTION_TAG: $FEDORA_TAG - FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - when: manual - allow_failure: true - -tier3:ubuntu:24.10@prep: - extends: - - .fdo.container-build@ubuntu - stage: prep - variables: - GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '24.10' - FDO_DISTRIBUTION_TAG: $UBUNTU_TAG - FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC rules: - if: $CI_PIPELINE_SOURCE != 'schedule' when: manual @@ -254,20 +198,6 @@ tier3:ubuntu:22.04@prep: when: manual allow_failure: true -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 - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - when: manual - allow_failure: true - tier3:debian:12@prep: extends: - .fdo.container-build@debian @@ -324,15 +254,29 @@ tier3:alpine:3.19@prep: when: manual allow_failure: true -tier3:alpine:3.18@prep: +tier3:centos:stream10@prep: extends: - - .fdo.container-build@alpine + - .fdo.container-build@centos stage: prep variables: GIT_STRATEGY: none - FDO_DISTRIBUTION_VERSION: '3.18' - FDO_DISTRIBUTION_TAG: $ALPINE_TAG - FDO_DISTRIBUTION_EXEC: $ALPINE_EXEC + FDO_DISTRIBUTION_VERSION: 'stream10' + FDO_DISTRIBUTION_TAG: $CENTOS_TAG + FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + when: manual + allow_failure: true + +tier3: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 rules: - if: $CI_PIPELINE_SOURCE != 'schedule' when: manual @@ -354,7 +298,7 @@ tier3:alpine:3.18@prep: dependencies: [] -t_fedora:41: +t_fedora:42: extends: - .build@template - .fdo.distribution-image@fedora @@ -370,122 +314,66 @@ t_fedora:41: - tarball - subtree variables: - FDO_DISTRIBUTION_VERSION: '41' + FDO_DISTRIBUTION_VERSION: '42' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier1:fedora:41@prep" + - "tier1:fedora:42@prep" rules: - if: $CI_PIPELINE_SOURCE != 'schedule' -t_fedora:rawhide: - extends: - - .build@template - - .fdo.distribution-image@fedora - - .nm_artifacts_debug - stage: tier2 - variables: - FDO_DISTRIBUTION_VERSION: 'rawhide' - FDO_DISTRIBUTION_TAG: $FEDORA_TAG - needs: - - "tier2:fedora:rawhide@prep" - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - -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" - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - -t_ubuntu:devel: +t_ubuntu:25.04: extends: - .build@template - .fdo.distribution-image@ubuntu - .nm_artifacts_debug stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: 'devel' + FDO_DISTRIBUTION_VERSION: '25.04' FDO_DISTRIBUTION_TAG: $UBUNTU_TAG needs: - - "tier2:ubuntu:devel@prep" + - "tier2:ubuntu:25.04@prep" rules: - if: $CI_PIPELINE_SOURCE != 'schedule' -t_debian:testing: +t_debian:13: extends: - .build@template - .fdo.distribution-image@debian - .nm_artifacts_debug stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: 'testing' + FDO_DISTRIBUTION_VERSION: '13' FDO_DISTRIBUTION_TAG: $DEBIAN_TAG needs: - - "tier2:debian:testing@prep" + - "tier2:debian:13@prep" rules: - if: $CI_PIPELINE_SOURCE != 'schedule' -t_debian:sid: - extends: - - .build@template - - .fdo.distribution-image@debian - - .nm_artifacts_debug - stage: tier2 - variables: - FDO_DISTRIBUTION_VERSION: 'sid' - FDO_DISTRIBUTION_TAG: $DEBIAN_TAG - needs: - - "tier2:debian:sid@prep" - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - -t_alpine:edge: +t_alpine:3.22: extends: - .build@template - .fdo.distribution-image@alpine - .nm_artifacts_debug stage: tier2 variables: - FDO_DISTRIBUTION_VERSION: 'edge' + FDO_DISTRIBUTION_VERSION: '3.22' FDO_DISTRIBUTION_TAG: $ALPINE_TAG needs: - - "tier2:alpine:edge@prep" + - "tier2:alpine:3.22@prep" rules: - if: $CI_PIPELINE_SOURCE != 'schedule' -t_fedora:40: +t_fedora:41: extends: - .build@template - .fdo.distribution-image@fedora - .nm_artifacts_debug stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '40' + FDO_DISTRIBUTION_VERSION: '41' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier3:fedora:40@prep" - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - -t_ubuntu:24.10: - extends: - - .build@template - - .fdo.distribution-image@ubuntu - - .nm_artifacts_debug - stage: tier3 - variables: - FDO_DISTRIBUTION_VERSION: '24.10' - FDO_DISTRIBUTION_TAG: $UBUNTU_TAG - needs: - - "tier3:ubuntu:24.10@prep" + - "tier3:fedora:41@prep" rules: - if: $CI_PIPELINE_SOURCE != 'schedule' @@ -517,20 +405,6 @@ t_ubuntu:22.04: rules: - if: $CI_PIPELINE_SOURCE != 'schedule' -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" - rules: - - if: $CI_PIPELINE_SOURCE != 'schedule' - t_debian:12: extends: - .build@template @@ -587,17 +461,31 @@ t_alpine:3.19: rules: - if: $CI_PIPELINE_SOURCE != 'schedule' -t_alpine:3.18: +t_centos:stream10: extends: - .build@template - - .fdo.distribution-image@alpine + - .fdo.distribution-image@centos - .nm_artifacts_debug stage: tier3 variables: - FDO_DISTRIBUTION_VERSION: '3.18' - FDO_DISTRIBUTION_TAG: $ALPINE_TAG + FDO_DISTRIBUTION_VERSION: 'stream10' + FDO_DISTRIBUTION_TAG: $CENTOS_TAG needs: - - "tier3:alpine:3.18@prep" + - "tier3:centos:stream10@prep" + rules: + - if: $CI_PIPELINE_SOURCE != 'schedule' + +t_centos:stream9: + extends: + - .build@template + - .fdo.distribution-image@centos + - .nm_artifacts_debug + stage: tier3 + variables: + FDO_DISTRIBUTION_VERSION: 'stream9' + FDO_DISTRIBUTION_TAG: $CENTOS_TAG + needs: + - "tier3:centos:stream9@prep" rules: - if: $CI_PIPELINE_SOURCE != 'schedule' @@ -611,10 +499,10 @@ check-patch: extends: - .fdo.distribution-image@fedora variables: - FDO_DISTRIBUTION_VERSION: '41' + FDO_DISTRIBUTION_VERSION: '42' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier1:fedora:41@prep" + - "tier1:fedora:42@prep" rules: - if: $CI_PIPELINE_SOURCE != 'schedule' stage: tier1 @@ -626,10 +514,10 @@ check-tree: extends: - .fdo.distribution-image@fedora variables: - FDO_DISTRIBUTION_VERSION: '41' + FDO_DISTRIBUTION_VERSION: '42' FDO_DISTRIBUTION_TAG: $FEDORA_TAG needs: - - "tier1:fedora:41@prep" + - "tier1:fedora:42@prep" rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH allow_failure: true @@ -659,9 +547,9 @@ pages: when: never - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'main' dependencies: - - "t_fedora:41: [meson+gcc+docs+valgrind]" + - "t_fedora:42: [meson+gcc+docs+valgrind]" needs: - - "t_fedora:41: [meson+gcc+docs+valgrind]" + - "t_fedora:42: [meson+gcc+docs+valgrind]" triage:issues: stage: triage @@ -678,11 +566,11 @@ coverity: extends: - .fdo.distribution-image@fedora variables: - FDO_DISTRIBUTION_VERSION: '41' + FDO_DISTRIBUTION_VERSION: '42' FDO_DISTRIBUTION_TAG: $FEDORA_TAG stage: coverity needs: - - "tier1:fedora:41@prep" + - "tier1:fedora:42@prep" rules: - if: $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULED_PIPELINE_NAME == "weekly" script: diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml index 39607308ab..956d363a94 100644 --- a/.gitlab-ci/config.yml +++ b/.gitlab-ci/config.yml @@ -23,45 +23,34 @@ distributions: - name: fedora tier: 1 versions: - - '41' + - '42' # TIER 2: distribution versions that will or might use the current NM version. # Run when doing a release. - - name: fedora - tier: 2 - versions: - - 'rawhide' - - name: centos - tier: 2 - versions: - - 'stream9' - name: ubuntu tier: 2 versions: - - 'devel' + - '25.04' - name: debian tier: 2 versions: - - 'testing' - - 'sid' + - '13' - name: alpine tier: 2 versions: - - 'edge' + - '3.22' # 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: - - '40' + - '41' - name: ubuntu tier: 3 versions: - - '24.10' - '24.04' - '22.04' - - '20.04' - name: debian tier: 3 versions: @@ -72,4 +61,8 @@ distributions: - '3.21' - '3.20' - '3.19' - - '3.18' \ No newline at end of file + - name: centos + tier: 3 + versions: + - 'stream10' + - 'stream9' diff --git a/.gitlab-ci/fedora-install.sh b/.gitlab-ci/fedora-install.sh index 50f9710fc7..8f49d9697b 100755 --- a/.gitlab-ci/fedora-install.sh +++ b/.gitlab-ci/fedora-install.sh @@ -13,6 +13,8 @@ if [ $IS_CENTOS = 1 ]; then CENTOS_VERSION=8 elif grep -q '^VERSION_ID=.*\<9\>' /etc/os-release ; then CENTOS_VERSION=9 + elif grep -q '^VERSION_ID=.*\<10\>' /etc/os-release ; then + CENTOS_VERSION=10 else exit 1 fi @@ -33,6 +35,11 @@ fi dnf install -y 'dnf-command(config-manager)' dnf config-manager --set-enabled crb curl https://copr.fedorainfracloud.org/coprs/nmstate/nm-build-deps/repo/epel-9/nmstate-nm-build-deps-epel-9.repo > /etc/yum.repos.d/nmstate-nm-build-deps-epel-9.repo + elif [ "$CENTOS_VERSION" = stream10 ]; then + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm + dnf install -y 'dnf-command(config-manager)' + dnf config-manager --set-enabled crb + curl https://copr.fedorainfracloud.org/coprs/nmstate/nm-build-deps/repo/epel-10/nmstate-nm-build-deps-epel-10.repo > /etc/yum.repos.d/nmstate-nm-build-deps-epel-10.repo else exit 1 fi diff --git a/.gitlab-ci/run-test.sh b/.gitlab-ci/run-test.sh index 265dbd54f0..44405558c8 100755 --- a/.gitlab-ci/run-test.sh +++ b/.gitlab-ci/run-test.sh @@ -17,10 +17,17 @@ grep -q '^NAME=.*\(CentOS\)' /etc/os-release && IS_CENTOS=1 grep -q '^NAME=.*\(Fedora\)' /etc/os-release && IS_FEDORA=1 grep -q '^NAME=.*\(Alpine\)' /etc/os-release && IS_ALPINE=1 -IS_CENTOS_7=0 if [ $IS_CENTOS = 1 ]; then - if grep -q '^VERSION_ID=.*\<7\>' /etc/os-release ; then - IS_CENTOS_7=1 + CENTOS_VER_LINE="$(grep '^VERSION_ID=' /etc/os-release)" + if [[ $CENTOS_VER_LINE =~ ^VERSION_ID=\"?([0-9]+)\"?$ ]]; then + CENTOS_VER="${BASH_REMATCH[1]}" + else + echo "Error detecting CentOS Stream version" >&2 + exit 1 + fi + + if (( $CENTOS_VER >= 10 )); then + export WITH_LIBTEAM=0 fi fi diff --git a/contrib/alpine/REQUIRED_PACKAGES b/contrib/alpine/REQUIRED_PACKAGES index 358214fd0f..f1daa84f18 100755 --- a/contrib/alpine/REQUIRED_PACKAGES +++ b/contrib/alpine/REQUIRED_PACKAGES @@ -11,6 +11,7 @@ apk add \ 'clang' \ 'curl-dev' \ 'dbus' \ + 'dbus-dev' \ 'elogind-dev' \ 'eudev-dev' \ 'gcc' \ diff --git a/contrib/scripts/nm-ci-run.sh b/contrib/scripts/nm-ci-run.sh index 3864620f82..8d7625b6a4 100755 --- a/contrib/scripts/nm-ci-run.sh +++ b/contrib/scripts/nm-ci-run.sh @@ -79,6 +79,14 @@ if [ "$CC" != gcc ]; then _WITH_CRYPTO=nss fi +if [ "$WITH_LIBTEAM" != "" ]; then + if _is_true "$WITH_LIBTEAM"; then + _WITH_LIBTEAM="true" + else + _WITH_LIBTEAM="false" + fi +fi + if [ "$WITH_DOCS" != "" ]; then if _is_true "$WITH_DOCS"; then _WITH_DOCS="true"