本文档描述了 Homebrew/brew
存储库的几个组件,维护者了解这些组件很有用,但对于大多数用户和贡献者来说,不一定需要在文档中显示这些组件。
合并使用 Homebrew/brew
存储库中的标准“合并”按钮进行,以保留历史记录和 GPG 提交签名。“合并并压缩”和“变基并合并”按钮已禁用。
PR 必须满足以下条件才能合并
Homebrew/brew
CI 的更多信息,请参见下面的 CI 部分。如果可能,PR 还应具有 GPG 签名的提交(有关如何设置此项的说明,请参见私有 ops
存储库)。
为了确保非紧急 PR 有机会让任何其他想要查看的维护者看到和审阅,所有 PR 在合并之前都需要获得批准。
Homebrew/brew
中的每个 PR 都会运行一系列 CI 测试,以尝试防止引入错误。PR 必须在合并之前通过 CI。
每个 PR 上都会运行许多检查。以下是各种检查及其代表内容的快速列表
Vendor Gems / vendor-gems
:除了 dependabot PR 之外,此项都会跳过。它会更新 RBI 文件以匹配任何新的/已更改的依赖项。有关 RBI 文件和类型检查的更多信息,请参见 使用 Sorbet 进行类型检查。Codecov / codecov/patch
和 codecov/project
:这些显示 PR 的 Codecov 报告。有关 Codecov 的更多信息,请参见下面的 brew tests
和 Codecov 部分。CI / vendored gems
:此项检查 Linux 上的已售卖宝石是否发生了需要提交到 PR 分支的更改。CI / test default formula (Linux)
:此项在 Linux 上运行 brew test-bot
以确保它仍按预期工作。CI / syntax
:此项首先运行以检查 PR 是否通过 brew style
和 brew typecheck
。如果此项作业失败,则以下作业将不会运行。CI / tap syntax
:此项在所有官方 tap 上运行 brew style
和 brew audit
(请注意,虽然此项在 Linux 上运行,但它确实会检查所有 cask 存储库)。CI / docker
:此项构建并部署新的 Homebrew Docker 镜像到 GitHub Packages 和 Docker Hub。CI / 测试所有内容 (macOS)
:这会在 macOS 上运行多项检查,包括 brew tests
、brew update-tests
、brew test-bot --only-formulae --test-default-formula
、brew readall
和 brew doctor
。CI / 测试 (通用操作系统)
和 CI / 测试 (Linux)
:这些在 Linux 上使用各种选项运行 brew tests
。文档 CI / linting
和 rubydoc
:这些检查书面文档的散文和格式,并验证 rubydoc API 文档 可以毫无问题地构建。请注意,此列表并非详尽无遗,并且会随着时间的推移而改变。
brew tests
和 CodecovCodecov 为每个 PR 生成覆盖率报告,其结果显示为 CI 作业。这些报告可在 Homebrew/brew 的 Codecov 页面 上公开查看。此外,注释将出现在 PR 的“已更改文件”选项卡中,其中添加了 brew tests
未命中的代码行。如果 Codecov 作业失败,则表明应该添加更多测试来测试 PR 中添加的功能。
Codecov 应作为指南来指示何时可能需要更多测试,但期望每行代码都与测试相关是不现实的,尤其是在测试需要缓慢的集成测试时。因此,如果需要,可以合并未通过 Codecov 检查的 PR,但如果可能,应避免这样做。
brew tests
和 BuildPulseBuildPulse 监视每次推送到 Homebrew/brew
的 CI 作业,以检测不稳定的测试并随着时间的推移跟踪它们。报告可供 Homebrew 维护人员在 buildpulse.io 上获取,每日摘要发布到 Slack 中的 #buildpulse-health
。
BuildPulse 可用作指南,以识别哪些不稳定的测试对 CI 套件造成最大的破坏。为了对构建的可靠性进行最大的改进,我们可以首先关注最具破坏性的不稳定测试(即导致最多间歇性故障的测试)。
为了帮助找到特定不稳定测试的根本原因,buildpulse.io 提供了指向最近的 CI 作业和提交的链接,其中测试失败,然后在不更改基础代码的情况下通过。您可能希望查看该提交处的代码,以尝试在本地重现失败。您还可以在 buildpulse.io 上查看最近失败的列表,以确定测试是否总是以相同的方式失败。
Homebrew 的手册页和 shell 补全由 brew generate-man-completions
命令自动生成。欢迎贡献者运行此命令并在 PR 中提交更改,但他们不必这样做。如果他们不这样做,一旦合并原始 PR,@BrewTestBot 将自动打开一个后续 PR 以进行必要的更改。如果更改看起来正确,则可以立即合并这些后续 PR。
可以通过从“操作”选项卡下的 更新赞助商、维护者、手册页和补全 部分触发工作流来手动请求更新。单击“运行工作流”下拉菜单,然后单击“运行工作流”按钮。如果有任何更改,将很快打开一个 PR。