发布自定义 Homebrew 程序包到 Github Releases
从 2.5.2 版本开始,Homebrew 支持将 bottles(程序二进制包)上传到 Github Releases。本文是继《发布自定义 Homebrew 程序包》后续实践并记录。
实践环境
| 项目 | 说明 |
|---|---|
| macOS | Catalina 10.15.7 (19H524) |
| brew | 3.0.4-50-ga930e2b |
创建 Tap
跳转到 Github 并创建一个以 hombrew- 前缀命名的空仓库,例如:zhb127/homebrew-tap。

在本地运行以下命令:
brew tap-new zhb127/homebrew-tap
切换到新建的 tap 目录:
cd $(brew --repository zhb127/homebrew-tap)
列出 tap 目录中的所有文件,查看 brew 默认创建的文件:

添加上述创建的 GitHub 仓库为远程代码仓库后,推送 brew 默认创建的文件:

创建第一个 Formula
此处,我们基于《发布自定义 Homebrew 程序包》的源代码来创建 Formula,如下:
brew create --tap=zhb127/homebrew-tap --go https://github.com/zhb127/homebrew-helloworld/archive/0.1.tar.gz --set-name zhb127
以上操作,将为 Go 项目创建一个新的 Formula,并在默认的编辑器中打开 Formula 文件,如下:

在关闭文件后,可以通过以下命令重新打开 Formula 文件:
#brew edit USER/REPO/FORMULA
brew edit zhb127/homebrew-tap/zhb127在完成编辑后,创建一个新的 Git 分支 zhb127,将修改的内容提交并推送到 Github 仓库:
git checkout -b zhb127
git add Formula/zhb127.rb
git commit --message "zhb127 0.1 (new formula)"
git push --set-upstream origin zhb127
跳转到 Github 仓库,创建一个 PullRequest(from:zhb127 -> to:main)后,自动触发两个 Github workflows:


当上述两个 workflows 失败时,根据提示信息,解决问题:


git add Formula/zhb127.rb
git commit -m 'fix: zhb127.rb error'
git push
在上述两个 workflows 成功后,不做其他处理,直接给 PullReqeust 添加 pr-pull 标签后,自动触发第三个 workflow:

第三个 workflow 会执行:关闭 PR、删除 PR 的 from 分支、将程序二进制包上传到 Github Releases,具体情况如下:


至此完成:发布自定义 Homebrew 程序二进制包到 Github Releases。
升级 Homebrew Tap
将程序源代码更新到 0.2 版本:


编辑 Formula,修改对应的版本信息:
brew edit zhb127/homebrew-tap/zhb127
提交修改的内容到 Github 仓库:
git add Formula/zhb127.rb
git commit -m 'feat: upgrade zhb127 to 0.2'
git push origin zhb127创建 PullRequest,自动触发两个 Github workflows:

完成上述步骤后,给 PullRequest 添加 pr-pull 标签,自动触发第三个 Github workflow:


至此,完成 Homebrew Tap 的升级。
补充说明
通过 curl 命令,计算源代码包 sha256 值:
# macos
curl -sSL https://github.com/zhb127/homebrew-helloworld/archive/refs/tags/0.2.tar.gz | shasum -a 256