Skip to content

Commit a5874d1

Browse files
authored
docs(desktop): correct the release pipeline description (#49)
The pipeline no longer uses tauri-action (it assumes npm/pnpm, not vp). Document what we actually ship: the tauri CLI invoked directly, macOS Intel cross-compiled on the arm64 runner, the latest-json aggregate job with explicit per-platform updater selection + arch-suffixed macOS artifacts, the manifest output keys, and the workflow_dispatch tag-rebuild recovery path.
1 parent c460c23 commit a5874d1

1 file changed

Lines changed: 22 additions & 6 deletions

File tree

docs/desktop.md

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,19 +72,35 @@ Releases are driven by **conventional commits** via
7272
lockstep across `app/package.json`, `app/src-tauri/Cargo.toml`, and
7373
`tauri.conf.json`**don't hand-edit these**) and updates the changelog.
7474
3. Merging the release PR creates the tag + GitHub release; the build matrix then
75-
attaches the bundles + `latest.json` to it.
75+
builds, signs, and attaches each platform's bundles, and a final job aggregates a
76+
signed `latest.json` onto the release.
77+
78+
The matrix builds Linux (`deb` + `AppImage`), Windows (NSIS), and **both** macOS
79+
arches — Apple Silicon natively and Intel **cross-compiled on the arm64 runner**
80+
(`--target x86_64-apple-darwin`, with `vendor-node.sh TARGET_TRIPLE=…` fetching the
81+
matching x64 Node sidecar), since GitHub's Intel `macos-13` runners are deprecated
82+
and queue-starved. The tauri CLI is invoked directly (`tauri build`), not via
83+
`tauri-action`, which assumes an npm/pnpm script runner rather than `vp`.
7684

7785
Config: `release-please-config.json` + `.release-please-manifest.json`; workflow:
78-
`.github/workflows/release.yml` (release-please job → gated build job, same workflow
79-
so no PAT is needed). `workflow_dispatch` runs a build-only smoke test.
86+
`.github/workflows/release.yml` (release-please job → gated build matrix →
87+
`latest-json` aggregate job, all one workflow so no PAT is needed). Manifest mode
88+
exposes per-package outputs (`app--tag_name`) plus a top-level `releases_created`,
89+
which the build gate reads. `workflow_dispatch` with a `tag` input rebuilds an
90+
existing release's assets (recovery / fill-in) by building `main`; without a tag
91+
it's a build-only smoke test.
8092

8193
## Self-update
8294

8395
The app updates itself from GitHub Releases.
8496

85-
- The release build (via `tauri-action`, with the signing key from CI secrets)
86-
produces **signed** updater artifacts and an aggregated `latest.json` listing each
87-
platform's artifact URL + signature + the changelog (`notes`).
97+
- The release build signs the updater artifacts with the CI key
98+
(`createUpdaterArtifacts` emits a `.sig` per platform), and the `latest-json` job
99+
aggregates each platform's `{signature, url}` into one `latest.json` — listing each
100+
artifact's URL + signature, with the changelog as `notes` — attached to the release.
101+
The updater artifact is picked explicitly per platform (AppImage / `.app.tar.gz` /
102+
`-setup.exe`), and the macOS `.app.tar.gz` is arch-suffixed so the two Mac builds
103+
don't collide.
88104
- On launch, a bundled app checks `releases/latest/download/latest.json`; if a newer
89105
version exists it shows a native **"Update available"** dialog with the version and
90106
changelog, and **Install & Restart** downloads, verifies the signature against the

0 commit comments

Comments
 (0)