发布自定义 Homebrew 程序包到 Github Releases

从 2.5.2 版本开始,Homebrew 支持将 bottles(程序二进制包)上传到 Github Releases。本文是继《发布自定义 Homebrew 程序包》后续实践并记录。

实践环境

项目说明
macOSCatalina 10.15.7 (19H524)
brew3.0.4-50-ga930e2b

创建 Tap

跳转到 Github 并创建一个以 hombrew- 前缀命名的空仓库,例如:zhb127/homebrew-tap

2021-03-14T16:44:18.png

在本地运行以下命令:

brew tap-new zhb127/homebrew-tap

2021-03-14T16:49:05.png

切换到新建的 tap 目录:

cd $(brew --repository zhb127/homebrew-tap)

2021-03-14T16:54:41.png

列出 tap 目录中的所有文件,查看 brew 默认创建的文件:

2021-03-14T17:04:51.png

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

2021-03-14T17:02:25.png

创建第一个 Formula

此处,我们基于《发布自定义 Homebrew 程序包》的源代码来创建 Formula,如下:

brew create --tap=zhb127/homebrew-tap --go https://github.com/zhb127/homebrew-helloworld/archive/0.1.tar.gz --set-name zhb127

2021-03-14T17:18:48.png

以上操作,将为 Go 项目创建一个新的 Formula,并在默认的编辑器中打开 Formula 文件,如下:

2021-03-14T17:25:12.png

在关闭文件后,可以通过以下命令重新打开 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

2021-03-14T17:32:32.png

跳转到 Github 仓库,创建一个 PullRequest(from:zhb127 -> to:main)后,自动触发两个 Github workflows:

2021-03-14T17:40:20.png

2021-03-14T17:41:36.png

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

2021-03-14T17:43:44.png

2021-03-15T14:08:08.png

git add Formula/zhb127.rb
git commit -m 'fix: zhb127.rb error'
git push

2021-03-14T17:48:41.png

在上述两个 workflows 成功后,不做其他处理,直接给 PullReqeust 添加 pr-pull 标签后,自动触发第三个 workflow:

2021-03-15T14:24:09.png

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

2021-03-15T14:31:10.png

2021-03-15T14:32:54.png

至此完成:发布自定义 Homebrew 程序二进制包到 Github Releases。

升级 Homebrew Tap

将程序源代码更新到 0.2 版本:

2021-03-15T14:44:11.png

2021-03-15T14:50:28.png

编辑 Formula,修改对应的版本信息:

brew edit zhb127/homebrew-tap/zhb127

2021-03-15T15:04:01.png

提交修改的内容到 Github 仓库:

git add Formula/zhb127.rb
git commit -m 'feat: upgrade zhb127 to 0.2'
git push origin zhb127

创建 PullRequest,自动触发两个 Github workflows:

2021-03-15T15:11:08.png

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

2021-03-15T23:23:05.png

2021-03-15T23:23:45.png

至此,完成 Homebrew Tap 的升级。

补充说明

通过 curl 命令,计算源代码包 sha256 值:

# macos
curl -sSL https://github.com/zhb127/homebrew-helloworld/archive/refs/tags/0.2.tar.gz | shasum -a 256

参考资料

添加评论

验证码: