From 5c08f8d3d89ebfba16384040dce485a7bf0b01bd Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 16 Jul 2026 00:51:03 -0400 Subject: [PATCH 1/3] gitlab-ci: make `needs` explicitly empty where possible In a pipeline with the `prep` stage, all `build` stage jobs without an explicit `needs` list implicitly `needs` all `prep` job artifacts. Make these explicitly empty so that the jobs can start without waiting for and downloading the `prep` artifacts which are then ignored anyways. --- .gitlab-ci.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index da57dfc29c..ada3cf6d28 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -91,6 +91,7 @@ b:version-update: variables: CMAKE_CI_JOB_UPDATES_VERSION: "true" CMAKE_CI_JOB_NO_MR: "true" + needs: [] # Documentation builds @@ -120,6 +121,7 @@ l:spellcheck: - .cmake_spellcheck_linux - .linux_x86_64_tags - .rules + needs: [] l:iwyu-debian13: extends: @@ -128,6 +130,7 @@ l:iwyu-debian13: - .linux_x86_64_tags - .cmake_cdash_artifacts - .rules + needs: [] l:tidy-fedora44: extends: @@ -137,6 +140,7 @@ l:tidy-fedora44: - .linux_x86_64_tags - .cmake_cdash_artifacts - .rules + needs: [] l:pvs-studio-fedora44: extends: @@ -149,6 +153,7 @@ l:pvs-studio-fedora44: CMAKE_CI_JOB_CONTINUOUS: "true" CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_NO_MR: "true" + needs: [] l:sphinx-fedora44: extends: @@ -160,6 +165,7 @@ l:sphinx-fedora44: variables: CMAKE_CI_JOB_CONTINUOUS: "true" CMAKE_CI_JOB_HELP: "true" + needs: [] l:clang-analyzer-fedora44: extends: @@ -169,6 +175,7 @@ l:clang-analyzer-fedora44: - .rules variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] l:clang-fuzzing-fedora44: extends: @@ -176,6 +183,7 @@ l:clang-fuzzing-fedora44: - .cmake_build_linux - .linux_x86_64_tags - .rules + needs: [] l:clazy-fedora44: extends: @@ -183,6 +191,7 @@ l:clazy-fedora44: - .cmake_build_linux - .linux_x86_64_tags - .rules + needs: [] # Coverage builds @@ -196,6 +205,7 @@ b:fedora44-gcc-gcov: variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] t:fedora44-gcc-gcov: extends: @@ -234,6 +244,7 @@ b:fedora44-bullseye-coverage: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_NO_MR: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] t:fedora44-bullseye-coverage: extends: @@ -275,6 +286,7 @@ b:centos7-x86_64: variables: CMAKE_CI_ARTIFACTS_NAME: "artifacts-centos7-x86_64" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] b:centos8-aarch64: extends: @@ -287,6 +299,7 @@ b:centos8-aarch64: CMAKE_CI_ARTIFACTS_NAME: "artifacts-centos8-aarch64" CMAKE_CI_JOB_NO_MR: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] t:debian13-ninja: extends: @@ -691,6 +704,7 @@ b:fedora44-ninja: variables: CMAKE_CI_JOB_CONTINUOUS: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] b:fedora44-makefiles-symlinked: extends: @@ -702,6 +716,7 @@ b:fedora44-makefiles-symlinked: variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] b:debian13-makefiles-inplace: extends: @@ -712,6 +727,7 @@ b:debian13-makefiles-inplace: variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] b:debian13-extdeps: extends: @@ -722,6 +738,7 @@ b:debian13-extdeps: variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] b:debian13-aarch64-extdeps: extends: @@ -732,6 +749,7 @@ b:debian13-aarch64-extdeps: variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] b:fedora44-extdeps: extends: @@ -742,6 +760,7 @@ b:fedora44-extdeps: variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] t:fedora44-ninja: extends: @@ -966,6 +985,7 @@ b:fedora44-asan: variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] t:fedora44-asan: extends: @@ -1004,6 +1024,7 @@ b:macos-x86_64-ninja: variables: CMAKE_CI_JOB_NO_MR: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] b:macos-arm64-ninja: extends: @@ -1015,6 +1036,7 @@ b:macos-arm64-ninja: variables: CMAKE_CI_JOB_CONTINUOUS: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] b:macos-arm64-ninja-symlinked: extends: @@ -1026,6 +1048,7 @@ b:macos-arm64-ninja-symlinked: variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] b:macos-arm64-pch: extends: @@ -1036,6 +1059,7 @@ b:macos-arm64-pch: variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] t:macos-x86_64-ninja: extends: @@ -1084,6 +1108,7 @@ b:macos-x86_64-makefiles: - .rules variables: CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] t:macos-x86_64-makefiles: extends: @@ -1258,6 +1283,7 @@ b:windows-vs2026-x64-ninja: variables: CMAKE_CI_JOB_CONTINUOUS: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] b:windows-vs2026-x64-pch: extends: @@ -1268,6 +1294,7 @@ b:windows-vs2026-x64-pch: variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] t:windows-vs2026-x64-ninja: extends: @@ -1621,6 +1648,7 @@ b:windows-arm64-vs2026-ninja: variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" + needs: [] t:windows-arm64-vs2026-ninja: extends: From 775ddcecd7a6da453eea52b702471ba99e08c7b1 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 16 Jul 2026 00:20:37 -0400 Subject: [PATCH 2/3] gitlab-ci: move macOS nonconcurrent jobs to `tart` runners `tart` uses VMs to execute jobs instead of running directly on the host. Leave `macos-x86_64` `concurrent` jobs as `shell` runners so that there is still testing on actual Intel hardware. --- .gitlab-ci.yml | 14 +++++------ .gitlab/os-macos.yml | 55 +++++++++++++++----------------------------- 2 files changed, 25 insertions(+), 44 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ada3cf6d28..0b30813a60 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1123,7 +1123,7 @@ t:macos-arm64-ninja-multi: extends: - .macos_arm64_ninja_multi - .cmake_test_macos_external - - .macos_arm64_tags_ext + - .macos_arm64_tags - .cmake_junit_artifacts - .rules needs: @@ -1147,7 +1147,7 @@ t:macos-arm64-xcode: extends: - .macos_arm64_xcode - .cmake_test_macos_external - - .macos_arm64_tags_ext + - .macos_arm64_tags - .cmake_junit_artifacts - .rules needs: @@ -1157,7 +1157,7 @@ t:macos-arm64-fastbuild: extends: - .macos_arm64_fastbuild - .cmake_test_macos_external - - .macos_arm64_tags_ext + - .macos_arm64_tags - .cmake_junit_artifacts - .rules needs: @@ -1169,7 +1169,7 @@ t:macos-arm64-xcode-symlinked: extends: - .macos_arm64_xcode_symlinked - .cmake_test_macos_external - - .macos_arm64_tags_ext + - .macos_arm64_tags - .cmake_junit_artifacts - .rules needs: @@ -1193,7 +1193,7 @@ t:macos-arm64-xcode-ub: extends: - .macos_arm64_xcode_ub - .cmake_test_macos_external - - .macos_arm64_tags_ext + - .macos_arm64_tags - .cmake_junit_artifacts - .rules needs: @@ -1206,7 +1206,7 @@ b:macos-package: - .macos_package - .cmake_build_macos - .cmake_release_artifacts - - .macos_arm64_tags_package + - .macos_arm64_tags - .rules needs: - p:doc-package @@ -1241,7 +1241,7 @@ b:macos10.10-package: - .macos10.10_package - .cmake_build_macos - .cmake_release_artifacts - - .macos_arm64_tags_package + - .macos_arm64_tags - .rules needs: - p:doc-package diff --git a/.gitlab/os-macos.yml b/.gitlab/os-macos.yml index a9d0a173b6..66c47aefbf 100644 --- a/.gitlab/os-macos.yml +++ b/.gitlab/os-macos.yml @@ -6,10 +6,11 @@ variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci ext/$CI_CONCURRENT_ID" -.macos_arm64: - extends: .macos +.macos_tart: + image: "registry.hub.docker.com/kitware/macos-ci-images:macos-26-xcode-26.6-20260710" variables: - DEVELOPER_DIR: "/Applications/Xcode-26.6.app/Contents/Developer" + GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake-ci" + TART_EXECUTOR_HOST_DIR: "false" .macos_x86_64: extends: .macos @@ -27,10 +28,9 @@ # could run at the same time, so we drop it. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" -.macos_arm64_build: +.macos_tart_build: extends: - - .macos_arm64 - - .macos_build + - .macos_tart .macos_x86_64_build: extends: @@ -46,7 +46,7 @@ CTEST_NO_WARNINGS_ALLOWED: 1 .macos_arm64_ninja: - extends: .macos_arm64_build + extends: .macos_tart_build variables: CMAKE_CONFIGURATION: macos_arm64_ninja @@ -54,7 +54,7 @@ CTEST_NO_WARNINGS_ALLOWED: 1 .macos_arm64_ninja_symlinked: - extends: .macos_arm64_build + extends: .macos_tart_build variables: CMAKE_CONFIGURATION: macos_arm64_ninja_symlinked @@ -77,7 +77,7 @@ CMAKE_GENERATOR: "Unix Makefiles" .macos_package: - extends: .macos_arm64_build + extends: .macos_tart_build variables: CMAKE_CONFIGURATION: macos_package @@ -85,7 +85,7 @@ CMAKE_CI_NO_INSTALL: 1 .macos10.10_package: - extends: .macos_arm64_build + extends: .macos_tart_build variables: CMAKE_CONFIGURATION: macos10.10_package @@ -108,7 +108,7 @@ CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true" .macos_arm64_xcode: - extends: .macos_arm64 + extends: .macos_tart variables: CMAKE_CONFIGURATION: macos_arm64_xcode @@ -116,7 +116,7 @@ CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true" .macos_arm64_xcode_symlinked: - extends: .macos_arm64 + extends: .macos_tart variables: CMAKE_CONFIGURATION: macos_arm64_xcode_symlinked @@ -126,7 +126,7 @@ CMAKE_CI_BUILD_DIR: "real_work/work/build" .macos_arm64_xcode_ub: - extends: .macos_arm64 + extends: .macos_tart variables: CMAKE_CONFIGURATION: macos_arm64_xcode_ub @@ -134,7 +134,7 @@ CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true" .macos_arm64_ninja_multi: - extends: .macos_arm64 + extends: .macos_tart variables: CMAKE_CONFIGURATION: macos_arm64_ninja_multi @@ -149,7 +149,7 @@ CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true" .macos_arm64_fastbuild: - extends: .macos_arm64 + extends: .macos_tart variables: CMAKE_CONFIGURATION: macos_arm64_fastbuild @@ -160,7 +160,7 @@ .macos_x86_64_tags: tags: - - cmake # Since this is a bare runner, pin to a project. + - cmake - macos-x86_64 - shell - xcode-26.3 @@ -176,28 +176,9 @@ .macos_arm64_tags: tags: - - cmake # Since this is a bare runner, pin to a project. + - cmake - macos-arm64 - - shell - - xcode-26.6 - - nonconcurrent - -.macos_arm64_tags_ext: - tags: - - cmake # Since this is a bare runner, pin to a project. - - macos-arm64 - - shell - - xcode-26.6 - - concurrent - -.macos_arm64_tags_package: - tags: - - cmake # Since this is a bare runner, pin to a project. - - macos-arm64 - - shell - - xcode-26.6 - - nonconcurrent - - finder + - tart .macos_sign_tags: tags: From b83728ca141965adfc4dd6b6a49b17c110bc9126 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 17 Jul 2026 11:08:15 -0400 Subject: [PATCH 3/3] gitlab-ci: extend Xcode CI job timeout to 3 hours With the migration to `tart`, this job is now guaranteed to run on x86_64 hardware. Some of the machines are older, so to allow them to complete the job, extend the timeout. The job is limited to nghtly pipelines, so a longer timeout is fine. --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0b30813a60..03183f79da 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1138,6 +1138,7 @@ t:macos-x86_64-xcode: - .macos_x86_64_tags_ext - .cmake_junit_artifacts - .rules + timeout: 3 hours needs: - t:macos-x86_64-ninja variables: