Skip to content

ci: add post-publish install channel verification workflow#5605

Open
avallete wants to merge 1 commit into
developfrom
claude/kind-brahmagupta-hllioe
Open

ci: add post-publish install channel verification workflow#5605
avallete wants to merge 1 commit into
developfrom
claude/kind-brahmagupta-hllioe

Conversation

@avallete

@avallete avallete commented Jun 17, 2026

Copy link
Copy Markdown
Member

Add automated end-to-end verification that published install channels (Homebrew, Scoop, and curl|bash install script) successfully install the released CLI and serve artifacts with matching checksums.

Summary

This adds a new verify-install-channels.yml workflow that runs real brew install, scoop install, and install-script installs against the just-published channels, then verifies the installed version matches. The workflow is triggered automatically after successful Homebrew and Scoop publishes, and can also be manually dispatched for debugging install regressions.

Key Changes

  • New workflow: .github/workflows/verify-install-channels.yml

    • Homebrew job: installs from the supabase/tap on macOS, verifies version
    • Scoop job: installs from the supabase/scoop-bucket on Windows, verifies version
    • Install script job: runs ./install on Linux and macOS, verifies version
    • Each job verifies the installed supabase --version matches the released version
    • Accepts version, brew_name, and scoop_name as workflow inputs
  • Integration into release pipeline: Modified .github/workflows/release-shared.yml

    • Added verify-install-channels job that runs after successful publish-homebrew and publish-scoop
    • Non-gating: runs last so failures surface as post-release signals rather than blocking distribution
    • Only runs for beta/stable channels (skipped for alpha and dry-run releases)
  • Documentation: Updated apps/cli/docs/release-process.md

    • Added verify-install-channels to the release flowchart
    • Documented the post-publish verification step and its purpose
    • Explained that it catches regressions like v2.107.0 where brew/scoop checksums mismatched the release tarballs

Implementation Details

The workflow catches checksum mismatches that would cause real user installs to fail, since brew, scoop, and the install script all verify published checksums against downloaded tarballs before installation. By running actual installs against the live channels immediately after publish, this provides the signal that would have caught the v2.107.0 regression where every brew install / scoop install failed with "Formula reports different checksum".

Closes: CLI-1642

https://claude.ai/code/session_01RNp9yTyRoDYJTs5xsWRbAr

Add a post-publish verify-install-channels reusable workflow that does a
real brew install, scoop install, and curl|bash install-script install
against the just-published channels, then asserts supabase --version
matches. brew, scoop, and the install script each verify the declared
sha256/hash against the downloaded tarball, so this reproduces the exact
CLI v2.107.0 failure where the brew/scoop manifests shipped checksums
that did not match the release tarballs.

Wire it into release-shared.yml alongside setup-cli-smoke (non-gating,
runs last) and only for beta/stable, which are the channels that publish
brew/scoop. Document it in the release-process playbook.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RNp9yTyRoDYJTs5xsWRbAr
@avallete avallete requested a review from a team as a code owner June 17, 2026 18:00
@github-actions

Copy link
Copy Markdown

Supabase CLI preview

npx --yes https://pkg.pr.new/supabase/cli/supabase@5194a53db461416701b6e8af6e9ec90d0dee35a7

Preview package for commit 5194a53.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5194a53db4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

# The install script downloads the GitHub Release tarball plus
# checksums.txt and aborts on a sha256 mismatch (verify_checksum).
# --no-modify-path keeps it from editing the runner's shell rc files.
./install --version "${VERSION#v}" --no-modify-path

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Verify the published install script, not the checkout

For beta releases this job runs from develop, but the documented curl|bash install channel is the public script from main (or the uploaded release asset), so this can pass while users running the published install command still fail when main's script differs from the release branch or the release asset is missing/stale. Fetch and execute the actual public install script URL/asset here instead of ./install from the workflow checkout.

Useful? React with 👍 / 👎.

# while release tags / dispatch inputs may include it, so strip it
# before comparing.
expected="${VERSION#v}"
actual="$(supabase --version | tr -d '\r' | head -n1)"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Exercise the sidecar before passing channel installs

For beta/stable releases the shipped CLI is the legacy shell, and --version is handled by the Bun wrapper without spawning the colocated supabase-go sidecar. A Homebrew/Scoop/install-script package that omits or misplaces supabase-go would pass this check while proxied legacy commands fail for users; the existing release-process doc calls out supabase projects list --help as the required sidecar smoke, so add that (or an equivalent proxied command) before considering the channel verified.

Useful? React with 👍 / 👎.

jobs:
homebrew:
name: Homebrew (${{ inputs.brew_name }})
runs-on: macos-latest

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add a Linux Homebrew verification leg

When the generated Homebrew formula's Linux stanza has a bad URL or sha256, this workflow still passes because the tap is only installed on macOS. update-homebrew.ts emits separate on_linux URLs/checksums for Linux users, so add an Ubuntu/Homebrew leg (or another check that actually exercises the Linux stanza) before treating the tap as verified.

Useful? React with 👍 / 👎.

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.

3 participants