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
56 lines
1.5 KiB
YAML
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
|