
In commit 4c7c66dcf5
(gitlab-ci: Add jobs to make Windows x86_64 and
i386 packages, 2022-05-19, v3.24.0-rc1~112^2) we used a separate Windows
packaging job in nightly packaging pipelines. It did not run in release
pipelines, where we need to run the final packaging step manually with
signing. Simplify nightly packaging pipelines by running `cpack` at the
end of the build job as we do for other platforms.
For release packaging pipelines, create an archive of the files needed
to build a package, and present this as the built "package" on Windows.
450 lines
12 KiB
YAML
450 lines
12 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 compiations.
|
|
# 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.35.32215"
|
|
|
|
.windows_vcvarsall_vs2022_x86:
|
|
variables:
|
|
VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
|
|
VCVARSPLATFORM: "x86"
|
|
VCVARSVERSION: "14.35.32215"
|
|
|
|
.windows_vcvarsall_vs2022_x64_arm64:
|
|
variables:
|
|
VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
|
|
VCVARSPLATFORM: "x64_arm64"
|
|
VCVARSVERSION: "14.35.32215"
|
|
|
|
.windows_arm64_vcvarsall_vs2022:
|
|
variables:
|
|
VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
|
|
VCVARSPLATFORM: "arm64"
|
|
VCVARSVERSION: "14.35.32215"
|
|
|
|
.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.35.32215"
|
|
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_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_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.35.32215"
|
|
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_vs2022:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-x86_64
|
|
- shell
|
|
- vs2022
|
|
- msvc-19.35
|
|
- 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-19.35-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-19.35
|
|
- concurrent
|
|
|
|
.windows_x86_64_tags_concurrent_vs2019:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-x86_64
|
|
- shell
|
|
- vs2019
|
|
- 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-19.35
|
|
- nonconcurrent
|
|
|
|
.windows_arm64_tags_concurrent_vs2022:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-arm64
|
|
- shell
|
|
- vs2022
|
|
- msvc-19.35
|
|
- concurrent
|
|
|
|
## Windows-specific scripts
|
|
|
|
.before_script_windows: &before_script_windows
|
|
- . .gitlab/ci/env.ps1
|
|
- $pwdpath = $pwd.Path
|
|
- (& "$pwsh" -File ".gitlab/ci/wix.ps1")
|
|
- Set-Item -Force -Path "env:WIX" -Value "$pwdpath\.gitlab\wix"
|
|
- (& "$pwsh" -File ".gitlab/ci/cmake.ps1")
|
|
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\cmake\bin;$env:PATH"
|
|
- . .gitlab/ci/ninja-env.ps1
|
|
- (& "$env:WIX\bin\light.exe" -help) | Select -First 1
|
|
- cmake --version
|
|
- . .gitlab/ci/qt-env.ps1
|
|
- . .gitlab/ci/python-env.ps1
|
|
|
|
.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
|
|
- (& "$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_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:
|
|
- . .gitlab/ci/env.ps1
|
|
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake
|
|
|
|
interruptible: true
|
|
|
|
.cmake_test_windows_nmake:
|
|
stage: test-ext
|
|
|
|
script:
|
|
- . .gitlab/ci/env.ps1
|
|
- Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
|
|
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake
|
|
|
|
interruptible: true
|
|
|
|
.cmake_test_windows_jom:
|
|
stage: test-ext
|
|
|
|
script:
|
|
- . .gitlab/ci/env.ps1
|
|
- Invoke-Expression -Command .gitlab/ci/jom.ps1
|
|
- $pwdpath = $pwd.Path
|
|
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\jom;$env:PATH"
|
|
- Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
|
|
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake
|
|
|
|
interruptible: true
|
|
|
|
.cmake_test_windows_borland:
|
|
stage: test-ext
|
|
|
|
script:
|
|
- . .gitlab/ci/env.ps1
|
|
- Invoke-Expression -Command .gitlab/ci/borland.ps1
|
|
- $pwdpath = $pwd.Path
|
|
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\bcc\bin;$env:PATH"
|
|
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake
|
|
|
|
interruptible: true
|
|
|
|
.cmake_test_windows_msvc:
|
|
stage: test-ext
|
|
|
|
script:
|
|
- . .gitlab/ci/env.ps1
|
|
- Invoke-Expression -Command .gitlab/ci/msvc.ps1
|
|
- Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
|
|
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake
|
|
|
|
interruptible: true
|
|
|
|
.cmake_test_windows_openwatcom:
|
|
stage: test-ext
|
|
|
|
script:
|
|
- . .gitlab/ci/env.ps1
|
|
- Invoke-Expression -Command .gitlab/ci/openwatcom.ps1
|
|
- $pwdpath = $pwd.Path
|
|
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\watcom\binnt;$pwdpath\.gitlab\watcom\binw;$env:PATH"
|
|
- Set-Item -Force -Path "env:INCLUDE" -Value "$pwdpath\.gitlab\watcom\h;$pwdpath\.gitlab\watcom\h\nt"
|
|
- Set-Item -Force -Path "env:EDPATH" -Value "$pwdpath\.gitlab\watcom\eddat"
|
|
- Set-Item -Force -Path "env:WATCOM" -Value "$pwdpath\.gitlab\watcom"
|
|
- Set-Item -Force -Path "env:WLINKTMP" -Value "."
|
|
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake
|
|
|
|
interruptible: true
|