feat: add Homebrew formula and macOS binary releases - #742
Conversation
b28a9ac to
b7e8fca
Compare
1adab71 to
53abb4f
Compare
|
The lint issues are not from this PR. https://github.com/complytime/complyctl/actions/runs/29576984198/job/87873581142?pr=742 |
ef14585 to
d9b86b2
Compare
d9b86b2 to
dce1421
Compare
ed7f106 to
d9b2d33
Compare
d9b2d33 to
688f6e3
Compare
|
Hi @sonupreetam. I'm happy to do an LLM-driven review of this if you like and review the results but I have almost no experience in the Homebrew/Mac ecosystem so I'm not sure I'm the best reviewer for this. Let me know if you'd like me to proceed anyway and happy to do so! |
|
No worries @trevor-vaughan, added @marcusburghardt & @jpower432 as the primary reviewers. |
22e6695 to
98c4394
Compare
|
@hbraswelrh I would need a re-review on this PR. |
Will do. Thanks, Sonu! |
hbraswelrh
left a comment
There was a problem hiding this comment.
PR Review: #742 — feat: add Homebrew formula and macOS binary releases
Well-structured PR. Design decisions documented in OpenSpec ADR. All CI passes.
No runtime code changes — CI/CD, docs, and testing only.
Findings: 1 HIGH (auth header leak risk), 1 MEDIUM (template fragility — informational).
Verdict: COMMENT — no blocking issues, but the HIGH finding merits evaluation before merge.
This review was generated by /review-pr (AI-assisted).
c07a3a2 to
59cf6ef
Compare
59cf6ef to
41c12ef
Compare
|
Hi @gxmiranda, would you take a look at the pre-merge checklist before this merges? |
eb09fb2 to
6e1ea6d
Compare
| The `homebrew` job in the release workflow automatically publishes or updates `Formula/complyctl.rb` in the [homebrew-tap](https://github.com/complytime/homebrew-tap) repository. | ||
|
|
||
| **Prerequisites:** | ||
| - The GitHub App (secrets: `APP_ID_HOMEBREW_FORMULA_PUBLISHER`, `PRIVATE_KEY_APP_HOMEBREW_FORMULA_PUBLISHER`) must have `Contents:write` permission on `complytime/homebrew-tap` |
There was a problem hiding this comment.
@sonupreetam as discussed this morning the indication of repo-scoped secrets are here
There was a problem hiding this comment.
@hbraswelrh Did you mean that the docs need to indicate that we would be using the org-level secrets? If so, I would have to add that advisory.
- Add darwin/amd64 and darwin/arm64 to GoReleaser build matrix - Add Homebrew formula publishing step to release workflow - Use validated preflight tag (not raw inputs.tag) for homebrew job - Add explicit if guard on homebrew job matching release job pattern - Mint short-lived GitHub App token for cross-repo push - Fix deprecated archives.format -> formats (GoReleaser v2) - Document Homebrew and go install as installation methods - Add CHANGELOG entries for macOS binaries, Homebrew formula, go install - Include OpenSpec artifacts for architectural decisions Closes complytime#713 Signed-off-by: sonupreetam <spreetam@redhat.com>
Replace deprecated app-id input with client-id in actions/create-github-app-token. Rename secrets to descriptive names scoped to the Homebrew publishing use case: - APP_ID -> secrets.APP_ID_HOMEBREW_FORMULA_PUBLISHER - PRIVATE_KEY -> secrets.PRIVATE_KEY_APP_HOMEBREW_FORMULA_PUBLISHER Admin action required: create both secrets in GitHub Settings before the next release. Signed-off-by: sonupreetam <spreetam@redhat.com>
6e1ea6d to
bbd07e0
Compare
349503d to
bbd07e0
Compare
|
@hbraswelrh & @gxmiranda I just rebased and new a re-review. |
Summary
Add a source-build Homebrew Formula and macOS binary releases for complyctl.
Changes:
generates a source-build Formula and pushes it to
complytime/homebrew-tapactions/create-github-app-tokenfor cross-repo push (uses existing
APP_ID/PRIVATE_KEYsecrets)archives.format→formats(GoReleaser v2)go installas installation methodsAfter merge, users install with:
The Formula builds from source on the user's machine (Homebrew auto-installs
Go). This avoids macOS Gatekeeper/signing entirely — no Apple Developer
certificate, no
xattrworkaround needed.Related Issues
Review Hints
The key design decision (Formula vs Cask) is documented in
openspec/changes/homebrew-formula-and-go-install/design.md— start therefor context on why source-build was chosen over pre-built binary distribution.
The release workflow's "Publish Homebrew formula" step uses a heredoc to
template the Ruby Formula file. The YAML indentation is handled by the
|block scalar (18 spaces stripped by YAML, leaving correct Ruby formatting).
Test results:
goreleaser checkpasses clean (zero deprecation warnings)goreleaser release --snapshot --cleanproduces all 4 archives(darwin/amd64, darwin/arm64, linux/amd64, linux/arm64)
complyctl versionreports correct metadata)complyctl completion {bash,zsh,fish}generates completions successfullycomplytime/homebrew-tapImportant
Admin pre-merge checklist:
APP_ID/PRIVATE_KEY) hasContents: writepermission on the
homebrew-taprepositoryadd
homebrew-tapto the list