name: Release desktop app # Tag a version to trigger a release: # git tag v0.1.0 && git push --tags # # Produces signed Tauri bundles for macOS (arm + intel), Windows, and Linux, # uploads them to a GitHub Release, and publishes `latest.json` for the # updater plugin to discover. on: push: tags: - "v*" permissions: contents: write jobs: build: strategy: fail-fast: false matrix: include: - platform: macos-14 # universal binary covers both Intel + Apple Silicon args: "--target universal-apple-darwin --bundles app,updater" - platform: windows-latest args: "" runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 22 cache: pnpm - name: Setup Rust uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.platform == 'macos-14' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - name: Install JS deps run: pnpm install --frozen-lockfile - name: Build desktop app uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} # Client-side env vars baked into the bundle — paste your prod values # into the repo's Actions → Secrets so releases point at prod. VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }} VITE_SUPABASE_ANON_KEY: ${{ secrets.VITE_SUPABASE_ANON_KEY }} VITE_AUTH_REDIRECT_URL: ${{ secrets.VITE_AUTH_REDIRECT_URL }} VITE_LIVEKIT_URL: ${{ secrets.VITE_LIVEKIT_URL }} with: projectPath: apps/desktop tagName: ${{ github.ref_name }} releaseName: "ChatApp ${{ github.ref_name }}" releaseBody: "See the assets below to download this version." releaseDraft: true prerelease: false tauriScript: pnpm exec tauri args: ${{ matrix.args }}