Skip to content

[Windows] GH Actions #95

[Windows] GH Actions

[Windows] GH Actions #95

Workflow file for this run

name: Windows Tests
on:
push:
branches:
- develop2
- release/*
pull_request:
branches:
- '*'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
testing:
strategy:
fail-fast: true
matrix:
python-version: ['3.13', '3.8', '3.6']
runs-on: windows-2022
name: Conan (${{ matrix.python-version }})
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install MSVC v14.39 toolset
run: |
Invoke-WebRequest -Uri "https://aka.ms/vs/17/release/vs_buildtools.exe" -OutFile "vs_buildtools17.exe"
Start-Process -FilePath ".\vs_buildtools17.exe" -ArgumentList `
"--quiet", "--wait", "--norestart", "--nocache", `
"--add", "Microsoft.VisualStudio.Component.VC.14.39.17.9.x86.x64" -WindowStyle Hidden -Wait
- name: Verify MSVC v14.39 toolset installation
run: |
dir "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC"
- name: Install Visual Studio Build Tools
run: |
Invoke-WebRequest -Uri "https://aka.ms/vs/15/release/vs_buildtools.exe" -OutFile "vs_buildtools15.exe"
Start-Process -FilePath ".\vs_buildtools15.exe" -ArgumentList `
"--quiet", "--wait", "--norestart", "--nocache", `
"--add", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", `
"--add", "Microsoft.VisualStudio.Component.Windows81SDK", `
"--add", "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core", `
"--add", "Microsoft.Component.MSBuild", `
"--add", "Microsoft.VisualStudio.Component.VC.140" -WindowStyle Hidden -Wait
- name: Cache pip packages
uses: actions/cache@v4
with:
path: C:\Users\runneradmin\AppData\Local\pip\cache
key: pip-packages-${{ runner.os }}-${{ hashFiles('conans/requirements*.txt') }}
restore-keys: |
pip-packages-${{ runner.os }}-
- name: Install Python requirements
run: |
pip install --upgrade pip
pip install -r conans/requirements.txt
pip install -r conans/requirements_server.txt
pip install -r conans/requirements_dev.txt
pip install meson
- name: "Set choco cache"
run: choco config set cacheLocation C:\choco-cache
- uses: actions/cache@v4
with:
path: C:\choco-cache
key: choco-cache
- name: Install Chocolatey packages
run: |
choco install pkgconfiglite --version 0.28
choco install ninja --version 1.10.2
choco install mingw
choco install cygwin
choco install cyg-get
cyg-get automake gcc-g++ make binutils --verbose
- uses: msys2/setup-msys2@v2
id: msys2-setup
with:
update: true
# It's important that the default environment that is used is MSYS
# we check this default in a test
msystem: MSYS
install: >-
mingw-w64-x86_64-toolchain
mingw-w64-i686-toolchain
base-devel
gcc
autoconf-wrapper
automake
- name: Cache CMake and Bazel installations
id: cache-tools
uses: actions/cache@v4
with:
path: |
C:\tools\cmake\3.15.7
C:\tools\cmake\3.19.7
C:\tools\cmake\3.23.5
C:\tools\bazel\6.3.2
C:\tools\bazel\7.1.2
key: ${{ runner.os }}-conan-tools-cache
- name: Build CMake old versions of CMake
if: steps.cache-tools.outputs.cache-hit != 'true'
run: |
$CMAKE_BUILD_VERSIONS = "3.15.7", "3.19.7"
foreach ($version in $CMAKE_BUILD_VERSIONS) {
Write-Host "Downloading CMake version $version for Windows..."
$destination = "C:\tools\cmake\$version"
if (-not (Test-Path $destination)) {
New-Item -Path $destination -ItemType Directory
}
$major_minor_version = ($version -split '\.')[0..1] -join '.'
$url = "https://cmake.org/files/v$major_minor_version/cmake-$version-win64-x64.zip"
$zipFile = "cmake-$version-windows-x86_64.zip"
Invoke-WebRequest -Uri $url -OutFile $zipFile
Expand-Archive -Path $zipFile -DestinationPath $destination -Force
Remove-Item $zipFile
}
- name: Install modern CMake versions
if: steps.cache-tools.outputs.cache-hit != 'true'
run: |
$CMAKE_BUILD_VERSIONS = "3.23.5"
foreach ($version in $CMAKE_BUILD_VERSIONS) {
$destination = "C:\tools\cmake\$version"
if (-not (Test-Path $destination)) {
New-Item -Path $destination -ItemType Directory
}
$major_minor_version = ($version -split '\.')[0..1] -join '.'
$url = "https://cmake.org/files/v$major_minor_version/cmake-$version-windows-x86_64.zip"
$zipFile = "cmake-$version-windows-x86_64.zip"
Invoke-WebRequest -Uri $url -OutFile $zipFile
Expand-Archive -Path $zipFile -DestinationPath $destination -Force
Remove-Item $zipFile
}
- name: Install Bazel versions
if: steps.cache-tools.outputs.cache-hit != 'true'
run: |
$BAZEL_BUILD_VERSIONS = "6.3.2", "7.1.2"
foreach ($version in $BAZEL_BUILD_VERSIONS) {
Write-Host "Downloading Bazel version $version for Windows..."
$destination = "C:\tools\bazel\$version"
if (-not (Test-Path $destination)) {
New-Item -Path $destination -ItemType Directory
}
$major_minor_version = ($version -split '\.')[0..1] -join '.'
$url = "https://github.com/bazelbuild/bazel/releases/download/$version/bazel-$version-windows-x86_64.zip"
$zipFile = "bazel-$version-windows-x86_64.zip"
Invoke-WebRequest -Uri $url -OutFile $zipFile
Expand-Archive -Path $zipFile -DestinationPath $destination -Force
Remove-Item $zipFile
}
- name: Run Tests
run: |
git config --global core.autocrlf false
$pathsToRemove = @()
$pathsToRemove += "C:\mingw64\bin" # To avoid that CMake finds gcc there
$pathsToRemove += "C:\Strawberry\c\bin"
$pathsToRemove += "C:\Program Files\CMake\bin" # Remove the default CMake version
$pathsToRemove += "C:\Program Files\Git\usr\bin" # To avoid using uname and other tools from there
foreach ($dir in $pathsToRemove) {
$newPath = ($env:PATH -split ";") -ne $dir -join ";"
[System.Environment]::SetEnvironmentVariable('PATH', $newPath)
Write-Host "$dir removed from PATH. Current PATH: $env:PATH"
}
# Check GCC is not in Path
$gccPath = Get-Command gcc.exe -ErrorAction SilentlyContinue
if ($null -ne $gccPath) {
Write-Host "GCC found in PATH at: $($gccPath.Path)"
} else {
Write-Host "GCC not found in PATH."
}
$shortGuid = [System.Guid]::NewGuid().ToString().Substring(0, 4)
$randomFolder = [System.IO.Path]::Combine("D:\\", "tmp_tests", $shortGuid)
New-Item -ItemType Directory -Force -Path $randomFolder
$env:CONAN_TEST_FOLDER = $randomFolder
$env:Path = "C:\tools\cmake\3.15.7\cmake-3.15.7-win64-x64\bin;" + $env:Path
$msys2Path = '${{ steps.msys2-setup.outputs.msys2-location }}'
[System.Environment]::SetEnvironmentVariable('MSYS2_PATH', $msys2Path, [System.EnvironmentVariableTarget]::Process)
Write-Host "Added MSYS2_PATH environment variable: $msys2Path"
pytest test/unittests test/integration test/functional -k test_msbuild_lib_2022 -n=auto --durations=50 -vvv