summaryrefslogtreecommitdiff
path: root/.gitlab/os-macos.yml
blob: b36de988af32aa8d444dd8ebdd3a7e68525a5144 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# macOS-specific builder configurations and build commands

## Base configurations

.macos: &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-11.5.app/Contents/Developer"

### Build and test

.macos_build: &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_ninja: &macos_ninja
    extends: .macos_build

    variables:
        CMAKE_CONFIGURATION: macos_ninja
        CTEST_NO_WARNINGS_ALLOWED: 1

.macos_makefiles: &macos_makefiles
    extends: .macos_build

    variables:
        CMAKE_CONFIGURATION: macos_makefiles
        CTEST_NO_WARNINGS_ALLOWED: 1
        CMAKE_GENERATOR: "Unix Makefiles"

### External testing

.macos_xcode: &macos_xcode
    extends: .macos

    variables:
        CMAKE_CONFIGURATION: macos_xcode
        CMAKE_GENERATOR: Xcode

## Tags

.macos_builder_tags: &macos_builder_tags
    tags:
        - cmake # Since this is a bare runner, pin to a project.
        - macos
        - shell
        - xcode-11.5
        - nonconcurrent

.macos_builder_ext_tags: &macos_builder_ext_tags
    tags:
        - cmake # Since this is a bare runner, pin to a project.
        - macos
        - shell
        - xcode-11.5
        - concurrent

## macOS-specific scripts

.cmake_test_macos_external: &cmake_test_macos_external
    stage: test-ext

    script:
        - *before_script_unix
        - .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_test_external.cmake"
        - sccache --show-stats

    interruptible: true