cmake/.gitlab/os-macos.yml
Brad King 98d4e69837 gitlab-ci: clarify names of job classification variables
Name them with `CMAKE_CI_JOB_` prefixes like we do similar variables.
2026-01-23 20:37:23 -05:00

254 lines
6.3 KiB
YAML

# macOS-specific builder configurations and build commands
## Base configurations
.macos:
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci ext/$CI_CONCURRENT_ID"
# TODO: Factor this out so that each job selects the Xcode version to
# use so that different versions can be tested in a single pipeline.
DEVELOPER_DIR: "/Applications/Xcode-26.2.app/Contents/Developer"
### Build and test
.macos_build:
extends: .macos
variables:
# Note that shell runners only support runners with a single
# concurrency level. We can't use `$CI_CONCURRENCY_ID` because this may
# change between the build and test stages which CMake doesn't support.
# Even if we could, it could change if other runners on the machine
# could run at the same time, so we drop it.
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
.macos_x86_64_ninja:
extends: .macos_build
variables:
CMAKE_CONFIGURATION: macos_x86_64_ninja
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
.macos_arm64_ninja:
extends: .macos_build
variables:
CMAKE_CONFIGURATION: macos_arm64_ninja
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
.macos_arm64_ninja_symlinked:
extends: .macos_build
variables:
CMAKE_CONFIGURATION: macos_arm64_ninja_symlinked
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_CI_IN_SYMLINK_TREE: 1
CMAKE_CI_BUILD_DIR: "real_work/work/build"
.macos_arm64_pch:
extends: .macos_arm64_ninja
variables:
CMAKE_CONFIGURATION: macos_arm64_pch
.macos_x86_64_makefiles:
extends: .macos_build
variables:
CMAKE_CONFIGURATION: macos_x86_64_makefiles
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "Unix Makefiles"
.macos_package:
extends: .macos_build
variables:
CMAKE_CONFIGURATION: macos_package
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_CI_NO_INSTALL: 1
.macos10.10_package:
extends: .macos_build
variables:
CMAKE_CONFIGURATION: macos10.10_package
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_CI_NO_INSTALL: 1
.macos_sign:
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CMAKE_CONFIGURATION: macos_sign
### External testing
.macos_x86_64_xcode:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_x86_64_xcode
CMAKE_GENERATOR: Xcode
CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_xcode:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_arm64_xcode
CMAKE_GENERATOR: Xcode
CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_xcode_symlinked:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_arm64_xcode_symlinked
CMAKE_GENERATOR: Xcode
CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
CMAKE_CI_IN_SYMLINK_TREE: 1
CMAKE_CI_BUILD_DIR: "real_work/work/build"
.macos_arm64_xcode_ub:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_arm64_xcode_ub
CMAKE_GENERATOR: Xcode
CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_ninja_multi:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_arm64_ninja_multi
CMAKE_GENERATOR: "Ninja Multi-Config"
CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.macos_x86_64_ninja_ub:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_x86_64_ninja_ub
CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_fastbuild:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_arm64_fastbuild
CMAKE_GENERATOR: FASTBuild
CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
## Tags
.macos_x86_64_tags:
tags:
- cmake # Since this is a bare runner, pin to a project.
- macos-x86_64
- shell
- xcode-26.2
- nonconcurrent
.macos_x86_64_tags_ext:
tags:
- cmake # Since this is a bare runner, pin to a project.
- macos-x86_64
- shell
- xcode-26.2
- concurrent
.macos_arm64_tags:
tags:
- cmake # Since this is a bare runner, pin to a project.
- macos-arm64
- shell
- xcode-26.2
- nonconcurrent
.macos_arm64_tags_ext:
tags:
- cmake # Since this is a bare runner, pin to a project.
- macos-arm64
- shell
- xcode-26.2
- concurrent
.macos_arm64_tags_package:
tags:
- cmake # Since this is a bare runner, pin to a project.
- macos-arm64
- shell
- xcode-26.2
- nonconcurrent
- finder
.macos_sign_tags:
tags:
- cmake # Since this is a bare runner, pin to a project.
- shell
- sign-macos-v1
- nonconcurrent
## macOS-specific scripts
.before_script_macos: &before_script_macos
- source .gitlab/ci/env.sh
- source .gitlab/ci/cmake-env.sh
- source .gitlab/ci/ninja-env.sh
# Download Qt
- cmake -P .gitlab/ci/download_qt.cmake
- export CMAKE_PREFIX_PATH=$PWD/.gitlab/qt${CMAKE_PREFIX_PATH:+:$CMAKE_PREFIX_PATH}
.cmake_build_macos:
stage: build
script:
- *before_script_macos
- .gitlab/ci/sccache.sh
# Allow the server to already be running.
- "sccache --start-server || :"
- sccache --show-stats
- .gitlab/ci/pre_configure.sh
- ctest -VV -S .gitlab/ci/ctest_configure.cmake
- .gitlab/ci/pre_build.sh
- ctest -VV -S .gitlab/ci/ctest_build.cmake
- .gitlab/ci/post_build.sh
- sccache --show-stats
interruptible: true
.cmake_test_macos:
stage: test
script:
- *before_script_macos
- .gitlab/ci/pre_test.sh
- ctest --output-on-failure -V -S .gitlab/ci/ctest_test.cmake
interruptible: true
.cmake_test_macos_external:
stage: test-ext
script:
- *before_script_macos
- .gitlab/ci/sccache.sh
# Allow the server to already be running.
- "sccache --start-server || :"
- sccache --show-stats
- "$LAUNCHER build/install/CMake.app/Contents/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake"
- sccache --show-stats
interruptible: true
.cmake_sign_macos:
stage: package
environment:
name: sign-macos
script:
- source .gitlab/ci/env.sh
- source .gitlab/ci/package_macos_sign.sh
interruptible: true