Repository navigation
feat: Homebrew tap and verified install script - #8
Open
RogerCecilpot wants to merge 1 commit into
Open
RogerCecilpot wants to merge 1 commit into
RogerCecilpot wants to merge 1 commit into
Conversation
RogerCecilpot
force-pushed
the
feat/253-release-pipeline
branch
from
October 25, 2026 12:56
9bb3978 to
14c1dc3
Compare
RogerCecilpot
force-pushed
the
feat/258-homebrew-install-script
branch
from
October 25, 2026 12:56
2872a9c to
226397c
Compare
goreleaser now builds a Homebrew cask (casks replace the deprecated brews formulae) and pushes it to devlyft/homebrew-tap when HOMEBREW_TAP_GITHUB_TOKEN is set; otherwise the upload is skipped. The cask installs completions via `devlyft completion` and clears the macOS quarantine attribute. install.sh installs on Linux and macOS: it verifies the archive's sha256 against the release checksum file and, when cosign is installed, the keyless signature on that file, failing closed on any mismatch. It never uses sudo. CI runs shellcheck and installs the snapshot build with it, including a tampered-archive case. Refs devlyft/devlyft#258 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
RogerCecilpot
force-pushed
the
feat/253-release-pipeline
branch
from
October 25, 2026 13:00
14c1dc3 to
b275ac5
Compare
RogerCecilpot
force-pushed
the
feat/258-homebrew-install-script
branch
from
October 25, 2026 13:00
226397c to
f8a8062
Compare
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.
Closes devlyft/devlyft#258.
Stacked on #4 (release pipeline), which is stacked on #2 (scaffold). Retarget as those merge.
What
homebrew_casks.brewsformulae are deprecated in goreleaser v2.10+, so this uses casks. The release pushesCasks/devlyft.rbtodevlyft/homebrew-tap, givingbrew install devlyft/tap/devlyfton macOS and Linux.HOMEBREW_TAP_GITHUB_TOKENis unset, so releases keep working before the tap exists.generate_completions_from_executable, which runsdevlyft completion <shell>at install time for bash, zsh and fish. No completion files go in the archive.com.apple.quarantine, because the binary isn't notarized.install.sh(POSIX sh, passes shellcheck), for Linux and macOS:DEVLYFT_VERSION.DEVLYFT_REQUIRE_SIGNATURE=1is set.DEVLYFT_INSTALL_DIR, otherwise/usr/local/binif writable, otherwise~/.local/bin. It never uses sudo and replaces the binary with an atomic rename.DEVLYFT_DOWNLOAD_BASEpoints the script at a mirror orfile://…/distfor testing.release-snapshotjob now runs shellcheck, installs the snapshot withinstall.sh, and checks that a tampered archive is rejected.docs/releasing.md(tap setup, how the install script works) and an Install section in the README.Verified locally
goreleaser checkpasses with no deprecations. A snapshot build generates the cask with darwin and linux blocks for arm and intel, the postflight xattr step and the completions stanza.install.shagainst the snapshotdist/:DEVLYFT_REQUIRE_SIGNATURE=1without cosign fails.DEVLYFT_DOWNLOAD_BASEwithout a version fails, and an unknown version fails cleanly.make lintandmake testpass.Not verified yet
brew installon a real machine.Merge order
The cask runs
devlyft completion, added in #3. Merge #3 before the first release that publishes the cask, or brew's completion step will fail. The snapshot build doesn't depend on it.Needs creating before the first Homebrew release
devlyft/homebrew-tapwith aCasks/directory.devlyft/homebrew-taponly.HOMEBREW_TAP_GITHUB_TOKENindevlyft/cli, ideally in a protected environment used only byrelease.yml.🤖 Generated with Claude Code