Files
CMake/.gitlab/os-macos.yml
T
Brad King 31884a7146 ci: Add nightly job to build CMake with vendored curl on macOS
We now build with the system curl on macOS by default.
Explicitly test that the vendored curl still works.
2024-05-09 14:58:26 -04:00

230 lines
5.8 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-15.3.app/Contents/Developer"
# Avoid conflicting with other projects running on the same machine.
SCCACHE_SERVER_PORT: 4227
### 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
CTEST_NO_WARNINGS_ALLOWED: 1
.macos_arm64_ninja:
extends: .macos_build
variables:
CMAKE_CONFIGURATION: macos_arm64_ninja
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_curl:
extends: .macos_build
variables:
CMAKE_CONFIGURATION: macos_arm64_curl
CTEST_NO_WARNINGS_ALLOWED: 1
.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
### External testing
.macos_x86_64_xcode:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_x86_64_xcode
CMAKE_GENERATOR: Xcode
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_xcode:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_arm64_xcode
CMAKE_GENERATOR: Xcode
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_xcode_symlinked:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_arm64_xcode_symlinked
CMAKE_GENERATOR: Xcode
CMAKE_CI_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_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_ninja_multi:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_arm64_ninja_multi
CMAKE_GENERATOR: "Ninja Multi-Config"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.macos_x86_64_ninja_ub:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_x86_64_ninja_ub
CMAKE_CI_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-15.3
- nonconcurrent
.macos_x86_64_tags_ext:
tags:
- cmake # Since this is a bare runner, pin to a project.
- macos-x86_64
- shell
- xcode-15.3
- concurrent
.macos_arm64_tags:
tags:
- cmake # Since this is a bare runner, pin to a project.
- macos-arm64
- shell
- xcode-15.3
- nonconcurrent
.macos_arm64_tags_ext:
tags:
- cmake # Since this is a bare runner, pin to a project.
- macos-arm64
- shell
- xcode-15.3
- concurrent
.macos_arm64_tags_package:
tags:
- cmake # Since this is a bare runner, pin to a project.
- macos-arm64
- shell
- xcode-15.3
- nonconcurrent
- finder
## 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_build.sh
- ctest -VV -S .gitlab/ci/ctest_configure.cmake
- 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
- 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