Skip to content

Commit fbf3fde

Browse files
committed
refactor(build-release.yml): separate macOS build jobs for x64 and ARM64 architectures
refactor(build-release.yml): update job names and comments to reflect separate macOS builds refactor(build-release.yml): adjust Rust targets and cache keys for specific macOS architectures refactor(build-release.yml): remove combined build steps for macOS universal binaries refactor(build-release.yml): update artifact renaming and upload steps for distinct macOS builds refactor(build-release.yml): update signature upload names for specific macOS architectures refactor(build-release.yml): update job dependencies for the publish-release step fix(build-release.yml): use find command for robust artifact renaming in Linux build to handle varying filenames
1 parent 77a7cfc commit fbf3fde

1 file changed

Lines changed: 89 additions & 26 deletions

File tree

.github/workflows/build-release.yml

Lines changed: 89 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,9 @@ jobs:
243243
path: ZeroLimit_*_Windows_arm64-setup.exe.sig
244244

245245
# ===========================================
246-
# 4. Build macOS (Universal: x64 + ARM64)
246+
# 4. Build macOS Intel (x64)
247247
# ===========================================
248-
build-macos:
248+
build-macos-x64:
249249
needs: create-release
250250
runs-on: macos-latest
251251
steps:
@@ -265,7 +265,7 @@ jobs:
265265
- name: Setup Rust
266266
uses: dtolnay/rust-toolchain@stable
267267
with:
268-
targets: aarch64-apple-darwin,x86_64-apple-darwin
268+
targets: x86_64-apple-darwin
269269

270270
- name: Cache Cargo
271271
uses: actions/cache@v4
@@ -276,28 +276,20 @@ jobs:
276276
~/.cargo/registry/cache/
277277
~/.cargo/git/db/
278278
src-tauri/target/
279-
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
279+
key: ${{ runner.os }}-cargo-x64-${{ hashFiles('**/Cargo.lock') }}
280280
restore-keys: |
281-
${{ runner.os }}-cargo-
281+
${{ runner.os }}-cargo-x64-
282282
283283
- name: Install frontend dependencies
284284
run: pnpm install
285285

286-
- name: Build Tauri (Apple Silicon)
287-
run: pnpm tauri build --target aarch64-apple-darwin
288-
289286
- name: Build Tauri (Intel)
290287
run: pnpm tauri build --target x86_64-apple-darwin
291288

292289
- name: Rename and Prepare artifacts
293290
run: |
294291
VERSION="${{ needs.create-release.outputs.version }}"
295292
296-
# Rename Apple Silicon artifacts
297-
mv src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/ZeroLimit_${VERSION}_aarch64.dmg "ZeroLimit_${VERSION}_macOS_aarch64.dmg"
298-
mv src-tauri/target/aarch64-apple-darwin/release/bundle/macos/ZeroLimit.app.tar.gz "ZeroLimit_${VERSION}_macOS_aarch64.app.tar.gz"
299-
mv src-tauri/target/aarch64-apple-darwin/release/bundle/macos/ZeroLimit.app.tar.gz.sig "ZeroLimit_${VERSION}_macOS_aarch64.app.tar.gz.sig"
300-
301293
# Rename Intel artifacts
302294
mv src-tauri/target/x86_64-apple-darwin/release/bundle/dmg/ZeroLimit_${VERSION}_x64.dmg "ZeroLimit_${VERSION}_macOS_x64.dmg"
303295
mv src-tauri/target/x86_64-apple-darwin/release/bundle/macos/ZeroLimit.app.tar.gz "ZeroLimit_${VERSION}_macOS_x64.app.tar.gz"
@@ -309,21 +301,87 @@ jobs:
309301
tag_name: v${{ needs.create-release.outputs.version }}
310302
draft: true
311303
files: |
312-
ZeroLimit_*_macOS_aarch64.dmg
313304
ZeroLimit_*_macOS_x64.dmg
314-
ZeroLimit_*_macOS_aarch64.app.tar.gz
315-
ZeroLimit_*_macOS_aarch64.app.tar.gz.sig
316305
ZeroLimit_*_macOS_x64.app.tar.gz
317306
ZeroLimit_*_macOS_x64.app.tar.gz.sig
318307
319308
- name: Upload signatures for latest.json
320309
uses: actions/upload-artifact@v4
321310
with:
322-
name: signatures-macos
323-
path: ZeroLimit_*_macOS_*.app.tar.gz.sig
311+
name: signatures-macos-x64
312+
path: ZeroLimit_*_macOS_x64.app.tar.gz.sig
324313

325314
# ===========================================
326-
# 5. Build Linux x64
315+
# 5. Build macOS Apple Silicon (ARM64)
316+
# ===========================================
317+
build-macos-arm64:
318+
needs: create-release
319+
runs-on: macos-latest
320+
steps:
321+
- name: Checkout
322+
uses: actions/checkout@v4
323+
with:
324+
ref: main
325+
326+
- name: Setup Node.js
327+
uses: actions/setup-node@v4
328+
with:
329+
node-version: 20
330+
331+
- name: Setup pnpm
332+
uses: pnpm/action-setup@v4
333+
334+
- name: Setup Rust
335+
uses: dtolnay/rust-toolchain@stable
336+
with:
337+
targets: aarch64-apple-darwin
338+
339+
- name: Cache Cargo
340+
uses: actions/cache@v4
341+
with:
342+
path: |
343+
~/.cargo/bin/
344+
~/.cargo/registry/index/
345+
~/.cargo/registry/cache/
346+
~/.cargo/git/db/
347+
src-tauri/target/
348+
key: ${{ runner.os }}-cargo-arm64-${{ hashFiles('**/Cargo.lock') }}
349+
restore-keys: |
350+
${{ runner.os }}-cargo-arm64-
351+
352+
- name: Install frontend dependencies
353+
run: pnpm install
354+
355+
- name: Build Tauri (Apple Silicon)
356+
run: pnpm tauri build --target aarch64-apple-darwin
357+
358+
- name: Rename and Prepare artifacts
359+
run: |
360+
VERSION="${{ needs.create-release.outputs.version }}"
361+
362+
# Rename Apple Silicon artifacts
363+
mv src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/ZeroLimit_${VERSION}_aarch64.dmg "ZeroLimit_${VERSION}_macOS_aarch64.dmg"
364+
mv src-tauri/target/aarch64-apple-darwin/release/bundle/macos/ZeroLimit.app.tar.gz "ZeroLimit_${VERSION}_macOS_aarch64.app.tar.gz"
365+
mv src-tauri/target/aarch64-apple-darwin/release/bundle/macos/ZeroLimit.app.tar.gz.sig "ZeroLimit_${VERSION}_macOS_aarch64.app.tar.gz.sig"
366+
367+
- name: Upload artifacts to release
368+
uses: softprops/action-gh-release@v2
369+
with:
370+
tag_name: v${{ needs.create-release.outputs.version }}
371+
draft: true
372+
files: |
373+
ZeroLimit_*_macOS_aarch64.dmg
374+
ZeroLimit_*_macOS_aarch64.app.tar.gz
375+
ZeroLimit_*_macOS_aarch64.app.tar.gz.sig
376+
377+
- name: Upload signatures for latest.json
378+
uses: actions/upload-artifact@v4
379+
with:
380+
name: signatures-macos-arm64
381+
path: ZeroLimit_*_macOS_aarch64.app.tar.gz.sig
382+
383+
# ===========================================
384+
# 6. Build Linux x64
327385
# ===========================================
328386
build-linux:
329387
needs: create-release
@@ -381,16 +439,21 @@ jobs:
381439
run: |
382440
VERSION="${{ needs.create-release.outputs.version }}"
383441
442+
echo "Listing build output directory:"
443+
ls -R src-tauri/target/release/bundle/
444+
384445
# Debian (using wildcard for safety)
385-
mv src-tauri/target/release/bundle/deb/*_${VERSION}_amd64.deb "ZeroLimit_${VERSION}_Linux_x64.deb"
446+
find src-tauri/target/release/bundle/deb/ -name "*_${VERSION}_amd64.deb" -exec mv {} "ZeroLimit_${VERSION}_Linux_x64.deb" \;
386447
387448
# RPM (using wildcard for safety)
388-
mv src-tauri/target/release/bundle/rpm/*-${VERSION}-1.x86_64.rpm "ZeroLimit_${VERSION}_Linux_x64.rpm"
449+
find src-tauri/target/release/bundle/rpm/ -name "*-${VERSION}-1.x86_64.rpm" -exec mv {} "ZeroLimit_${VERSION}_Linux_x64.rpm" \;
389450
390451
# AppImage (using wildcard for safety)
391-
mv src-tauri/target/release/bundle/appimage/*_${VERSION}_amd64.AppImage "ZeroLimit_${VERSION}_Linux_x64.AppImage"
392-
mv src-tauri/target/release/bundle/appimage/*_${VERSION}_amd64.AppImage.tar.gz "ZeroLimit_${VERSION}_Linux_x64.AppImage.tar.gz"
393-
mv src-tauri/target/release/bundle/appimage/*_${VERSION}_amd64.AppImage.tar.gz.sig "ZeroLimit_${VERSION}_Linux_x64.AppImage.tar.gz.sig"
452+
find src-tauri/target/release/bundle/appimage/ -name "*_${VERSION}_amd64.AppImage" -exec mv {} "ZeroLimit_${VERSION}_Linux_x64.AppImage" \;
453+
454+
# AppImage.tar.gz (optional updater artifact)
455+
find src-tauri/target/release/bundle/appimage/ -name "*_${VERSION}_amd64.AppImage.tar.gz" -exec mv {} "ZeroLimit_${VERSION}_Linux_x64.AppImage.tar.gz" \;
456+
find src-tauri/target/release/bundle/appimage/ -name "*_${VERSION}_amd64.AppImage.tar.gz.sig" -exec mv {} "ZeroLimit_${VERSION}_Linux_x64.AppImage.tar.gz.sig" \;
394457
395458
- name: Upload artifacts to release
396459
uses: softprops/action-gh-release@v2
@@ -411,10 +474,10 @@ jobs:
411474
path: ZeroLimit_*_Linux_x64.AppImage.tar.gz.sig
412475

413476
# ===========================================
414-
# 6. Publish Release + Generate latest.json
477+
# 7. Publish Release + Generate latest.json
415478
# ===========================================
416479
publish-release:
417-
needs: [create-release, build-windows-x64, build-windows-arm64, build-macos, build-linux]
480+
needs: [create-release, build-windows-x64, build-windows-arm64, build-macos-x64, build-macos-arm64, build-linux]
418481
runs-on: ubuntu-latest
419482
steps:
420483
- name: Checkout

0 commit comments

Comments
 (0)