Merge topic 'ci-single-rules-block'

537828483d gitlab-ci: configure development documentation and continuous pipelines
fff061d1e7 gitlab-ci: name pipelines
d505cf03d9 gitlab-ci: use a single rules block for "dependent" jobs
b1ec96bfa7 gitlab-ci: use a single rules block for "automatic" jobs
51fc225941 gitlab-ci: use a single rules block for "manual" jobs
2b944b7b26 gitlab-ci: port scheduled pipeline logic to the single rules block
e02d632072 gitlab-ci: port merge request pipeline logic to the single rules block
d42be92245 gitlab-ci: port continuous pipeline logic to the single rules block
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11604
This commit is contained in:
Brad King 2026-01-25 14:00:17 +00:00 committed by Kitware Robot
commit 56597a2fea
5 changed files with 438 additions and 255 deletions

File diff suppressed because it is too large Load Diff

View File

@ -903,21 +903,23 @@
- .intelclassic_makefiles - .intelclassic_makefiles
- .cmake_test_linux_release - .cmake_test_linux_release
- .linux_x86_64_tags - .linux_x86_64_tags
- .run_manually - .rules
- .needs_centos7_x86_64 - .needs_centos7_x86_64
variables: variables:
CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_NIGHTLY: "true"
CMAKE_CI_NO_MR: "true" CMAKE_CI_JOB_NO_MR: "true"
CMAKE_CI_JOB_RUN_MANUALLY: "true"
.cmake_test_linux_inteloneapi_makefiles: .cmake_test_linux_inteloneapi_makefiles:
extends: extends:
- .inteloneapi_makefiles - .inteloneapi_makefiles
- .cmake_test_linux_release - .cmake_test_linux_release
- .linux_x86_64_tags - .linux_x86_64_tags
- .run_manually - .rules
- .needs_centos7_x86_64 - .needs_centos7_x86_64
variables: variables:
CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_NIGHTLY: "true"
CMAKE_CI_JOB_RUN_MANUALLY: "true"
.cmake_build_sunos_release: .cmake_build_sunos_release:
stage: build stage: build

View File

@ -90,7 +90,7 @@
variables: variables:
CMAKE_CONFIGURATION: macos_x86_64_xcode CMAKE_CONFIGURATION: macos_x86_64_xcode
CMAKE_GENERATOR: Xcode CMAKE_GENERATOR: Xcode
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_xcode: .macos_arm64_xcode:
extends: .macos extends: .macos
@ -98,7 +98,7 @@
variables: variables:
CMAKE_CONFIGURATION: macos_arm64_xcode CMAKE_CONFIGURATION: macos_arm64_xcode
CMAKE_GENERATOR: Xcode CMAKE_GENERATOR: Xcode
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_xcode_symlinked: .macos_arm64_xcode_symlinked:
extends: .macos extends: .macos
@ -106,7 +106,7 @@
variables: variables:
CMAKE_CONFIGURATION: macos_arm64_xcode_symlinked CMAKE_CONFIGURATION: macos_arm64_xcode_symlinked
CMAKE_GENERATOR: Xcode CMAKE_GENERATOR: Xcode
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
CMAKE_CI_IN_SYMLINK_TREE: 1 CMAKE_CI_IN_SYMLINK_TREE: 1
CMAKE_CI_BUILD_DIR: "real_work/work/build" CMAKE_CI_BUILD_DIR: "real_work/work/build"
@ -116,7 +116,7 @@
variables: variables:
CMAKE_CONFIGURATION: macos_arm64_xcode_ub CMAKE_CONFIGURATION: macos_arm64_xcode_ub
CMAKE_GENERATOR: Xcode CMAKE_GENERATOR: Xcode
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_ninja_multi: .macos_arm64_ninja_multi:
extends: .macos extends: .macos
@ -124,14 +124,14 @@
variables: variables:
CMAKE_CONFIGURATION: macos_arm64_ninja_multi CMAKE_CONFIGURATION: macos_arm64_ninja_multi
CMAKE_GENERATOR: "Ninja Multi-Config" CMAKE_GENERATOR: "Ninja Multi-Config"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.macos_x86_64_ninja_ub: .macos_x86_64_ninja_ub:
extends: .macos extends: .macos
variables: variables:
CMAKE_CONFIGURATION: macos_x86_64_ninja_ub CMAKE_CONFIGURATION: macos_x86_64_ninja_ub
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_fastbuild: .macos_arm64_fastbuild:
extends: .macos extends: .macos
@ -139,7 +139,7 @@
variables: variables:
CMAKE_CONFIGURATION: macos_arm64_fastbuild CMAKE_CONFIGURATION: macos_arm64_fastbuild
CMAKE_GENERATOR: FASTBuild CMAKE_GENERATOR: FASTBuild
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
## Tags ## Tags

View File

@ -130,7 +130,7 @@
CMAKE_GENERATOR: "Visual Studio 18 2026" CMAKE_GENERATOR: "Visual Studio 18 2026"
CMAKE_GENERATOR_PLATFORM: "x64" CMAKE_GENERATOR_PLATFORM: "x64"
CMAKE_GENERATOR_TOOLSET: "v145,version=14.50.35717" CMAKE_GENERATOR_TOOLSET: "v145,version=14.50.35717"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_vs2022_x64: .windows_vs2022_x64:
extends: .windows extends: .windows
@ -140,7 +140,7 @@
CMAKE_GENERATOR: "Visual Studio 17 2022" CMAKE_GENERATOR: "Visual Studio 17 2022"
CMAKE_GENERATOR_PLATFORM: "x64" CMAKE_GENERATOR_PLATFORM: "x64"
CMAKE_GENERATOR_TOOLSET: "v143,version=14.44.35207" CMAKE_GENERATOR_TOOLSET: "v143,version=14.44.35207"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_vs2019_x64: .windows_vs2019_x64:
extends: .windows extends: .windows
@ -150,7 +150,7 @@
CMAKE_GENERATOR: "Visual Studio 16 2019" CMAKE_GENERATOR: "Visual Studio 16 2019"
CMAKE_GENERATOR_PLATFORM: "x64" CMAKE_GENERATOR_PLATFORM: "x64"
CMAKE_GENERATOR_TOOLSET: "v142,version=14.29.30133" CMAKE_GENERATOR_TOOLSET: "v142,version=14.29.30133"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_borland: .windows_borland:
extends: .windows extends: .windows
@ -158,7 +158,7 @@
variables: variables:
CMAKE_GENERATOR: "Borland Makefiles" CMAKE_GENERATOR: "Borland Makefiles"
CMAKE_CI_BUILD_TYPE: Release CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_borland5.5: .windows_borland5.5:
extends: .windows_borland extends: .windows_borland
@ -178,14 +178,14 @@
variables: variables:
CMAKE_GENERATOR: "Ninja" CMAKE_GENERATOR: "Ninja"
CMAKE_CI_BUILD_TYPE: Release CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_ninja_multi: .windows_ninja_multi:
extends: .windows extends: .windows
variables: variables:
CMAKE_GENERATOR: "Ninja Multi-Config" CMAKE_GENERATOR: "Ninja Multi-Config"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_nmake: .windows_nmake:
extends: .windows extends: .windows
@ -193,7 +193,7 @@
variables: variables:
CMAKE_GENERATOR: "NMake Makefiles" CMAKE_GENERATOR: "NMake Makefiles"
CMAKE_CI_BUILD_TYPE: Release CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_jom: .windows_jom:
extends: .windows extends: .windows
@ -201,7 +201,7 @@
variables: variables:
CMAKE_GENERATOR: "NMake Makefiles JOM" CMAKE_GENERATOR: "NMake Makefiles JOM"
CMAKE_CI_BUILD_TYPE: Release CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_fastbuild: .windows_fastbuild:
extends: .windows extends: .windows
@ -209,7 +209,7 @@
variables: variables:
CMAKE_GENERATOR: "FASTBuild" CMAKE_GENERATOR: "FASTBuild"
CMAKE_CI_BUILD_TYPE: Release CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_vs2026_x64_nmake: .windows_vs2026_x64_nmake:
extends: extends:
@ -289,7 +289,7 @@
GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID" GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID"
CMAKE_GENERATOR: "Watcom WMake" CMAKE_GENERATOR: "Watcom WMake"
CMAKE_CI_BUILD_TYPE: Release CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_openwatcom1.9: .windows_openwatcom1.9:
extends: .windows_openwatcom extends: .windows_openwatcom
@ -303,7 +303,7 @@
variables: variables:
CMAKE_GENERATOR: "Ninja" CMAKE_GENERATOR: "Ninja"
CMAKE_CI_BUILD_TYPE: Release CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_orangec6.73.1: .windows_orangec6.73.1:
extends: .windows_orangec extends: .windows_orangec
@ -319,7 +319,7 @@
CMAKE_GENERATOR: "Visual Studio 18 2026" CMAKE_GENERATOR: "Visual Studio 18 2026"
CMAKE_GENERATOR_PLATFORM: "ARM64" CMAKE_GENERATOR_PLATFORM: "ARM64"
CMAKE_GENERATOR_TOOLSET: "v145,version=14.50.35717" CMAKE_GENERATOR_TOOLSET: "v145,version=14.50.35717"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.windows_arm64_vs2022: .windows_arm64_vs2022:
extends: .windows extends: .windows
@ -329,7 +329,7 @@
CMAKE_GENERATOR: "Visual Studio 17 2022" CMAKE_GENERATOR: "Visual Studio 17 2022"
CMAKE_GENERATOR_PLATFORM: "ARM64" CMAKE_GENERATOR_PLATFORM: "ARM64"
CMAKE_GENERATOR_TOOLSET: "v143,version=14.44.35207" CMAKE_GENERATOR_TOOLSET: "v143,version=14.44.35207"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.mingw_osdn_io: .mingw_osdn_io:
extends: .windows extends: .windows
@ -338,7 +338,7 @@
# Place MinGW environment in a path without spaces. # Place MinGW environment in a path without spaces.
GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID" GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID"
CMAKE_CI_BUILD_TYPE: Debug CMAKE_CI_BUILD_TYPE: Debug
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS: "true"
.mingw_osdn_io_mingw_makefiles: .mingw_osdn_io_mingw_makefiles:
extends: .mingw_osdn_io extends: .mingw_osdn_io

View File

@ -1,117 +1,218 @@
# Rules for where jobs can run # Rules for where jobs can run
.run_manually: ###
rules: ## Job variables:
- if: '$CMAKE_CI_PACKAGE != null || $CMAKE_CI_VERSION_UPDATE != null' ## CMAKE_CI_JOB_UPDATES_VERSION
when: never ## Set to "true" if the job performs a task that occurs with version
- if: '($CMAKE_CI_NIGHTLY == "true" && $CMAKE_CI_JOB_NIGHTLY == "false")' ## updates.
when: never ## CMAKE_CI_JOB_UPDATES_WEBSITE_HELP
- if: '$CMAKE_CI_NIGHTLY == "true"' ## Set to "true" if the job performs tasks to update website help.
when: on_success ## CMAKE_CI_JOB_NO_MR
- if: '$CMAKE_CI_JOB_NIGHTLY == "true"' ## Set to "true" if the job should never run for merge requests.
when: never ## These jobs require secrets that MR pipelines cannot provide
- if: '$CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH == $CI_COMMIT_BRANCH && $CMAKE_CI_JOB_CONTINUOUS == "true"' ## (software license information, upload secrets, etc.).
when: delayed ## CMAKE_CI_JOB_PACKAGE_ONLY
start_in: 5 minutes ## Set to "true" if the job handles packaging tasks. These jobs will only
- if: '($CMAKE_CI_NO_MR == "true" && $CI_MERGE_REQUEST_ID)' ## run during packaging pipelines.
when: never ## CMAKE_CI_JOB_NIGHTLY
- if: '$CI_MERGE_REQUEST_ID' ## Set to "true" if the job should only run for nightly pipelines. Set to
when: manual ## "false" to suppress the job for nightly pipelines.
- if: '$CI_PROJECT_PATH == "cmake/cmake" && $CI_PIPELINE_SOURCE == "schedule"' ## CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS
when: on_success ## Set to "true" if the job should run even if dependent jobs fail (e.g.,
- if: '$CI_PROJECT_PATH == "cmake/cmake"' ## further testing of the same setup under a different generator. Should
when: manual ## only be used on jobs with `needs` on other jobs.
- when: never ## CMAKE_CI_JOB_RUN_MANUALLY
## Set to "true" if the job should be manually triggered in MRs.
## These jobs will also be delayed for branch update pipelines.
## Pipeline variables:
## CMAKE_CI_VERSION_UPDATE
## Set to "true" if the pipeline should perform version update tasks.
## No other tasks are performed if set.
## CMAKE_CI_PACKAGE
## Set to either "dev" or `vX.Y` to construct a packaging pipeline. Also
## uploads constructed packages. May also run website help jobs. No other
## tasks are performed if set.
## CMAKE_CI_NIGHTLY
## Set to "true" to enable nightly-only jobs.
## Project variables:
## CMAKE_CI_PROJECT_MAIN_BRANCH
## Set to the name of the main integration branch where development
## version documentation pipelines run.
## CMAKE_CI_PROJECT_CONTINUOUS_BRANCH
## Set to the name of the staging branch where continuous pipelines run.
####
.run_automatically: variables:
rules: CMAKE_CI_PIPELINE_NAME: 'Branch "$CI_COMMIT_REF_NAME"'
- if: '$CMAKE_CI_PACKAGE != null || $CMAKE_CI_VERSION_UPDATE != null'
when: never
- if: '($CMAKE_CI_NIGHTLY == "true" && $CMAKE_CI_JOB_NIGHTLY == "false")'
when: never
- if: '$CMAKE_CI_NIGHTLY == "true"'
when: on_success
- if: '$CMAKE_CI_JOB_NIGHTLY == "true"'
when: never
- if: '$CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH == $CI_COMMIT_BRANCH && $CMAKE_CI_JOB_CONTINUOUS == "true"'
when: on_success
- if: '($CMAKE_CI_NO_MR == "true" && $CI_MERGE_REQUEST_ID)'
when: never
- if: '$CI_MERGE_REQUEST_ID'
when: on_success
- if: '$CI_PROJECT_PATH == "cmake/cmake" && $CI_PIPELINE_SOURCE == "schedule"'
when: on_success
- if: '$CI_PROJECT_PATH == "cmake/cmake"'
when: delayed
start_in: 5 minutes
- when: never
.run_dependent: # When to even consider running a pipeline.
workflow:
name: "$CMAKE_CI_PIPELINE_NAME"
rules: rules:
- if: '$CMAKE_CI_PACKAGE != null || $CMAKE_CI_VERSION_UPDATE != null' # Run for merge requests.
when: never - if: '$CI_MERGE_REQUEST_ID'
- if: '($CMAKE_CI_NIGHTLY == "true" && $CMAKE_CI_JOB_NIGHTLY == "false")'
when: never
- if: '($CMAKE_CI_NIGHTLY == "true" && $CMAKE_CI_NIGHTLY_IGNORE_DEPS == "true")'
when: always when: always
- if: '$CMAKE_CI_NIGHTLY == "true"' auto_cancel:
when: on_success # Cancel all pipeline jobs if a new commit comes in on the branch/tag.
- if: '$CMAKE_CI_JOB_NIGHTLY == "true"' on_new_commit: interruptible
variables:
CMAKE_CI_PIPELINE_NAME: 'Merge request !$CI_MERGE_REQUEST_IID'
# If this is not a MR, do not run for other projects.
- if: '$CI_PROJECT_PATH != "cmake/cmake" && $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH == null && $CMAKE_CI_PROJECT_MAIN_BRANCH == null'
when: never when: never
- if: '$CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH == $CI_COMMIT_BRANCH && $CMAKE_CI_JOB_CONTINUOUS == "true"' # Run for schedules.
when: on_success - if: '$CI_PIPELINE_SOURCE == "schedule"'
- if: '($CMAKE_CI_NO_MR == "true" && $CI_MERGE_REQUEST_ID)' when: always
when: never auto_cancel:
- if: '$CI_MERGE_REQUEST_ID' # Never cancel scheduled pipelines because of new commits.
when: on_success on_new_commit: none
- if: '$CI_PROJECT_PATH == "cmake/cmake"' variables:
when: on_success CMAKE_CI_PIPELINE_NAME: 'Schedule "$CI_PIPELINE_SCHEDULE_DESCRIPTION"'
# Run for development documentation.
- if: '$CMAKE_CI_PROJECT_MAIN_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_MAIN_BRANCH == $CI_COMMIT_BRANCH'
when: always
variables:
CMAKE_CI_PIPELINE_NAME: 'Development documentation on branch "$CI_COMMIT_REF_NAME"'
# Run for continuous testing of staging branch.
- if: '$CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH == $CI_COMMIT_BRANCH'
when: always
variables:
CMAKE_CI_PIPELINE_NAME: 'Continuous branch "$CI_COMMIT_REF_NAME"'
# Run for protected branches.
- if: '$CI_COMMIT_REF_PROTECTED == "true"'
when: always
auto_cancel:
# Cancel all pipeline jobs if a new commit comes in on the branch.
on_new_commit: interruptible
variables:
CMAKE_CI_PIPELINE_NAME: 'Protected branch "$CI_COMMIT_REF_NAME"'
# Run for tags.
- if: '$CI_COMMIT_TAG'
when: always
variables:
CMAKE_CI_PIPELINE_NAME: 'Tag "$CI_COMMIT_TAG"'
# Skip pipelines in all other cases.
- when: never - when: never
.run_only_for_package: .rules:
rules: rules:
- if: '$CMAKE_CI_PACKAGE == "dev" && $CI_JOB_STAGE != "upload"' ### Version update pipelines.
# Version update pipelines run version update jobs automatically.
- if: '$CMAKE_CI_VERSION_UPDATE == "true" && $CMAKE_CI_JOB_UPDATES_VERSION == "true"'
when: on_success when: on_success
- if: '$CMAKE_CI_PACKAGE == "dev" && $CI_JOB_STAGE == "upload"' # Version update pipelines run no other jobs.
variables:
RSYNC_DESTINATION: "kitware@cmake.org:dev/"
when: on_success
- if: '$CMAKE_CI_PACKAGE != null && $CI_JOB_STAGE == "prep"'
when: manual
- if: '$CMAKE_CI_PACKAGE != null && $CI_JOB_STAGE != "upload"'
when: on_success
- if: '$CMAKE_CI_PACKAGE != null && $CI_JOB_STAGE == "upload" && $CMAKE_CI_PACKAGE_URL != null'
variables:
RSYNC_DESTINATION: "$CMAKE_CI_PACKAGE_URL"
when: on_success
- when: never
.run_cmake_org_help:
rules:
- if: '$CMAKE_CI_VERSION_UPDATE != null' - if: '$CMAKE_CI_VERSION_UPDATE != null'
when: never when: never
- if: '$CMAKE_CI_PACKAGE =~ /v[0-9]+\.[0-9]+/' # Version update jobs do not run in any other situations.
- if: '$CMAKE_CI_JOB_UPDATES_VERSION == "true"'
when: never
### Website help update jobs run in a variety of pipeline kinds.
# Packaging pipelines upload release version documentation to the website upon request.
- if: '$CMAKE_CI_PACKAGE =~ /v[0-9]+\.[0-9]+/ && $CMAKE_CI_JOB_UPDATES_WEBSITE_HELP == "true"'
variables: variables:
RSYNC_DESTINATION: "kitware@cmake.org:$CMAKE_CI_PACKAGE/" RSYNC_DESTINATION: "kitware@cmake.org:$CMAKE_CI_PACKAGE/"
CMAKE_CI_SPHINX_QTHELP: "ON" CMAKE_CI_SPHINX_QTHELP: "ON"
CMAKE_CI_VERSION_NO_GIT: "ON" CMAKE_CI_VERSION_NO_GIT: "ON"
when: manual when: manual
- if: '$CMAKE_CI_PROJECT_MAIN_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_MAIN_BRANCH == $CI_COMMIT_BRANCH' # Development documentation pipelines upload documentation to the website automatically.
- if: '$CMAKE_CI_PROJECT_MAIN_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_MAIN_BRANCH == $CI_COMMIT_BRANCH && $CMAKE_CI_JOB_UPDATES_WEBSITE_HELP == "true"'
variables: variables:
RSYNC_DESTINATION: "kitware@cmake.org:git-master/" RSYNC_DESTINATION: "kitware@cmake.org:git-master/"
CMAKE_CI_SPHINX_QTHELP: "OFF" CMAKE_CI_SPHINX_QTHELP: "OFF"
CMAKE_CI_VERSION_NO_GIT: "OFF" CMAKE_CI_VERSION_NO_GIT: "OFF"
when: on_success when: on_success
- if: '$CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH == $CI_COMMIT_BRANCH' # Continuous pipelines upload staging branch documentation to the website automatically.
- if: '$CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH == $CI_COMMIT_BRANCH && $CMAKE_CI_JOB_UPDATES_WEBSITE_HELP == "true"'
variables: variables:
RSYNC_DESTINATION: "kitware@cmake.org:git-stage/" RSYNC_DESTINATION: "kitware@cmake.org:git-stage/"
CMAKE_CI_SPHINX_QTHELP: "OFF" CMAKE_CI_SPHINX_QTHELP: "OFF"
CMAKE_CI_VERSION_NO_GIT: "OFF" CMAKE_CI_VERSION_NO_GIT: "OFF"
when: on_success when: on_success
- when: never # Website help update jobs do not run in any other situations.
- if: '$CMAKE_CI_JOB_UPDATES_WEBSITE_HELP == "true"'
when: never
.run_version_update: ### Packaging pipelines.
rules: # Packaging pipelines build development version packages automatically.
- if: '$CMAKE_CI_VERSION_UPDATE != null' - if: '$CMAKE_CI_PACKAGE == "dev" && $CMAKE_CI_JOB_PACKAGE_ONLY == "true" && $CI_JOB_STAGE != "upload"'
when: on_success when: on_success
- when: never # Packaging pipelines upload development version packages to the website automatically.
- if: '$CMAKE_CI_PACKAGE == "dev" && $CMAKE_CI_JOB_PACKAGE_ONLY == "true" && $CI_JOB_STAGE == "upload"'
variables:
RSYNC_DESTINATION: "kitware@cmake.org:dev/"
when: on_success
# Packaging pipelines build release version packages upon request.
- if: '$CMAKE_CI_PACKAGE != null && $CMAKE_CI_JOB_PACKAGE_ONLY == "true" && $CI_JOB_STAGE == "prep"'
when: manual
- if: '$CMAKE_CI_PACKAGE != null && $CMAKE_CI_JOB_PACKAGE_ONLY == "true" && $CI_JOB_STAGE != "upload"'
when: on_success
# Packaging pipelines upload release version packages to a staging area.
- if: '$CMAKE_CI_PACKAGE != null && $CMAKE_CI_JOB_PACKAGE_ONLY == "true" && $CI_JOB_STAGE == "upload" && $CMAKE_CI_PACKAGE_URL != null'
variables:
RSYNC_DESTINATION: "$CMAKE_CI_PACKAGE_URL"
when: on_success
# Packaging pipelines run no other jobs.
- if: '$CMAKE_CI_PACKAGE != null'
when: never
# Package-only jobs do not run in any other situations.
- if: '$CMAKE_CI_JOB_PACKAGE_ONLY == "true"'
when: never
### Development documentation pipelines.
# Development documentation pipelines run no other jobs.
- if: '$CMAKE_CI_PROJECT_MAIN_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_MAIN_BRANCH == $CI_COMMIT_BRANCH'
when: never
### Continuous pipelines.
# Continuous pipelines run manual jobs automatically after 5 minutes.
- if: '$CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH == $CI_COMMIT_BRANCH && $CMAKE_CI_JOB_CONTINUOUS == "true" && $CMAKE_CI_JOB_RUN_MANUALLY == "true"'
when: delayed
start_in: 5 minutes
# Continuous pipelines run other jobs automatically.
- if: '$CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH == $CI_COMMIT_BRANCH && $CMAKE_CI_JOB_CONTINUOUS == "true"'
when: on_success
# Continuous pipelines run no other jobs.
- if: '$CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH == $CI_COMMIT_BRANCH'
when: never
### Nightly pipelines.
# Nightly pipelines do not run jobs that are explicitly excluded.
- if: '$CMAKE_CI_NIGHTLY == "true" && $CMAKE_CI_JOB_NIGHTLY == "false"'
when: never
# Nightly pipelines always run jobs that ignore their dependencies.
- if: '$CMAKE_CI_NIGHTLY == "true" && $CMAKE_CI_JOB_NIGHTLY_IGNORE_DEPS == "true"'
when: always
# Nightly pipelines run all other jobs automatically when ready.
- if: '$CMAKE_CI_NIGHTLY == "true"'
when: on_success
# Nightly-only jobs do not run in any other situations.
- if: '$CMAKE_CI_JOB_NIGHTLY == "true"'
when: never
### Merge request pipelines.
# Merge request pipelines do not run jobs that are explicitly excluded.
- if: '$CI_MERGE_REQUEST_ID && $CMAKE_CI_JOB_NO_MR == "true"'
when: never
# Merge request pipelines run manual jobs upon request.
- if: '$CI_MERGE_REQUEST_ID && $CMAKE_CI_JOB_RUN_MANUALLY == "true"'
when: manual
# Merge request pipelines run other jobs automatically when ready.
- if: '$CI_MERGE_REQUEST_ID'
when: on_success
### Scheduled pipelines.
# Scheduled pipelines run all jobs automatically when ready.
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: on_success
### Other pipelines.
# Other pipelines run manual jobs upon request.
- if: '$CMAKE_CI_JOB_RUN_MANUALLY == "true"'
when: manual
# Other pipelines run jobs in the `build` stage automatically after 5 minutes.
- if: '$CI_JOB_STAGE == "build"'
when: delayed
start_in: 5 minutes
# Other pipelines run other jobs automatically when ready.
- when: on_success