1- name : CI
1+ name : Build+Test
22
33on :
44 push :
55 branches :
66 - ' **'
77 tags :
88 - ' v[0-9]+.[0-9]+.[0-9]+'
9-
10- pull_request :
11- branches :
12- - develop
139
1410jobs :
1511 build-windows :
@@ -18,51 +14,86 @@ jobs:
1814 defaults :
1915 run :
2016 shell : cmd
17+ env :
18+ RUSTFLAGS : -D warnings # Make Rust compiler fail on warnings
2119 steps :
2220 - uses : actions/checkout@v4
2321 with :
24- path : virtualbow
22+ path : virtualbow
23+
24+ - uses : TheMrMilchmann/setup-msvc-dev@v3 # Setup MSVC build environment
25+ with :
26+ arch : x64
2527
2628 - name : Get dependencies
2729 run : |
2830 choco install ninja
29- curl -LO https://github.com/bow-simulation/virtualbow-dependencies/releases/download/v1.5 .0/windows-mingw_64 .zip && 7z x windows-mingw_64 .zip
31+ curl -LO https://github.com/bow-simulation/virtualbow-dependencies/releases/download/v1.6 .0/windows-msvc_64 .zip && 7z x windows-msvc_64 .zip
3032
31- - name : Build and test
33+ - name : Extract test files
34+ run : |
35+ cd virtualbow/rust/virtualbow/data
36+ 7z x examples.zip -p${{ secrets.UNZIP_PASSWORD }}
37+
38+ - name : Build and test solver
39+ run : |
40+ cd virtualbow/rust
41+ cargo clippy --all-targets
42+ cargo build --release
43+ cargo test --release
44+
45+ - name : Build and test application
3246 run : |
3347 mkdir build && cd build
34- cmake ../virtualbow -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../windows-mingw_64 /paths.cmake
48+ cmake ../virtualbow/gui -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../windows-msvc_64 /paths.cmake
3549 cmake --build . -j4
3650 cmake --build . --target iss-installer -j4
37- virtualbow-test
38-
51+ virtualbow-test.exe
52+
3953 - uses : actions/upload-artifact@v4
4054 with :
4155 name : windows-application
4256 path : build/application
43-
57+ if-no-files-found : error
58+
4459 - uses : actions/upload-artifact@v4
4560 with :
4661 name : windows-packages
4762 path : build/packages
63+ if-no-files-found : error
4864
4965 build-linux :
50- runs-on : ubuntu-20 .04
66+ runs-on : ubuntu-24 .04
5167 timeout-minutes : 30
68+ env :
69+ RUSTFLAGS : -D warnings # Make Rust compiler fail on warnings
5270 steps :
5371 - uses : actions/checkout@v4
5472 with :
5573 path : virtualbow
5674
5775 - name : Get dependencies
5876 run : |
59- sudo apt install -y ninja-build qt5-default
60- curl -LO https://github.com/bow-simulation/virtualbow-dependencies/releases/download/v1.5.0/linux-gcc_64.zip && unzip linux-gcc_64.zip
77+ sudo apt update
78+ sudo apt install -y ninja-build qt6-base-dev pkg-config libfreetype6-dev libfontconfig1-dev
79+ curl -LO https://github.com/bow-simulation/virtualbow-dependencies/releases/download/v1.6.0/linux-gcc_64.zip && unzip linux-gcc_64.zip
80+
81+ - name : Extract test files
82+ run : |
83+ cd virtualbow/rust/virtualbow/data
84+ 7z x examples.zip -p${{ secrets.UNZIP_PASSWORD }}
6185
62- - name : Build and test
86+ - name : Build and test solver
87+ run : |
88+ cd virtualbow/rust
89+ cargo clippy --all-targets
90+ cargo build --release
91+ cargo test --release
92+
93+ - name : Build and test application
6394 run : |
6495 mkdir build && cd build
65- cmake ../virtualbow -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../linux-gcc_64/paths.cmake
96+ cmake ../virtualbow/gui -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../linux-gcc_64/paths.cmake
6697 cmake --build . -j4
6798 cmake --build . --target deb-package -j4
6899 cmake --build . --target rpm-package -j4
@@ -72,51 +103,65 @@ jobs:
72103 with :
73104 name : linux-application
74105 path : build/application
106+ if-no-files-found : error
75107
76108 - uses : actions/upload-artifact@v4
77109 with :
78110 name : linux-packages
79111 path : build/packages
112+ if-no-files-found : error
80113
81114 build-macos :
82- runs-on : macos-12
115+ runs-on : macos-13
83116 timeout-minutes : 30
117+ env :
118+ RUSTFLAGS : -D warnings # Make Rust compiler fail on warnings
84119 steps :
85120 - uses : actions/checkout@v4
86121 with :
87122 path : virtualbow
88123
89124 - name : Get dependencies
90125 run : |
91- brew install ninja
92126 npm install -g appdmg@0.6.0 --no-audit
93- curl -LO https://github.com/bow-simulation/virtualbow-dependencies/releases/download/v1.5 .0/macos-clang_64.zip && unzip macos-clang_64.zip
127+ curl -LO https://github.com/bow-simulation/virtualbow-dependencies/releases/download/v1.6 .0/macos-clang_64.zip && unzip macos-clang_64.zip
94128 chmod -R 755 macos-clang_64
129+
130+ - name : Extract test files
131+ run : |
132+ cd virtualbow/rust/virtualbow/data
133+ 7z x examples.zip -p${{ secrets.UNZIP_PASSWORD }}
134+
135+ - name : Build and test solver
136+ run : |
137+ cd virtualbow/rust
138+ cargo clippy --all-targets
139+ cargo build --release
140+ cargo test --release
95141
96- - name : Build and test
142+ - name : Build and test application
97143 run : |
98144 mkdir build && cd build
99- cmake ../virtualbow -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../macos-clang_64/paths.cmake -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13
145+ cmake ../virtualbow/gui -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../macos-clang_64/paths.cmake -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15
100146 cmake --build . -j4
101147 cmake --build . --target dmg-installer -j4
102148 ./virtualbow-test
103-
104- - name : Display file structure
105- run : ls -R
106-
149+
107150 - uses : actions/upload-artifact@v4
108151 with :
109152 name : macos-application
110153 path : build/application
154+ if-no-files-found : error
111155
112156 - uses : actions/upload-artifact@v4
113157 with :
114158 name : macos-packages
115159 path : build/packages
160+ if-no-files-found : error
116161
117162 develop-release :
118163 if : github.ref == 'refs/heads/develop'
119- runs-on : ubuntu-20.04
164+ runs-on : ubuntu-latest
120165 needs : [build-windows, build-linux, build-macos]
121166 steps :
122167 - uses : actions/download-artifact@v4
@@ -144,10 +189,10 @@ jobs:
144189 prerelease : true
145190 title : Development Build
146191 files : virtualbow*
147-
192+
148193 tagged-release :
149194 if : startsWith(github.ref, 'refs/tags')
150- runs-on : ubuntu-20.04
195+ runs-on : ubuntu-latest
151196 needs : [build-windows, build-linux, build-macos]
152197 steps :
153198 - uses : actions/download-artifact@v4
0 commit comments