-
Notifications
You must be signed in to change notification settings - Fork 14
222 lines (184 loc) · 7.94 KB
/
build_windows.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# Copyright (c) 2023, DyssolTEC. All rights reserved. This file is part of Dyssol. See LICENSE file for license information.
# A workflow for testing on Windows
name: Windows
on: [push]
env:
# Path to the solution/project files relative to the root of the project.
SOLUTION_FILE_PATH: .
SOLUTION_FILE_NAME: Dyssol.sln
TESTS_PROJECT_PATH: ./DyssolInstallers/Tests/
DOCS_PROJECT_PATH: ./DyssolInstallers/Documentation/
# 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: 2.7.2
ZLIB_VERSION: 1.2.13
SUNDIALS_VERSION: 6.4.1
HDF5_VERSION: 1.12.2
GRAPHVIZ_VERSION: 7.0.4
jobs:
build:
runs-on: windows-2019
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1
- name: Cache Qt
id: cache-qt
uses: actions/cache@v3
with:
path: ${{github.workspace}}/ExternalLibraries/qt
key: ${{runner.os}}-QtCache-${{env.QT_VERSION}}
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
# If cached, only install essential build tools and set environmental variables.
cache: ${{steps.cache-qt.outputs.cache-hit}}
# Version of Qt to install.
version: ${{env.QT_VERSION}}
# Architecture.
arch: win64_${{env.QT_VS_VERSION}}
# Directory to install.
dir: ${{github.workspace}}/ExternalLibraries/qt
# Whether or not to automatically run setup-python to find a valid python version.
setup-python: 'false'
- name: Cache QtMsBuild tools
id: cache-qt-ms-build-tools
uses: actions/cache@v3
with:
path: ${{github.workspace}}/ExternalLibraries/qtvsaddin
key: ${{runner.os}}-QtMsBuildCache-${{env.QT_VS_ADDIN_VERSION}}
- name: Get QtMsBuild tools
if: steps.cache-qt-ms-build-tools.outputs.cache-hit != 'true'
working-directory: ${{github.workspace}}
# Get additional project files to build Qt solution with MSBuild. This work is usually done in Visual Studio with Qt VS Tools extension.
# 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-msvc2019-${{env.QT_VS_ADDIN_VERSION}}.vsix -MaximumRetryCount 10 -RetryIntervalSec 30 -OutFile vspackage.vsix
Expand-Archive vspackage.vsix -DestinationPath ${{github.workspace}}/ExternalLibraries/qtvsaddin
- name: Cache ZLib
id: cache-zlib
uses: actions/cache@v3
with:
path: ${{github.workspace}}/ExternalLibraries/zlib
key: ${{runner.os}}-ZLibCache-${{env.ZLIB_VERSION}}
- name: Build ZLib
if: steps.cache-zlib.outputs.cache-hit != 'true'
working-directory: ${{github.workspace}}/ExternalLibraries
shell: pwsh
# Run the script to build zlib.
run: .\CompileZLib.ps1
- name: Cache SUNDIALS
id: cache-sundials
uses: actions/cache@v3
with:
path: ${{github.workspace}}/ExternalLibraries/sundials
key: ${{runner.os}}-SundialsCache-${{env.SUNDIALS_VERSION}}
- name: Build SUNDIALS
if: steps.cache-sundials.outputs.cache-hit != 'true'
working-directory: ${{github.workspace}}/ExternalLibraries
shell: pwsh
# Run the script to build sundials.
run: .\CompileSundials.ps1
- name: Cache HDF5
id: cache-hdf5
uses: actions/cache@v3
with:
path: ${{github.workspace}}/ExternalLibraries/hdf5
key: ${{runner.os}}-Hdf5Cache-${{env.HDF5_VERSION}}
- name: Build HDF5
if: steps.cache-hdf5.outputs.cache-hit != 'true'
working-directory: ${{github.workspace}}/ExternalLibraries
shell: pwsh
# Run the script to build hdf5.
run: .\CompileHDF5.ps1
- name: Cache Graphviz
id: cache-graphviz
uses: actions/cache@v3
with:
path: ${{github.workspace}}/ExternalLibraries/graphviz
key: ${{runner.os}}-GraphvizCache-${{env.GRAPHVIZ_VERSION}}
- name: Build Graphviz
if: steps.cache-graphviz.outputs.cache-hit != 'true'
working-directory: ${{github.workspace}}/ExternalLibraries
shell: pwsh
# Run the script to build graphviz.
run: .\CompileGraphviz.ps1
- name: Build
working-directory: ${{github.workspace}}
env:
QtToolsPath: ${{env.Qt5_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}}
- name: Upload Build Artifact
uses: actions/upload-artifact@v3
with:
name: build-artifact
path: |
${{github.workspace}}/${{env.BUILD_PLATFORM}}/${{env.BUILD_CONFIGURATION}}/*.exe
${{github.workspace}}/${{env.BUILD_PLATFORM}}/${{env.BUILD_CONFIGURATION}}/*.dll
tests:
runs-on: windows-2019
needs: build
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1
- name: Download Build Artifact
uses: actions/download-artifact@v3
with:
name: build-artifact
path: ${{github.workspace}}/${{env.BUILD_PLATFORM}}/${{env.BUILD_CONFIGURATION}}
- name: Run Tests
working-directory: ${{github.workspace}}
# 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}} -property:SolutionDir=${{github.workspace}}/ -property:SolutionPath=${{github.workspace}}/${{env.SOLUTION_FILE_NAME}} -property:TestsPreBuild=false ${{env.TESTS_PROJECT_PATH}}
docs:
runs-on: windows-2019
needs: build
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1
- name: Install Graphviz
run: choco install graphviz
- name: Install Doxygen
run: choco install doxygen.install
- name: Install Sphinx
run: pip install -U sphinx sphinx-rtd-theme breathe
- name: Install MiKTeX
shell: pwsh
run: |
choco install miktex
echo "C:\Program Files\MiKTeX\miktex\bin\x64" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8
refreshenv
initexmf --admin --verbose --set-config-value=[MPM]AutoInstall=1
miktex --admin --verbose packages update-package-database
miktex --admin --verbose packages update
miktex --admin --verbose packages install amscls, anyfontsize, preview, zhmetrics
miktex --admin --verbose fndb refresh
initexmf --admin --verbose --update-fndb
initexmf --admin --verbose --mklinks --force
updmap --admin
- name: Build Docs
working-directory: ${{github.workspace}}
# 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}} -property:SolutionDir=${{github.workspace}}/ ${{env.DOCS_PROJECT_PATH}}
cleanup:
runs-on: windows-2019
needs: [build, tests]
if: ${{always()}}
steps:
- name: Delete Build Artifact
uses: geekyeggo/delete-artifact@v2
with:
name: build-artifact
failOnError: false