mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-08 07:10:12 -05:00
0eebd0a0e3
On macOS and Windows, our jobs use a `GIT_CLONE_PATH` that does not contain `$CI_CONCURRENCY_ID` so that the build and test jobs always use the same path. Since we use shell runners for these platforms, all concurrent jobs would use the same path and conflict. Therefore we can only use runners with a concurrency level of 1 for jobs in the `build` and `test` stages. However, jobs in the `test-ext` stage configure a new build tree for the tests and therefore can use `$CI_CONCURRENCY_ID` and support shell runners with higher concurrency levels. Prepare to make that distinction in the future by pinning all jobs to runners with a `nonconcurrent` tag.
440 lines
13 KiB
YAML
440 lines
13 KiB
YAML
.manual_rules_settings: &manual_rules_settings
|
|
- if: '$CI_PROJECT_PATH == "cmake/cmake"'
|
|
when: delayed
|
|
start_in: 5 minutes
|
|
- if: '$CI_MERGE_REQUEST_ID'
|
|
when: manual
|
|
- when: never
|
|
|
|
.rules_settings: &rules_settings
|
|
- if: '$CI_PROJECT_PATH == "cmake/cmake"'
|
|
when: always
|
|
- if: '$CI_MERGE_REQUEST_ID'
|
|
when: always
|
|
- when: never
|
|
|
|
.fedora31: &fedora31
|
|
image: "kitware/cmake:ci-fedora31-x86_64-2020-05-08"
|
|
|
|
variables:
|
|
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
|
|
|
|
.debian10: &debian10
|
|
image: "kitware/cmake:ci-debian10-x86_64-2020-04-27"
|
|
|
|
variables:
|
|
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
|
|
|
|
.debian10_iwyu: &debian10_iwyu
|
|
extends: .debian10
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: debian10_iwyu
|
|
CTEST_NO_WARNINGS_ALLOWED: 1
|
|
CMake_SKIP_INSTALL: 1
|
|
|
|
.fedora31_tidy: &fedora31_tidy
|
|
extends: .fedora31
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: fedora31_tidy
|
|
CTEST_NO_WARNINGS_ALLOWED: 1
|
|
CMake_SKIP_INSTALL: 1
|
|
|
|
.fedora31_sphinx: &fedora31_sphinx
|
|
extends: .fedora31
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: fedora31_sphinx
|
|
CTEST_NO_WARNINGS_ALLOWED: 1
|
|
CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx"
|
|
CMake_SKIP_INSTALL: 1
|
|
|
|
.fedora31_ninja: &fedora31_ninja
|
|
extends: .fedora31
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: fedora31_ninja
|
|
CTEST_NO_WARNINGS_ALLOWED: 1
|
|
|
|
.fedora31_makefiles: &fedora31_makefiles
|
|
extends: .fedora31
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: fedora31_makefiles
|
|
CTEST_NO_WARNINGS_ALLOWED: 1
|
|
CMAKE_GENERATOR: "Unix Makefiles"
|
|
|
|
.macos: &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"
|
|
# 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"
|
|
|
|
.macos_ninja: &macos_ninja
|
|
extends: .macos
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: macos_ninja
|
|
CTEST_NO_WARNINGS_ALLOWED: 1
|
|
|
|
.macos_makefiles: &macos_makefiles
|
|
extends: .macos
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: macos_makefiles
|
|
CTEST_NO_WARNINGS_ALLOWED: 1
|
|
CMAKE_GENERATOR: "Unix Makefiles"
|
|
|
|
.windows: &windows
|
|
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"
|
|
|
|
.windows_ninja: &windows_ninja
|
|
extends: .windows
|
|
|
|
variables:
|
|
# Debug and RelWithDebinfo build types use the `/Zi` which results in
|
|
# uncacheable compiations.
|
|
# https://github.com/mozilla/sccache/issues/242
|
|
CMAKE_BUILD_TYPE: Release
|
|
CTEST_NO_WARNINGS_ALLOWED: 1
|
|
|
|
.windows_vs2019_x64_ninja: &windows_vs2019_x64_ninja
|
|
extends: .windows_ninja
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_vs2019_x64_ninja
|
|
VCVARSALL: "${VS160COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
|
|
VCVARSPLATFORM: "x64"
|
|
VCVARSVERSION: "14.25"
|
|
|
|
.windows_vs2019_x64: &windows_vs2019_x64
|
|
extends: .windows
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_vs2019_x64
|
|
CMAKE_GENERATOR: "Visual Studio 16 2019"
|
|
CMAKE_GENERATOR_PLATFORM: "x64"
|
|
CMAKE_GENERATOR_TOOLSET: "v142,version=14.25"
|
|
|
|
.linux_builder_tags: &linux_builder_tags
|
|
tags:
|
|
- build
|
|
- docker
|
|
- linux
|
|
|
|
.linux_builder_tags_qt: &linux_builder_tags_qt
|
|
tags:
|
|
- build
|
|
- docker
|
|
- linux
|
|
- linux-3.17 # Needed to be able to load Fedora's Qt libraries.
|
|
|
|
.macos_builder_tags: &macos_builder_tags
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- macos
|
|
- shell
|
|
- xcode-11.5
|
|
- nonconcurrent # Use runners without concurrency for fixed GIT_CLONE_PATH.
|
|
# TODO: Use "concurrent" and "nonconcurrent" on individual jobs.
|
|
|
|
.windows_builder_tags: &windows_builder_tags
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows
|
|
- shell
|
|
- vs2019
|
|
- msvc-19.25
|
|
- nonconcurrent # Use runners without concurrency for fixed GIT_CLONE_PATH.
|
|
# TODO: Use "concurrent" and "nonconcurrent" on individual jobs.
|
|
|
|
.before_script_unix: &before_script_unix
|
|
- .gitlab/ci/cmake.sh
|
|
- .gitlab/ci/ninja.sh
|
|
- export PATH=$PWD/.gitlab:$PWD/.gitlab/cmake/bin:$PATH
|
|
- cmake --version
|
|
- ninja --version
|
|
|
|
.before_script_windows: &before_script_windows
|
|
- Invoke-Expression -Command .gitlab/ci/cmake.ps1
|
|
- Invoke-Expression -Command .gitlab/ci/ninja.ps1
|
|
- $pwdpath = $pwd.Path
|
|
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$pwdpath\.gitlab\cmake\bin;$env:PATH"
|
|
- cmake --version
|
|
- ninja --version
|
|
|
|
.cmake_build_unix: &cmake_build_unix
|
|
stage: build
|
|
|
|
script:
|
|
- *before_script_unix
|
|
- .gitlab/ci/sccache.sh
|
|
# Allow the server to already be running.
|
|
- "sccache --start-server || :"
|
|
- sccache --show-stats
|
|
- "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_configure.cmake"
|
|
- "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_build.cmake"
|
|
- sccache --show-stats
|
|
|
|
interruptible: true
|
|
|
|
.cmake_build_windows: &cmake_build_windows
|
|
stage: build
|
|
|
|
script:
|
|
- *before_script_windows
|
|
- Set-Item -Force -Path "env:PATH" -Value "$env:PATH;$env:SCCACHE_PATH"
|
|
- Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
|
|
- sccache --start-server
|
|
- sccache --show-stats
|
|
- ctest -VV -S .gitlab/ci/ctest_configure.cmake
|
|
- ctest -VV -S .gitlab/ci/ctest_build.cmake
|
|
- sccache --show-stats
|
|
- sccache --stop-server
|
|
|
|
interruptible: true
|
|
|
|
.cmake_build_artifacts: &cmake_build_artifacts
|
|
artifacts:
|
|
expire_in: 1d
|
|
paths:
|
|
# XXX(globbing): Can be simplified with support from
|
|
# https://gitlab.com/gitlab-org/gitlab-runner/issues/4840
|
|
- build/CTestTestfile.cmake
|
|
- build/*/CTestTestfile.cmake
|
|
- build/*/*/CTestTestfile.cmake
|
|
- build/*/*/*/CTestTestfile.cmake
|
|
- build/*/*/*/*/CTestTestfile.cmake
|
|
|
|
# Allow CMake to find CMAKE_ROOT.
|
|
- build/CMakeFiles/CMakeSourceDir.txt
|
|
|
|
# Take the install tree.
|
|
- build/install/
|
|
|
|
# We need the main binaries.
|
|
- build/bin/
|
|
# The cache is needed for the installation test.
|
|
- build/CMakeCache.txt
|
|
# Test binaries. Eventually these might be better under
|
|
# `Source/Tests` or the like.
|
|
- build/Tests/EnforceConfig.cmake
|
|
- build/Tests/CMakeBuildTest.cmake
|
|
- build/Tests/CMakeBuildDoubleProjectTest.cmake
|
|
- build/Tests/CMake*/runcompilecommands
|
|
- build/Tests/CMake*/runcompilecommands.exe
|
|
- build/Tests/CMake*/test*
|
|
- build/Tests/CMake*/PseudoMemcheck/valgrind
|
|
- build/Tests/CMake*/PseudoMemcheck/purify
|
|
- build/Tests/CMake*/PseudoMemcheck/memcheck_fail
|
|
- build/Tests/CMake*/PseudoMemcheck/BC
|
|
- build/Tests/CMake*/PseudoMemcheck/valgrind.exe
|
|
- build/Tests/CMake*/PseudoMemcheck/purify.exe
|
|
- build/Tests/CMake*/PseudoMemcheck/memcheck_fail.exe
|
|
- build/Tests/CMake*/PseudoMemcheck/BC.exe
|
|
- build/Tests/CMake*/PseudoMemcheck/NoLog
|
|
- build/Tests/CMake*Lib/*LibTests
|
|
- build/Tests/CMake*Lib/*LibTests.exe
|
|
- build/Source/kwsys/cmsysTest*
|
|
- build/Source/kwsys/testConsoleBufChild.exe
|
|
- build/Utilities/cmcurl/curltest
|
|
- build/Utilities/cmcurl/curltest.exe
|
|
- build/Utilities/KWIML/test/kwiml_test
|
|
- build/Utilities/KWIML/test/kwiml_test.exe
|
|
- build/Source/kwsys/*cmsysTestDynload.*
|
|
- build/Source/kwsys/dynloaddir/cmsysTestDynloadImpl.dll
|
|
- build/Source/kwsys/dynloaddir/cmsysTestDynloadUse.dll
|
|
|
|
# Test directories.
|
|
- build/Tests/CTest*
|
|
- build/Tests/Find*
|
|
- build/Tests/Qt5*
|
|
- build/Tests/RunCMake/
|
|
- build/Tests/CMakeOnly/
|
|
- build/Tests/CMakeTests/
|
|
|
|
# CTest/CDash information.
|
|
- build/Testing/
|
|
- build/DartConfiguation.tcl
|
|
- build/CTestCustom.cmake
|
|
|
|
.cmake_test_artifacts: &cmake_test_artifacts
|
|
artifacts:
|
|
expire_in: 1d
|
|
paths:
|
|
# Take the install tree.
|
|
- build/install/
|
|
|
|
.cmake_test_unix: &cmake_test_unix
|
|
stage: test
|
|
|
|
script:
|
|
- *before_script_unix
|
|
- "$LAUNCHER ctest --output-on-failure -V -S .gitlab/ci/ctest_test.cmake"
|
|
|
|
interruptible: true
|
|
|
|
.cmake_test_windows: &cmake_test_windows
|
|
stage: test
|
|
|
|
script:
|
|
- *before_script_windows
|
|
- Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
|
|
- ctest --output-on-failure -V -S .gitlab/ci/ctest_test.cmake
|
|
|
|
interruptible: true
|
|
|
|
.cmake_test_windows_external: &cmake_test_windows_external
|
|
stage: test-ext
|
|
|
|
script:
|
|
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_test_external.cmake
|
|
|
|
interruptible: true
|
|
|
|
stages:
|
|
- build
|
|
- test
|
|
- test-ext
|
|
|
|
build:debian10-iwyu:
|
|
<<:
|
|
- *debian10_iwyu
|
|
- *cmake_build_unix
|
|
- *linux_builder_tags
|
|
rules: *rules_settings
|
|
|
|
build:fedora31-tidy:
|
|
<<:
|
|
- *fedora31_tidy
|
|
- *cmake_build_unix
|
|
- *linux_builder_tags
|
|
rules: *rules_settings
|
|
|
|
build:fedora31-sphinx:
|
|
<<:
|
|
- *fedora31_sphinx
|
|
- *cmake_build_unix
|
|
- *linux_builder_tags_qt
|
|
rules: *rules_settings
|
|
|
|
build:fedora31-ninja:
|
|
<<:
|
|
- *fedora31_ninja
|
|
- *cmake_build_unix
|
|
- *cmake_build_artifacts
|
|
- *linux_builder_tags
|
|
rules: *manual_rules_settings
|
|
|
|
test:fedora31-ninja:
|
|
<<:
|
|
- *fedora31_ninja
|
|
- *cmake_test_unix
|
|
- *linux_builder_tags_qt
|
|
rules: *rules_settings
|
|
dependencies:
|
|
- build:fedora31-ninja
|
|
needs:
|
|
- build:fedora31-ninja
|
|
|
|
build:fedora31-makefiles:
|
|
<<:
|
|
- *fedora31_makefiles
|
|
- *cmake_build_unix
|
|
- *cmake_build_artifacts
|
|
- *linux_builder_tags
|
|
rules: *manual_rules_settings
|
|
|
|
test:fedora31-makefiles:
|
|
<<:
|
|
- *fedora31_makefiles
|
|
- *cmake_test_unix
|
|
- *linux_builder_tags_qt
|
|
rules: *rules_settings
|
|
dependencies:
|
|
- build:fedora31-makefiles
|
|
needs:
|
|
- build:fedora31-makefiles
|
|
|
|
build:macos-ninja:
|
|
<<:
|
|
- *macos_ninja
|
|
- *cmake_build_unix
|
|
- *cmake_build_artifacts
|
|
- *macos_builder_tags
|
|
rules: *manual_rules_settings
|
|
|
|
test:macos-ninja:
|
|
<<:
|
|
- *macos_ninja
|
|
- *cmake_test_unix
|
|
- *macos_builder_tags
|
|
rules: *rules_settings
|
|
dependencies:
|
|
- build:macos-ninja
|
|
needs:
|
|
- build:macos-ninja
|
|
|
|
build:macos-makefiles:
|
|
<<:
|
|
- *macos_makefiles
|
|
- *cmake_build_unix
|
|
- *cmake_build_artifacts
|
|
- *macos_builder_tags
|
|
rules: *manual_rules_settings
|
|
|
|
test:macos-makefiles:
|
|
<<:
|
|
- *macos_makefiles
|
|
- *cmake_test_unix
|
|
- *macos_builder_tags
|
|
rules: *rules_settings
|
|
dependencies:
|
|
- build:macos-makefiles
|
|
needs:
|
|
- build:macos-makefiles
|
|
|
|
build:windows-vs2019-x64-ninja:
|
|
<<:
|
|
- *windows_vs2019_x64_ninja
|
|
- *cmake_build_windows
|
|
- *cmake_build_artifacts
|
|
- *windows_builder_tags
|
|
rules: *manual_rules_settings
|
|
|
|
test:windows-vs2019-x64-ninja:
|
|
<<:
|
|
- *windows_vs2019_x64_ninja
|
|
- *cmake_test_windows
|
|
- *windows_builder_tags
|
|
- *cmake_test_artifacts
|
|
rules: *rules_settings
|
|
dependencies:
|
|
- build:windows-vs2019-x64-ninja
|
|
needs:
|
|
- build:windows-vs2019-x64-ninja
|
|
|
|
test:windows-vs2019-x64:
|
|
<<:
|
|
- *windows_vs2019_x64
|
|
- *cmake_test_windows_external
|
|
- *windows_builder_tags
|
|
rules: *rules_settings
|
|
dependencies:
|
|
- test:windows-vs2019-x64-ninja
|
|
needs:
|
|
- test:windows-vs2019-x64-ninja
|