Fix v4.0.0 release fallout: install.sh assets, AUR key fail-fast, docs

Merged
JE
3mo ago
+63-37

Follow-ups from the v4.0.0 stable release (run 30305193571).

What broke

  • scripts/install.sh is broken in production. v4.0.0 became latest, and the installer still fetches the v3 asset scheme (fizzy-<os>-<arch> bare binaries + SHA256SUMS-<os>-<arch>.txt), which GoReleaser no longer publishes. Every curl | bash install currently 404s.
  • The aur-publish job failed with Load key "/home/runner/.ssh/aur": invalid format — the stored AUR_KEY secret content is not a parseable OpenSSH key (likely flattened newlines). This was the first run to ever exercise it.

Changes

  • install.sh: rewritten for the GoReleaser layout — downloads fizzy_<ver>_<os>_<arch>.tar.gz (.zip on Windows), verifies against the single checksums.txt, extracts the binary. Fixed as soon as this merges, since the installer is served from the repo.
  • publish-aur.sh: writes the key with printf | tr -d '\r' and validates it with ssh-keygen -y immediately, failing with a clear remediation message (gh secret set AUR_KEY --env release < keyfile) instead of dying mid-clone.
  • README: Homebrew install is now brew install --cask basecamp/tap/fizzy (cask is live in basecamp/homebrew-tap); dropped the robzolkos tap instructions and the stale "not yet released" warning.
  • RELEASING.md: corrected the secret inventory (RELEASE_CLIENT_ID/RELEASE_APP_PRIVATE_KEY/AUR_KEY live in the release environment, not repository level; HOMEBREW_TAP_TOKEN is minted per-run by the cli-release-bot App), documented the multi-line secret pitfall, fixed the AUR setup steps to include local key validation, and added a tap-migration ordering runbook.

Verification

  • install.sh run live against v4.0.0 on darwin-arm64 (this Mac), linux-amd64 (Debian container), and native Arch x86_64 — all install and report fizzy version 4.0.0.
  • The generated PKGBUILD/.SRCINFO were build-tested in an Arch container: makepkg builds 4.0.0 from the source tarball, .SRCINFO matches makepkg --printsrcinfo, the installed package runs and ships completions + license. (The PKGBUILD had never been exercised — the AUR job always died at SSH.)
  • The fail-fast path was tested with a garbage AUR_KEY: PKGBUILD generation completes, then the script exits with the clear error.

Not in this PR (pending @robzolkos)

  • Re-store AUR_KEY from a validated key file and gh run rerun 30305193571 --failed.
  • Merge the tap migration on robzolkos/homebrew-fizzy-cli.

Summary by cubic

Fixes v4.0.0 installs by switching the installer to GoReleaser archives with exact filename checksum matching and safer extraction. Hardens AUR publishing with fail-fast, non-interactive key checks; updates Homebrew docs and release secret setup.

  • Bug Fixes

    • Rewrites scripts/install.sh to download fizzy_<ver>_<os>_<arch>.tar.gz (Windows .zip), verify against checksums.txt by exact archive name (tolerates leading *), extract with unzip or zip-capable tar, and error clearly if neither is available.
    • Updates scripts/publish-aur.sh to preserve newlines and strip CRs when writing AUR_KEY, validate non-interactively with ssh-keygen -y (stdin from /dev/null) to fail fast on invalid or passphrase-protected keys, and guard missing AUR_KEY with a copy-pasteable remediation (gh secret set AUR_KEY --env release -R basecamp/fizzy-cli < keyfile).
  • Docs

    • README: Homebrew install is now brew install --cask basecamp/tap/fizzy; prereleases are available from Releases.
    • RELEASING.md: all release credentials live in the release environment; adds exact gh commands with -R basecamp/fizzy-cli (multi-line secret example included), notes RELEASE_CLIENT_ID uses gh variable set, documents multi-line secret pitfalls and AUR key validation, and adds tap migration ordering.