
Split packaging on Windows into dedicated jobs that run with access to
an EV signing certificate.
Prior to commit 0929221ca3
(gitlab-ci: Simplify Windows packaging
pipeline, 2023-02-28, v3.26.0-rc5~3^2~3) we had separate packaging jobs,
but they did not run in release packaging pipelines. Restore them, and
run them in both nightly and release packaging pipelines.
454 lines
11 KiB
YAML
454 lines
11 KiB
YAML
# Windows-specific builder configurations and build commands
|
|
|
|
## Base configurations
|
|
|
|
.windows:
|
|
variables:
|
|
GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake ci ext\\$CI_CONCURRENT_ID"
|
|
# Avoid conflicting with other projects running on the same machine.
|
|
SCCACHE_SERVER_PORT: 4227
|
|
|
|
### Build and test
|
|
|
|
.windows_build:
|
|
extends: .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_build_ninja:
|
|
extends: .windows_build
|
|
|
|
variables:
|
|
# Debug and RelWithDebinfo build types use the `/Zi` which results in
|
|
# uncacheable compilations.
|
|
# https://github.com/mozilla/sccache/issues/242
|
|
CMAKE_CI_BUILD_TYPE: Release
|
|
CTEST_NO_WARNINGS_ALLOWED: 1
|
|
|
|
.windows_vcvarsall_vs2022_x64:
|
|
variables:
|
|
VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
|
|
VCVARSPLATFORM: "x64"
|
|
VCVARSVERSION: "14.43.34808"
|
|
|
|
.windows_vcvarsall_vs2022_x86:
|
|
variables:
|
|
VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
|
|
VCVARSPLATFORM: "x86"
|
|
VCVARSVERSION: "14.43.34808"
|
|
|
|
.windows_vcvarsall_vs2022_x64_arm64:
|
|
variables:
|
|
VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
|
|
VCVARSPLATFORM: "x64_arm64"
|
|
VCVARSVERSION: "14.43.34808"
|
|
|
|
.windows_arm64_vcvarsall_vs2022:
|
|
variables:
|
|
VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
|
|
VCVARSPLATFORM: "arm64"
|
|
VCVARSVERSION: "14.43.34808"
|
|
|
|
.windows_vs2022_x64_pch:
|
|
extends:
|
|
- .windows_vs2022_x64_ninja
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_vs2022_x64_pch
|
|
|
|
.windows_vs2022_x64_ninja:
|
|
extends:
|
|
- .windows_build_ninja
|
|
- .windows_vcvarsall_vs2022_x64
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_vs2022_x64_ninja
|
|
|
|
.windows_arm64_vs2022_ninja:
|
|
extends:
|
|
- .windows_build_ninja
|
|
- .windows_arm64_vcvarsall_vs2022
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_arm64_vs2022_ninja
|
|
|
|
.windows_package:
|
|
extends:
|
|
- .windows_build_ninja
|
|
|
|
variables:
|
|
CMAKE_CI_BUILD_TYPE: Release
|
|
CMAKE_CI_NO_INSTALL: 1
|
|
|
|
.windows_x86_64_package:
|
|
extends:
|
|
- .windows_package
|
|
- .windows_vcvarsall_vs2022_x64
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_x86_64_package
|
|
|
|
.windows_i386_package:
|
|
extends:
|
|
- .windows_package
|
|
- .windows_vcvarsall_vs2022_x86
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_i386_package
|
|
|
|
.windows_arm64_package:
|
|
extends:
|
|
- .windows_package
|
|
- .windows_vcvarsall_vs2022_x64_arm64
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_arm64_package
|
|
|
|
### External testing
|
|
|
|
.windows_vs2022_x64:
|
|
extends: .windows
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_vs2022_x64
|
|
CMAKE_GENERATOR: "Visual Studio 17 2022"
|
|
CMAKE_GENERATOR_PLATFORM: "x64"
|
|
CMAKE_GENERATOR_TOOLSET: "v143,version=14.43.34808"
|
|
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
|
|
|
|
.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.29.30133"
|
|
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
|
|
|
|
.windows_borland:
|
|
extends: .windows
|
|
|
|
variables:
|
|
CMAKE_GENERATOR: "Borland Makefiles"
|
|
CMAKE_CI_BUILD_TYPE: Release
|
|
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
|
|
|
|
.windows_borland5.5:
|
|
extends: .windows_borland
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_borland5.5
|
|
|
|
.windows_borland5.8:
|
|
extends: .windows_borland
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_borland5.8
|
|
|
|
.windows_ninja:
|
|
extends: .windows
|
|
|
|
variables:
|
|
CMAKE_GENERATOR: "Ninja"
|
|
CMAKE_CI_BUILD_TYPE: Release
|
|
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
|
|
|
|
.windows_ninja_multi:
|
|
extends: .windows
|
|
|
|
variables:
|
|
CMAKE_GENERATOR: "Ninja Multi-Config"
|
|
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
|
|
|
|
.windows_nmake:
|
|
extends: .windows
|
|
|
|
variables:
|
|
CMAKE_GENERATOR: "NMake Makefiles"
|
|
CMAKE_CI_BUILD_TYPE: Release
|
|
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
|
|
|
|
.windows_jom:
|
|
extends: .windows
|
|
|
|
variables:
|
|
CMAKE_GENERATOR: "NMake Makefiles JOM"
|
|
CMAKE_CI_BUILD_TYPE: Release
|
|
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
|
|
|
|
.windows_vs2022_x64_nmake:
|
|
extends:
|
|
- .windows_nmake
|
|
- .windows_vcvarsall_vs2022_x64
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_vs2022_x64_nmake
|
|
|
|
.windows_vs2022_x64_jom:
|
|
extends:
|
|
- .windows_jom
|
|
- .windows_vcvarsall_vs2022_x64
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_vs2022_x64_jom
|
|
|
|
.windows_vs2022_x64_ninja_multi:
|
|
extends:
|
|
- .windows_ninja_multi
|
|
- .windows_vcvarsall_vs2022_x64
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_vs2022_x64_ninja_multi
|
|
|
|
.windows_clang_ninja:
|
|
extends:
|
|
- .windows_ninja
|
|
- .windows_vcvarsall_vs2022_x64
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_clang_ninja
|
|
|
|
.windows_clang_nmake:
|
|
extends:
|
|
- .windows_nmake
|
|
- .windows_vcvarsall_vs2022_x64
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_clang_nmake
|
|
|
|
.windows_msvc_v71_nmake:
|
|
extends: .windows_nmake
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_msvc_v71_nmake
|
|
|
|
.windows_intelclassic_ninja:
|
|
extends:
|
|
- .windows_ninja
|
|
- .windows_vcvarsall_vs2022_x64
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_intelclassic_ninja
|
|
|
|
.windows_inteloneapi_ninja:
|
|
extends:
|
|
- .windows_ninja
|
|
- .windows_vcvarsall_vs2022_x64
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_inteloneapi_ninja
|
|
|
|
.windows_openwatcom:
|
|
extends: .windows
|
|
|
|
variables:
|
|
# Watcom does not support spaces in the path.
|
|
GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID"
|
|
CMAKE_GENERATOR: "Watcom WMake"
|
|
CMAKE_CI_BUILD_TYPE: Release
|
|
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
|
|
|
|
.windows_openwatcom1.9:
|
|
extends: .windows_openwatcom
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_openwatcom1.9
|
|
|
|
.windows_orangec:
|
|
extends: .windows
|
|
|
|
variables:
|
|
CMAKE_GENERATOR: "Ninja"
|
|
CMAKE_CI_BUILD_TYPE: Release
|
|
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
|
|
|
|
.windows_orangec6.73.1:
|
|
extends: .windows_orangec
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_orangec6.73.1
|
|
|
|
.windows_arm64_vs2022:
|
|
extends: .windows
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: windows_arm64_vs2022
|
|
CMAKE_GENERATOR: "Visual Studio 17 2022"
|
|
CMAKE_GENERATOR_PLATFORM: "ARM64"
|
|
CMAKE_GENERATOR_TOOLSET: "v143,version=14.43.34808"
|
|
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
|
|
|
|
.mingw_osdn_io:
|
|
extends: .windows
|
|
|
|
variables:
|
|
# Place MinGW environment in a path without spaces.
|
|
GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID"
|
|
CMAKE_CI_BUILD_TYPE: Debug
|
|
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
|
|
|
|
.mingw_osdn_io_mingw_makefiles:
|
|
extends: .mingw_osdn_io
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: mingw_osdn_io_mingw_makefiles
|
|
CMAKE_GENERATOR: "MinGW Makefiles"
|
|
|
|
.mingw_osdn_io_msys_makefiles:
|
|
extends: .mingw_osdn_io
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: mingw_osdn_io_msys_makefiles
|
|
CMAKE_GENERATOR: "MSYS Makefiles"
|
|
|
|
## Tags
|
|
|
|
.windows_x86_64_tags_nonconcurrent_sign:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-x86_64
|
|
- shell
|
|
- sign-windows-v1
|
|
- nonconcurrent
|
|
|
|
.windows_x86_64_tags_nonconcurrent_vs2022:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-x86_64
|
|
- shell
|
|
- vs2022
|
|
- msvc-14.43
|
|
- nonconcurrent
|
|
|
|
.windows_x86_64_tags_nonconcurrent_vs2022_arm64:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-x86_64
|
|
- shell
|
|
- vs2022
|
|
- msvc-14.43-arm64
|
|
- nonconcurrent
|
|
|
|
.windows_x86_64_tags_concurrent_vs2022:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-x86_64
|
|
- shell
|
|
- vs2022
|
|
- msvc-14.43
|
|
- concurrent
|
|
|
|
.windows_x86_64_tags_concurrent_vs2022_android:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-x86_64
|
|
- shell
|
|
- vs2022
|
|
- vs17-android
|
|
- msvc-14.43
|
|
- concurrent
|
|
|
|
.windows_x86_64_tags_concurrent_vs2019_android:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-x86_64
|
|
- shell
|
|
- vs2019
|
|
- vs16-android
|
|
- msvc-19.29-16.11
|
|
- concurrent
|
|
|
|
.windows_x86_64_tags_concurrent:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-x86_64
|
|
- shell
|
|
- concurrent
|
|
|
|
.windows_arm64_tags_nonconcurrent_vs2022:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-arm64
|
|
- shell
|
|
- vs2022
|
|
- msvc-14.43
|
|
- nonconcurrent
|
|
|
|
.windows_arm64_tags_concurrent_vs2022:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-arm64
|
|
- shell
|
|
- vs2022
|
|
- msvc-14.43
|
|
- concurrent
|
|
|
|
## Windows-specific scripts
|
|
|
|
.before_script_windows: &before_script_windows
|
|
- . .gitlab/ci/env.ps1
|
|
- . .gitlab/ci/cmake-env.ps1
|
|
- . .gitlab/ci/ninja-env.ps1
|
|
- . .gitlab/ci/qt-env.ps1
|
|
- . .gitlab/ci/python-env.ps1
|
|
|
|
.before_script_windows_external: &before_script_windows_external
|
|
- . .gitlab/ci/env.ps1
|
|
- . .gitlab/ci/python-env.ps1
|
|
|
|
.cmake_build_windows:
|
|
stage: build
|
|
|
|
script:
|
|
- *before_script_windows
|
|
- . .gitlab/ci/sccache-env.ps1
|
|
- Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
|
|
- sccache --start-server
|
|
- sccache --show-stats
|
|
- (& "$pwsh" -File ".gitlab/ci/pre_build.ps1")
|
|
- ctest -VV -S .gitlab/ci/ctest_configure.cmake
|
|
- ctest -VV -S .gitlab/ci/ctest_build.cmake
|
|
- (& "$pwsh" -File ".gitlab/ci/post_build.ps1")
|
|
- sccache --show-stats
|
|
- sccache --stop-server
|
|
|
|
interruptible: true
|
|
|
|
.cmake_package_windows:
|
|
stage: package
|
|
environment:
|
|
name: sign-windows
|
|
script:
|
|
- . .gitlab/ci/env.ps1
|
|
- . .gitlab/ci/signtool-env.ps1
|
|
- . .gitlab/ci/cmake-env.ps1
|
|
- . .gitlab/ci/wix4-env.ps1
|
|
- . .gitlab/ci/package_windows.ps1
|
|
interruptible: true
|
|
|
|
.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:
|
|
stage: test-ext
|
|
|
|
script:
|
|
- *before_script_windows_external
|
|
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake
|
|
|
|
interruptible: true
|