Skip to content

ci(desktop): add multi-platform build and release workflow - #3

Merged
tricktreat merged 1 commit into
mainfrom
ci/desktop-release
Jul 20, 2026
Merged

ci(desktop): add multi-platform build and release workflow#3
tricktreat merged 1 commit into
mainfrom
ci/desktop-release

Conversation

@tricktreat

Copy link
Copy Markdown
Contributor

Summary

Adds .github/workflows/desktop-release.yml — a CI workflow that builds the Tauri v2 desktop client for macOS, Linux, and Windows and publishes all installers + updater artifacts to a single GitHub Release.

Since Tauri cannot cross-compile, each OS builds on its own native runner via a matrix, using the official tauri-apps/tauri-action.

How it works

Aspect Choice
Trigger Push a desktop-v* tag, or manual workflow_dispatch (tag input)
Platforms macos-latest (universal arm64+x86_64), ubuntu-22.04 (appimage+deb), windows-latest (nsis+msi)
Output Draft GitHub Release with every platform's installer + latest.json + .sig
Updater signing TAURI_SIGNING_PRIVATE_KEY / TAURI_SIGNING_PRIVATE_KEY_PASSWORD repo secrets (already configured)
Frontend npm install in src/frontend; tauri's beforeBuildCommand builds the dist
Rust cache Swatinem/rust-cache scoped to desktop/src-tauri

Release procedure

  1. Bump version in desktop/package.json, desktop/src-tauri/Cargo.toml, desktop/src-tauri/tauri.conf.json (keep in sync).
  2. Push tag desktop-vX.Y.Z.
  3. Review the generated draft release, then publish.

Scope notes / follow-ups

  • Pure repo meta: only .github/workflows/ is added — no changes to the read-only desktop/** source.
  • macOS is unsigned (no Apple cert): bundles work but trigger Gatekeeper on first launch. Add APPLE_* signing secrets later to make it seamless.
  • Self-update channel: this Release carries latest.json for the Tauri updater. The client's update.rs currently resolves the updater endpoint from the runtime server_base (backend-served). To have clients self-update from GitHub Releases instead, the updater endpoint/logic in desktop/src-tauri must be adjusted upstream — out of scope for this meta-only PR.
  • Frontend build runs the repo's check-i18n.mjs + tsc -b + vite build; if i18n/type checks are strict they may need attention on the first run.

Build the Tauri desktop client on native macOS / Ubuntu / Windows runners
(Tauri cannot cross-compile) and collect all installers plus updater
artifacts (latest.json + .sig) into a single draft GitHub Release.

- Triggered by desktop-v* tags or manual dispatch
- Updater signing via TAURI_SIGNING_PRIVATE_KEY repo secret
- macOS built as a universal binary (arm64 + x86_64), unsigned for now
- Linux target overrides (appimage/deb) come from tauri.linux.conf.json
@tricktreat
tricktreat marked this pull request as ready for review July 20, 2026 14:14
@tricktreat tricktreat self-assigned this Jul 20, 2026
@tricktreat
tricktreat requested a review from Copilot July 20, 2026 14:16
@tricktreat
tricktreat requested a review from Luhaozhu July 20, 2026 14:18

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new GitHub Actions workflow to build the Tauri v2 desktop client on native runners for macOS, Linux, and Windows, then publish the resulting installers/updater artifacts to a single draft GitHub Release.

Changes:

  • Introduces a tag-triggered + manual-dispatch release pipeline for the desktop app.
  • Builds per-OS artifacts via a matrix (macOS/Ubuntu/Windows) and uploads them to a draft release.
  • Configures Node/Rust setup plus Linux system deps and Rust build caching.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/desktop-release.yml
Comment thread .github/workflows/desktop-release.yml
Comment thread .github/workflows/desktop-release.yml
Comment thread .github/workflows/desktop-release.yml
Comment thread .github/workflows/desktop-release.yml
@tricktreat
tricktreat merged commit ff15281 into main Jul 20, 2026
1 check passed
@tricktreat
tricktreat deleted the ci/desktop-release branch July 20, 2026 14:30
@lsy040203 lsy040203 mentioned this pull request Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants