77 types : [published]
88
99jobs :
10+ # Build dashboard first - shared by all jobs
11+ build-dashboard :
12+ runs-on : ubuntu-latest
13+ steps :
14+ - uses : actions/checkout@v6
15+ - name : Setup Node.js
16+ uses : actions/setup-node@v4
17+ with :
18+ node-version : ' 20'
19+ - name : Install pnpm
20+ run : npm install -g pnpm
21+ - name : Build dashboard
22+ run : |
23+ cd dashboard
24+ pnpm install --frozen-lockfile
25+ pnpm build
26+ - name : Upload dashboard artifacts
27+ uses : actions/upload-artifact@v4
28+ with :
29+ name : dashboard-dist
30+ path : dashboard/dist
31+ retention-days : 1
32+
1033 # Separated Linux builds - each runs independently
1134 # If one fails, others continue
1235
1336 build-linux-x86_64-gnu :
37+ needs : build-dashboard
1438 runs-on : ubuntu-latest
1539 steps :
1640 - uses : actions/checkout@v6
41+ - name : Download dashboard artifacts
42+ uses : actions/download-artifact@v4
43+ with :
44+ name : dashboard-dist
45+ path : dashboard/dist
1746 - name : Install dependencies
1847 run : |
1948 sudo apt-get update
3463 token : ${{ secrets.GITHUB_TOKEN }}
3564
3665 build-linux-x86_64-musl :
66+ needs : build-dashboard
3767 runs-on : ubuntu-latest
3868 steps :
3969 - uses : actions/checkout@v6
70+ - name : Download dashboard artifacts
71+ uses : actions/download-artifact@v4
72+ with :
73+ name : dashboard-dist
74+ path : dashboard/dist
4075 - name : Install dependencies
4176 run : |
4277 sudo apt-get update
4883 run : cargo install cross --git https://github.com/cross-rs/cross
4984 - name : Build musl binaries with cross
5085 run : |
51- cross build --release --target x86_64-unknown-linux-musl --no-default-features
86+ cross build --release --target x86_64-unknown-linux-musl --no-default-features --features vendored-openssl
5287 mkdir -p dist
5388 cp target/x86_64-unknown-linux-musl/release/vectorizer dist/vectorizer-x86_64-unknown-linux-musl
5489 cp target/x86_64-unknown-linux-musl/release/vectorizer-cli dist/vectorizer-cli-x86_64-unknown-linux-musl
6398 - name : Build Debian Package
6499 run : |
65100 cargo install cargo-deb
66- cross build --release --target x86_64-unknown-linux-musl --no-default-features
101+ cross build --release --target x86_64-unknown-linux-musl --no-default-features --features vendored-openssl
67102 cargo deb --no-build --no-strip --target x86_64-unknown-linux-musl
68103 - name : Upload Debian package
69104 uses : svenstaro/upload-release-action@v2
@@ -75,9 +110,15 @@ jobs:
75110 file_glob : true
76111
77112 build-linux-aarch64-musl :
113+ needs : build-dashboard
78114 runs-on : ubuntu-latest
79115 steps :
80116 - uses : actions/checkout@v6
117+ - name : Download dashboard artifacts
118+ uses : actions/download-artifact@v4
119+ with :
120+ name : dashboard-dist
121+ path : dashboard/dist
81122 - name : Install dependencies
82123 run : |
83124 sudo apt-get update
89130 run : cargo install cross --git https://github.com/cross-rs/cross
90131 - name : Build musl binaries with cross
91132 run : |
92- cross build --release --target aarch64-unknown-linux-musl --no-default-features
133+ cross build --release --target aarch64-unknown-linux-musl --no-default-features --features vendored-openssl
93134 mkdir -p dist
94135 cp target/aarch64-unknown-linux-musl/release/vectorizer dist/vectorizer-aarch64-unknown-linux-musl
95136 cp target/aarch64-unknown-linux-musl/release/vectorizer-cli dist/vectorizer-cli-aarch64-unknown-linux-musl
@@ -103,6 +144,7 @@ jobs:
103144 file_glob : true
104145
105146 build-mac-binaries :
147+ needs : build-dashboard
106148 strategy :
107149 matrix :
108150 include :
@@ -112,6 +154,12 @@ jobs:
112154 os : macos-latest
113155 runs-on : ${{ matrix.os }}
114156 steps :
157+ - uses : actions/checkout@v6
158+ - name : Download dashboard artifacts
159+ uses : actions/download-artifact@v4
160+ with :
161+ name : dashboard-dist
162+ path : dashboard/dist
115163 - name : Install dependencies
116164 run : |
117165 brew update-reset
@@ -120,7 +168,6 @@ jobs:
120168 rustup update
121169 rustup show
122170 cargo -Vv
123- - uses : actions/checkout@v6
124171 - name : Build and publish vectorizer
125172 uses : taiki-e/upload-rust-binary-action@v1
126173 with :
@@ -135,6 +182,7 @@ jobs:
135182 token : ${{ secrets.GITHUB_TOKEN }}
136183
137184 build-mac-metal-binaries :
185+ needs : build-dashboard
138186 name : Build macOS ARM with Metal GPU support
139187 strategy :
140188 matrix :
@@ -143,6 +191,12 @@ jobs:
143191 os : macos-latest
144192 runs-on : ${{ matrix.os }}
145193 steps :
194+ - uses : actions/checkout@v6
195+ - name : Download dashboard artifacts
196+ uses : actions/download-artifact@v4
197+ with :
198+ name : dashboard-dist
199+ path : dashboard/dist
146200 - name : Install dependencies
147201 run : |
148202 brew update-reset
@@ -152,7 +206,6 @@ jobs:
152206 rustup target add ${{ matrix.target }}
153207 rustup show
154208 cargo -Vv
155- - uses : actions/checkout@v6
156209 - name : Build vectorizer with Metal support
157210 uses : taiki-e/upload-rust-binary-action@v1
158211 with :
@@ -171,6 +224,7 @@ jobs:
171224 token : ${{ secrets.GITHUB_TOKEN }}
172225
173226 build-windows-binaries :
227+ needs : build-dashboard
174228 strategy :
175229 matrix :
176230 include :
@@ -180,6 +234,11 @@ jobs:
180234 - name : Install minimal stable
181235 uses : dtolnay/rust-toolchain@stable
182236 - uses : actions/checkout@v6
237+ - name : Download dashboard artifacts
238+ uses : actions/download-artifact@v4
239+ with :
240+ name : dashboard-dist
241+ path : dashboard/dist
183242 - uses : Swatinem/rust-cache@v2
184243 - name : Install protoc
185244 shell : pwsh
@@ -197,42 +256,3 @@ jobs:
197256 with :
198257 bin : vectorizer-cli
199258 token : ${{ secrets.GITHUB_TOKEN }}
200-
201- # Temporarily disabled - MSI build has issues
202- # build-windows-msi:
203- # strategy:
204- # matrix:
205- # include:
206- # - os: windows-latest
207- # runs-on: ${{ matrix.os }}
208- # steps:
209- # - name: Install minimal stable
210- # uses: dtolnay/rust-toolchain@stable
211- # - uses: actions/checkout@v5
212- # - uses: Swatinem/rust-cache@v2
213- #
214- # - name: Build release binaries
215- # run: cargo build --release
216- #
217- # - name: Install WiX Toolset
218- # run: |
219- # dotnet tool install --global wix --version 5.0.2
220- # wix extension add -g WixToolset.UI.wixext
221- # wix extension list
222- # wix --version
223- #
224- # - name: Build MSI installer
225- # shell: pwsh
226- # env:
227- # CargoTargetBinDir: ${{ github.workspace }}\target\release
228- # run: |
229- # wix build -arch x64 -ext WixToolset.UI.wixext wix\main.wxs -o vectorizer.msi
230- #
231- # - name: Upload MSI
232- # uses: svenstaro/upload-release-action@v2
233- # with:
234- # repo_token: ${{ secrets.GITHUB_TOKEN }}
235- # file: vectorizer.msi
236- # asset_name: vectorizer-x86_64.msi
237- # tag: ${{ github.ref }}
238- # overwrite: true
0 commit comments