Skip to content

Commit

Permalink
Add windows job to CI build & test
Browse files Browse the repository at this point in the history
  • Loading branch information
mortbopet committed Feb 28, 2025
1 parent 5d05a2b commit 9c6174d
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 7 deletions.
22 changes: 15 additions & 7 deletions .github/workflows/build_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,23 +27,31 @@ jobs:
run: git diff --exit-code
- name: Checking code style
run: ./scripts/run-clang-tidy.sh

build:
runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
include:
- os: ubuntu-latest
setup-script: ./scripts/setup-ubuntu.sh
- os: windows-latest
setup-script: ./scripts/find_vs.ps1
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Setup Ubuntu

- name: Build
run: |
./scripts/setup-ubuntu.sh
${{ matrix.setup-script }}
mkdir build
- name: Run cmake
run: |
cmake --version
cmake -Bbuild -GNinja -DCMAKE_BUILD_TYPE=Debug -DBUILD_TZ_LIB=ON
- name: Build
run: ninja -C build
ninja -C build
- name: Test
run: ctest --test-dir build --output-on-failure --timeout 30

48 changes: 48 additions & 0 deletions scripts/find_vs.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Find and enter a Visual Studio development environment.
# Required to use Ninja instead of msbuild on our build agents.
function Enter-VsDevEnv {
[CmdletBinding()]
param(
[Parameter()]
[switch]$Prerelease,
[Parameter()]
[string]$architecture = "x64"
)

$ErrorActionPreference = 'Stop'

if ($null -eq (Get-InstalledModule -name 'VSSetup' -ErrorAction SilentlyContinue)) {
Install-Module -Name 'VSSetup' -Scope CurrentUser -SkipPublisherCheck -Force
}
Import-Module -Name 'VSSetup'

Write-Verbose 'Searching for VC++ instances'
$vsinfo = `
Get-VSSetupInstance -All -Prerelease:$Prerelease `
| Select-VSSetupInstance `
-Latest -Product * `
-Require 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64'

$vspath = $vsinfo.InstallationPath

switch ($env:PROCESSOR_ARCHITECTURE) {
"amd64" { $hostarch = "x64" }
"x86" { $hostarch = "x86" }
"arm64" { $hostarch = "arm64" }
default { throw "Unknown architecture: $switch" }
}

$devShellModule = "$vspath\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"

Import-Module -Global -Name $devShellModule

Write-Verbose 'Setting up environment variables'
Enter-VsDevShell -VsInstanceId $vsinfo.InstanceId -SkipAutomaticLocation `
-devCmdArguments "-arch=$architecture -host_arch=$hostarch"

Set-Item -Force -path "Env:\Platform" -Value $architecture

remove-Module Microsoft.VisualStudio.DevShell, VSSetup
}

Enter-VsDevEnv

0 comments on commit 9c6174d

Please sign in to comment.