Revision 9ff7fffbf492ae32a57b2768a3025aa3521aabe4 authored by Brad King on 02 August 2022, 18:36:58 UTC, committed by Brad King on 02 August 2022, 18:38:22 UTC
Since commit 06c6e76a12 (ci: update to WiX 3.14.0.6526, 2022-06-10,
v3.24.0-rc1~4^2~2) we download the WiX binaries from `wixtoolset.org`
instead of a `github.com` CDN.  Avoid hitting their organization site
on every CI job by hosting the binaries at `cmake.org`.
1 parent e18fb0c
Raw File
os-windows.yml
# 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.32.31326"

.windows_vcvarsall_vs2022_x86:
    variables:
        VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
        VCVARSPLATFORM: "x86"
        VCVARSVERSION: "14.32.31326"

.windows_vcvarsall_vs2022_x64_arm64:
    variables:
        VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
        VCVARSPLATFORM: "x64_arm64"
        VCVARSVERSION: "14.32.31326"

.windows_vs2022_x64_ninja:
    extends:
        - .windows_build_ninja
        - .windows_vcvarsall_vs2022_x64

    variables:
        CMAKE_CONFIGURATION: windows_vs2022_x64_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.32.31326"
        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

## Tags

.windows_tags_nonconcurrent_vs2022:
    tags:
        - cmake # Since this is a bare runner, pin to a project.
        - windows
        - shell
        - vs2022
        - msvc-19.32
        - nonconcurrent

.windows_tags_nonconcurrent_vs2022_arm64:
    tags:
        - cmake # Since this is a bare runner, pin to a project.
        - windows
        - shell
        - vs2022
        - msvc-19.32-arm64
        - nonconcurrent

.windows_tags_concurrent_vs2022:
    tags:
        - cmake # Since this is a bare runner, pin to a project.
        - windows
        - shell
        - vs2022
        - msvc-19.32
        - concurrent

.windows_tags_concurrent_vs2019:
    tags:
        - cmake # Since this is a bare runner, pin to a project.
        - windows
        - shell
        - vs2019
        - msvc-19.29-16.11
        - concurrent

.windows_tags_concurrent:
    tags:
        - cmake # Since this is a bare runner, pin to a project.
        - windows
        - shell
        - concurrent

## Windows-specific scripts

.before_script_windows: &before_script_windows
    - Invoke-Expression -Command .gitlab/ci/env.ps1
    - $pwdpath = $pwd.Path
    - powershell -File ".gitlab/ci/wix.ps1"
    - Set-Item -Force -Path "env:WIX" -Value "$pwdpath\.gitlab\wix"
    - powershell -File ".gitlab/ci/cmake.ps1"
    - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\cmake\bin;$env:PATH"
    - powershell -File ".gitlab/ci/ninja.ps1"
    - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$env:PATH"
    - (& "$env:WIX\bin\light.exe" -help) | Select -First 1
    - cmake --version
    - ninja --version
    - cmake -P .gitlab/ci/download_qt.cmake
    - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\qt\bin;$env:PATH"
    - cmake -P .gitlab/ci/download_python3.cmake
    - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\python3;$env:PATH"
    - python --version

.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_package_windows:
    stage: package

    script:
        - *before_script_windows
        - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
        - cd build
        - cpack -G ZIP
        - cpack -G WIX

    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:
        - Invoke-Expression -Command .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:
        - 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:
        - 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:
        - 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_clang:
    stage: test-ext

    script:
        - $pwdpath = $pwd.Path
        - powershell -File ".gitlab/ci/ninja.ps1"
        - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$env:PATH"
        - Invoke-Expression -Command .gitlab/ci/clang.ps1
        - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
        - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\llvm\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:
        - 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:
        - 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
back to top