Files
NexaVPN/.gitea/workflows/macos-desktop-client.yml
nessi 5233e90dce feat: add macOS desktop client build workflow with ARM64 support and fix tunnel metrics task ownership
Add macos-desktop-client.yml workflow with manual dispatch trigger running on macos-arm64 runner. Install Node.js 22 and Rust toolchain with aarch64-apple-darwin target. Build bundled tunnel helper and Tauri application bundle, then upload .app, .dmg, and raw build artifacts.

Fix tunnel_metrics handler to clone app handle before spawn_blocking to prevent ownership issues when passing to tunnel
2026-03-18 14:27:26 +01:00

56 lines
1.5 KiB
YAML

name: Build macOS Desktop Client
on:
workflow_dispatch:
jobs:
build-macos-client:
name: Build macOS Client
runs-on: macos-arm64
defaults:
run:
shell: bash
working-directory: desktop-client
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin
- name: Install desktop client dependencies
run: npm install
- name: Build bundled macOS tunnel helper
run: npm run helper:macos-arm64
- name: Build macOS application bundle
run: npx tauri build --target aarch64-apple-darwin
- name: Upload macOS app bundle
uses: christopherhx/gitea-upload-artifact@v4
with:
name: NexaVPN-macos-app
path: |
desktop-client/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/*.app
desktop-client/src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/*.dmg
if-no-files-found: error
- name: Upload raw macOS build outputs
uses: christopherhx/gitea-upload-artifact@v4
with:
name: NexaVPN-macos-raw-build
path: |
desktop-client/src-tauri/target/aarch64-apple-darwin/release/nexavpn-desktop
desktop-client/src-tauri/bundled/macos-arm64/nexavpn-tunnel-helper
if-no-files-found: error