Skip to content

release: produce updater .app.tar.gz/.sig + drop x86_64 matrix leg#22

Merged
mrdulasolutions merged 1 commit into
mainfrom
claude/release-updater-artifacts
May 14, 2026
Merged

release: produce updater .app.tar.gz/.sig + drop x86_64 matrix leg#22
mrdulasolutions merged 1 commit into
mainfrom
claude/release-updater-artifacts

Conversation

@mrdulasolutions
Copy link
Copy Markdown
Owner

Follow-up to #21. Two pre-existing release-pipeline bugs that have caused every release since v0.1.6 to need manual asset uploads, and that left v0.1.9's draft release without the .sig and latest.json that the in-app updater needs.

Root cause #1: createUpdaterArtifacts defaults to false

In Tauri 2's config schema (crates/tauri-utils/src/config.rs):

impl Default for Updater {
  fn default() -> Self {
    Self::Bool(false)
  }
}

Our tauri.conf.json never set bundle.createUpdaterArtifacts, so it defaulted to false. tauri-bundler consequently only emitted .app + .dmg — not the updater pair (.app.tar.gz + .app.tar.gz.sig). tauri-action then re-tarred the .app directory itself (unsigned), and its upload step bailed with Signature not found for the updater JSON. Skipping upload....

plugins.updater.active: true (already set) is the client-side plugin enablement — it gets compiled into the .app and controls auto-update behavior at runtime. bundle.createUpdaterArtifacts: true is the separate build-side flag that controls whether artifacts are produced for distribution. We had only the runtime flag, not the build flag.

Same bug affected every release since v0.1.5. v0.1.7 / v0.1.8 shipped because someone manually uploaded the missing files — for example, v0.1.8's .sig and latest.json were uploaded 17 hours after the workflow finished, per the release asset created_at:

AOS.Mail_0.1.8_aarch64.dmg          2026-05-13T00:06:26Z   (workflow)
AOS.Mail_aarch64.app.tar.gz          2026-05-13T00:06:29Z   (workflow)
AOS.Mail_aarch64.app.tar.gz.sig      2026-05-13T17:44:09Z   (manual, +17h)
latest.json                          2026-05-13T17:44:09Z   (manual, +17h)

Root cause #2: x86_64 leg never lands

The Intel matrix leg has not landed a release artifact since v0.1.6:

Release aarch64 x86_64
v0.1.7 shipped (manual sig upload) not in release
v0.1.8 shipped (manual sig upload) not in release
v0.1.9 shipped (no sig, fixed via this PR) queued 37+ min, cancelled

GitHub's macos-13 runners — the last Intel image — are deprecated and consistently queue past timeout-minutes: 75. Removing the leg is consistent with what's actually been shipping for three releases.

Re-add when GitHub offers a stable Intel runner again (unlikely) or move to a self-hosted Intel runner.

Verification plan after merge

  1. Delete the v0.1.9 git tag + draft release
  2. Re-tag v0.1.9 on the new main
  3. Confirm the release ends up with all four assets:
    • AOS.Mail_0.1.9_aarch64.dmg
    • AOS.Mail_aarch64.app.tar.gz
    • AOS.Mail_aarch64.app.tar.gz.sig
    • latest.json

If all four land, future releases self-publish without manual intervention.

Test plan

  • CI's Lint & Format / Type Check / Security Audit jobs all pass
  • After merge: re-tag v0.1.9 and confirm all four assets appear
  • aarch64 build completes in roughly the same time as before (~9 min)
  • x86_64 build no longer queues (since it's no longer in the matrix)

🤖 Generated with Claude Code

Two pre-existing release-pipeline bugs that have caused every
release since v0.1.6 to need manual asset uploads. Both surfaced
when v0.1.9 sat in draft with the same missing pair as v0.1.8.

createUpdaterArtifacts default is false in Tauri 2 — we never set
  it. Without it tauri-bundler emits only the `.app` and `.dmg` —
  not the `.app.tar.gz` + `.app.tar.gz.sig` pair that the in-app
  auto-updater needs. tauri-action then re-tars the `.app` itself
  (which is unsigned), and its upload step bails with
  "Signature not found for the updater JSON. Skipping upload..."
  Setting `bundle.createUpdaterArtifacts: true` makes the bundler
  produce both, and tauri-action picks them up automatically.
  `plugins.updater.active: true` is the runtime-side plugin flag,
  not the build-side artifact flag — different setting.

x86_64-apple-darwin matrix leg removed. The `macos-13` runner
  GitHub offers for Intel is deprecated and consistently queues
  past `timeout-minutes` (~75 min) without picking up. The
  x86_64 leg has not produced a release artifact since v0.1.6 —
  v0.1.7 / v0.1.8 / v0.1.9 all shipped aarch64-only. Re-add when
  a stable Intel runner is available again, or move to self-
  hosted.

  Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@mrdulasolutions mrdulasolutions merged commit ce38bbc into main May 14, 2026
3 checks passed
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.

1 participant