Phase 6e: add publish-desktop job (Tauri installers, unsigned)#20
Merged
Phase 6e: add publish-desktop job (Tauri installers, unsigned)#20
Conversation
Adds a tauri-action-based matrix job that builds + uploads
unsigned desktop installers to the sqlrite-desktop-v<V> GitHub
Release alongside the existing publish-crate + publish-ffi jobs.
Matrix mirrors publish-ffi's OS/arch choices for consistency:
ubuntu-22.04 → AppImage + .deb (x86_64)
macos-latest → .dmg (aarch64)
windows-latest → .msi (x86_64)
ubuntu-22.04 (not ubuntu-latest) is deliberate: AppImage links
glibc at build time, so building on 22.04 (glibc 2.35) yields an
AppImage that runs on any distro with glibc ≥ 2.35 — building on
24.04 would produce an AppImage that won't launch on older
distros.
Wiring:
- tag-all → also pushes sqlrite-desktop-v<V>
- finalize's `needs` → extended with publish-desktop
- umbrella release body → includes 🖥️ Desktop link
- environment: release → same approval gate as the other
publish-* jobs (re-uses the single required-reviewer config
that already exists for crates.io)
Tauri configuration:
- bundle.active flipped from false → true so installers actually
get produced (this was the single-biggest gotcha)
- bundle.icon array extended to list the native-format icons for
each platform (.icns for macOS, .ico for Windows, size-specific
PNGs for Linux)
- category / shortDescription / longDescription added so .deb /
AppImage metadata has useful fields instead of defaults
Icons (64x64.png, 128x128.png, 128x128@2x.png, icon.icns,
icon.ico) are pre-generated via `npx tauri icon
src-tauri/icons/icon.png` and committed to the repo. That keeps
CI deterministic (no build-time network dependency on the Tauri
CLI version resolving differently over time) and saves ~10s per
matrix cell. Tradeoff: anyone swapping out icon.png has to re-run
`tauri icon` locally and commit the regenerated assets — PR review
catches this. The android/ and ios/ outputs + Windows-Store
Square* / StoreLogo variants tauri icon also generates are
discarded (not used by desktop-MVP, keeps repo lean).
Installers ship unsigned — Phase 6.1 wires up Apple Developer ID
+ Windows code-signing certs. The release body warns about the
"unidentified developer" / SmartScreen prompts and how to bypass
until signing lands.
Follow-ups:
- macOS universal (x86_64 + aarch64 via lipo) — needs both
Rust targets installed + a lipo step
- Linux aarch64 AppImage — adds one ubuntu-24.04-arm matrix cell
Also updates docs/roadmap.md with the Phase 6e done-marker + a
retrospective note on the v0.1.2 canary success.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
publish-desktoptorelease.yml— atauri-action@v0-based matrix job that builds unsigned desktop installers on every release and uploads them to thesqlrite-desktop-v<V>GitHub Release.Matrix (mirrors
publish-ffi):ubuntu-22.04(not-latest) is deliberate — AppImage's glibc gets baked in at build time, so building on 22.04 produces an AppImage that runs on any distro with glibc ≥ 2.35 (covers ~everything shipped since 2022).Key changes
.github/workflows/release.yml— newpublish-desktopjob,sqlrite-desktop-v<V>tag added totag-all,finalizenow awaitspublish-desktop, umbrella release body gets a 🖥️ Desktop link.desktop/src-tauri/tauri.conf.json—bundle.active: true(wasfalse— the single biggest gotcha, installers don't build otherwise), full platform-native icon set, category/descriptions for .deb / AppImage metadata.npx tauri icon src-tauri/icons/icon.pngonce locally; committed the 5 desktop-essential outputs (64x64.png,128x128.png,128x128@2x.png,icon.icns,icon.ico). Keeps CI deterministic and saves ~10s per matrix cell. Mobile (android/ios) + Windows Store (Square*) outputs discarded.Not in scope (tracked as follow-ups)
publish-ffi.ubuntu-24.04-armmatrix cell.Test plan
python3 -c "import yaml; yaml.safe_load(open('.github/workflows/release.yml'))"— YAML parsescargo check -p sqlrite-desktop— cleandesktop-buildjob inci.ymlexercises the Rust side on Linux; the newpublish-desktoponly runs on release merges)release-pr.ymlat0.1.3→ review → merge → approvereleaseenv gate → verify 3 installers land on thesqlrite-desktop-v0.1.3release🤖 Generated with Claude Code