Skip to content

Commit

Permalink
ci: Fix Windows build
Browse files Browse the repository at this point in the history
  • Loading branch information
vasylskorych committed Oct 10, 2024
1 parent e7fdb85 commit 9c86cc6
Showing 1 changed file with 50 additions and 48 deletions.
98 changes: 50 additions & 48 deletions .github/workflows/build_windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,9 @@ name: Windows
on: [push]

env:
# Path to the solution/project files relative to the root of the project.
SOLUTION_FILE_PATH: .
SOLUTION_FILE_NAME: musen.sln
INSTALLER_PROJECT_PATH: ./Installers/InstallerProject/

# Configuration type to build.
BUILD_CONFIGURATION: Release
BUILD_PLATFORM: x64

# Versions
QT_VERSION: 5.15.2
QT_VS_VERSION: msvc2019_64
QT_VS_ADDIN_VERSION: 3.2.0
QT_VS_ADDIN_URL: https://ftp.fau.de/qtproject/archive/vsaddin/3.2.0/qt-vsaddin-msvc2022-x64-3.2.0-rev.47.vsix
PATH_TO_CUDA: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
PATH_TO_VS_CUDA_TARGETS: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\BuildCustomizations

jobs:
build:
Expand All @@ -42,7 +32,7 @@ jobs:
# If cached, only install essential build tools and set environmental variables.
cache-key-prefix: 'cache-qt'
# Version of Qt to install.
version: ${{env.QT_VERSION}}
version: 5.15.2
# Architecture.
arch: win64_msvc2019_64
# Directory to install.
Expand All @@ -64,7 +54,7 @@ jobs:
# Also, it installs them to %LOCALAPPDATA%\QtMsBuild, so they can not be used by other Windows users.
# Download the extension and extract requited files to the project directory.
run: |
Invoke-WebRequest -Uri https://ftp.fau.de/qtproject/archive/vsaddin/${{env.QT_VS_ADDIN_VERSION}}/qt-vsaddin-msvc2022-x64-${{env.QT_VS_ADDIN_VERSION}}-rev.47.vsix -MaximumRetryCount 10 -RetryIntervalSec 30 -OutFile vspackage.vsix
Invoke-WebRequest -Uri ${{env.QT_VS_ADDIN_URL}} -MaximumRetryCount 10 -RetryIntervalSec 30 -OutFile vspackage.vsix
Expand-Archive vspackage.vsix -DestinationPath ${{github.workspace}}/ExternalLibraries/qtvsaddin
- name: Cache ZLib
Expand Down Expand Up @@ -99,7 +89,7 @@ jobs:
id: cache-cuda
uses: actions/cache@v4
with:
path: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA
path: ${{env.PATH_TO_CUDA}}
key: ${{runner.os}}-CUDACache

- name: Install CUDA
Expand All @@ -108,29 +98,41 @@ jobs:
id: install-cuda
with:
cuda: '11.8.0'
sub-packages: '["cudart", "curand_dev", "nvcc", "thrust"]'
sub-packages: '["cudart", "curand_dev", "nvcc", "thrust", "visual_studio_integration"]'
method: 'network'

- name: Install CUDA VS integration
uses: Jimver/cuda-toolkit@v0.2.17
id: install-cuda-vs
with:
cuda: '11.8.0'
sub-packages: '["visual_studio_integration"]'
method: 'network'
- name: Get CUDA MsBuild tools
if: steps.cache-cuda.outputs.cache-hit == 'true'
# Get additional project files to build CUDA projects with MSBuild. This work is normally done by CUDA visual_studio_integration.
# But since it installation of visual_studio_integration is very slow, we do it manually if cache was hit.
# Set environment variables and copy build customization files.
run: |
echo ("CUDA_PATH=${{env.PATH_TO_CUDA}}\v11.8") >> $env:GITHUB_ENV
echo ("CUDA_PATH_V11_8=${{env.PATH_TO_CUDA}}\v11.8") >> $env:GITHUB_ENV
New-Item -ItemType Directory -Force -Path "${{env.PATH_TO_VS_CUDA_TARGETS}}"
Copy-Item "${{env.PATH_TO_CUDA}}\v11.8\extras\visual_studio_integration\MSBuildExtensions\*" "${{env.PATH_TO_VS_CUDA_TARGETS}}\"
- name: Build
working-directory: ${{github.workspace}}
env:
QtToolsPath: ${{env.QT_ROOT_DIR}}/bin
QtMsBuild: ${{github.workspace}}/ExternalLibraries/qtvsaddin/QtMsBuild
# Add additional options to the MSBuild command line here: see https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference.
run: msbuild -maxCpuCount -verbosity:minimal -property:Configuration=${{env.BUILD_CONFIGURATION}} -property:Platform=${{env.BUILD_PLATFORM}} ${{env.SOLUTION_FILE_PATH}}/${{env.SOLUTION_FILE_NAME}}
run: msbuild -maxCpuCount -verbosity:minimal -property:Configuration=Release -property:Platform=x64 ${{github.workspace}}/musen.sln

- name: Upload Release Build Artifact
if: github.ref == 'refs/heads/master'
uses: actions/upload-artifact@v4
with:
name: build-artifact
if-no-files-found: error
retention-days: 1
compression-level: 1
path: ${{github.workspace}}/x64/Release/*

installer:
runs-on: windows-latest
needs: [build]
# if: github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/master'

steps:
- name: Checkout
Expand All @@ -150,7 +152,7 @@ jobs:
# If cached, only install essential build tools and set environmental variables.
cache-key-prefix: 'cache-qt'
# Version of Qt to install.
version: ${{env.QT_VERSION}}
version: 5.15.2
# Architecture.
arch: win64_msvc2019_64
# Directory to install.
Expand All @@ -172,7 +174,7 @@ jobs:
# Also, it installs them to %LOCALAPPDATA%\QtMsBuild, so they can not be used by other Windows users.
# Download the extension and extract requited files to the project directory.
run: |
Invoke-WebRequest -Uri https://ftp.fau.de/qtproject/archive/vsaddin/${{env.QT_VS_ADDIN_VERSION}}/qt-vsaddin-msvc2022-x64-${{env.QT_VS_ADDIN_VERSION}}-rev.47.vsix -MaximumRetryCount 10 -RetryIntervalSec 30 -OutFile vspackage.vsix
Invoke-WebRequest -Uri ${{env.QT_VS_ADDIN_URL}} -MaximumRetryCount 10 -RetryIntervalSec 30 -OutFile vspackage.vsix
Expand-Archive vspackage.vsix -DestinationPath ${{github.workspace}}/ExternalLibraries/qtvsaddin
- name: Cache ZLib
Expand Down Expand Up @@ -207,7 +209,7 @@ jobs:
id: cache-cuda
uses: actions/cache@v4
with:
path: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA
path: ${{env.PATH_TO_CUDA}}
key: ${{runner.os}}-CUDACache

- name: Install CUDA
Expand All @@ -216,32 +218,32 @@ jobs:
id: install-cuda
with:
cuda: '11.8.0'
sub-packages: '["cudart", "curand_dev", "nvcc", "thrust"]'
method: 'network'

- name: Install CUDA VS integration
uses: Jimver/cuda-toolkit@v0.2.17
id: install-cuda-vs
with:
cuda: '11.8.0'
sub-packages: '["visual_studio_integration"]'
sub-packages: '["cudart", "curand_dev", "nvcc", "thrust", "visual_studio_integration"]'
method: 'network'

- name: Build
working-directory: ${{github.workspace}}
env:
QtToolsPath: ${{env.QT_ROOT_DIR}}/bin
QtMsBuild: ${{github.workspace}}/ExternalLibraries/qtvsaddin/QtMsBuild
- name: Get CUDA MsBuild tools
if: steps.cache-cuda.outputs.cache-hit == 'true'
# Get additional project files to build CUDA projects with MSBuild. This work is normally done by CUDA visual_studio_integration.
# But since it installation of visual_studio_integration is very slow, we do it manually if cache was hit.
# Set environment variables and copy build customization files.
run: |
msbuild -maxCpuCount -verbosity:minimal -property:Configuration=Debug -property:Platform=${{env.BUILD_PLATFORM}} ${{env.SOLUTION_FILE_PATH}}/${{env.SOLUTION_FILE_NAME}}
msbuild -maxCpuCount -verbosity:minimal -property:Configuration=Release -property:Platform=${{env.BUILD_PLATFORM}} ${{env.SOLUTION_FILE_PATH}}/${{env.SOLUTION_FILE_NAME}}
echo ("CUDA_PATH=${{env.PATH_TO_CUDA}}\v11.8") >> $env:GITHUB_ENV
echo ("CUDA_PATH_V11_8=${{env.PATH_TO_CUDA}}\v11.8") >> $env:GITHUB_ENV
New-Item -ItemType Directory -Force -Path "${{env.PATH_TO_VS_CUDA_TARGETS}}"
Copy-Item "${{env.PATH_TO_CUDA}}\v11.8\extras\visual_studio_integration\MSBuildExtensions\*" "${{env.PATH_TO_VS_CUDA_TARGETS}}\"
- name: Download Release Build Artifact
uses: actions/download-artifact@v4
with:
name: build-artifact
path: ${{github.workspace}}/x64/Release/

- name: Build Installer
working-directory: ${{github.workspace}}
env:
QtToolsPath: ${{env.QT_ROOT_DIR}}/bin
QtMsBuild: ${{github.workspace}}/ExternalLibraries/qtvsaddin/QtMsBuild
run: msbuild -maxCpuCount -verbosity:minimal -property:Configuration=${{env.BUILD_CONFIGURATION}} -property:Platform=${{env.BUILD_PLATFORM}} -property:SolutionDir=${{github.workspace}}/ -property:SolutionPath=${{github.workspace}}/${{env.SOLUTION_FILE_NAME}} -property:QtInstallDir=${{github.workspace}}/ExternalLibraries/qt/Qt/${{env.QT_VERSION}}/${{env.QT_VS_VERSION}}/ ${{env.INSTALLER_PROJECT_PATH}}
run: msbuild -maxCpuCount -verbosity:minimal -property:Configuration=Release -property:Platform=x64 -property:SolutionDir=${{github.workspace}}/ -property:SolutionPath=${{github.workspace}}/musen.sln -property:QtInstallDir=${{github.workspace}}/ExternalLibraries/qt/Qt/5.15.2/msvc2019_64/ ${{github.workspace}}/Installers/InstallerProject/

- name: Run Installer
shell: pwsh
Expand Down Expand Up @@ -271,7 +273,7 @@ jobs:
shell: pwsh
run: |
$UnInstallerFile = Resolve-Path "${{ env.LOCALAPPDATA_DIR }}/Programs/MUSEN/unins000.exe"
Start-Process -FilePath $UnInstallerFile -ArgumentList "/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /skipaskconfig=yes" -Wait
Start-Process -FilePath $UnInstallerFile -ArgumentList "/VERYSILENT /SUPPRESSMSGBOXES /NORESTART" -Wait
release:
runs-on: windows-latest
Expand Down

0 comments on commit 9c86cc6

Please sign in to comment.