这个项目能做什么
Extra CODEOWNERS 是一款面向希望在 CODEOWNERS 策略下实现常规拉取请求(PR)自动化审批团队的自托管 GitHub App。它发布一个必需的检查(required check),该检查接受人类 CODEOWNER 的审批或经明确注册的 GitHub App 的审批。仓库还可以选择将符合条件的 PR 作者视为该检查的人类 CODEOWNER 证据。人员和团队仍保留在 GitHub 标准的 CODEOWNERS 文件中,而一个单独的策略则规定哪些 App 可以覆盖哪些所有者和路径。
该项目的存在是因为 GitHub 的“Require review from Code Owners”规则虽然识别人员和团队,但不允许 GitHub App 代替他们。如果像 Stampbot 这样的 App 已经知道某个 PR 是常规性的,GitHub 仍会等待人类代码所有者的审批。Extra CODEOWNERS 用一个检查项取代了这一单一决策。它分别评估每个不同的有效所有者集,每个由所有路径代表的所有者集必须通过。一个 PR 可以在一个所有者集上使用人类审批,在另一个所有者集上使用 App 审批。只有在满足以下条件时,App 审批才有效:组织注册了该确切的 App 身份、仓库已加入、委托覆盖了更改的路径和有效 CODEOWNER、存在所有必需的标签、审批适用于当前的 PR head,且没有组织或内置防护栏将该路径设为仅限人类。混合了委托和未委托所有路径的 PR 仍需要为每个未委托的所有者集提供人类覆盖。没有有效 CODEOWNERS 匹配的路径不会创建代码所有者要求,尽管普通审批计数和其他规则仍然适用。
GitHub 保留普通的 PR 规则:最小审批数、过期评审处理、签名提交以及无关的必需检查。Extra CODEOWNERS 旨在仅取代“Require review from Code Owners”。GitHub 的公开合约未说明第三方 App 的评审是否计入普通审批最小值,因此在依赖此功能前应在临时仓库中进行测试。即使 Extra CODEOWNERS 检查成功,非零的最小值可能仍需要人类审批。该 App 不提交评审、不合并 PR、不授予另一个 App 访问权限,也不编辑 CODEOWNERS。它读取 GitHub 证据并发布一个 Check Run。
该检查应被视为策略结果而非评审。Extra CODEOWNERS 出现在 GitHub 的检查区域,而普通审批数出现在评审区域。团队在需要时应保留正常的最小评审规则。该检查是异步的。当审批被撤销或更改时,之前的成功状态将一直可见,直到 GitHub 交付事件且 App 重置并重新评估检查。对账机制可修复丢失的交付,但它不是一种瞬时撤销机制。对于不能容忍该过期成功窗口的边界,应保留 GitHub 原生的代码所有者规则。
委托分为两个策略范围。CODEOWNERS 决定谁拥有每个路径。组织策略决定哪些 App 是可信的,以及哪些路径 App 不可覆盖。仓库策略决定在该仓库中,哪个已注册的 App 可以覆盖哪个所有者和路径。仓库策略可以缩小组织策略的范围,但不能注册 App 或削弱组织防护栏。仓库策略采用 TOML 格式,包含 schema_version、enabled 以及包含 app、paths、for_owners 和 required_labels 的 delegations。app 值是组织策略 apps 表中的别名,该表将别名绑定到 App 的不可变数字 ID、公共 slug 和机器人用户 ID。examples/policy 下提供了示例策略文件,配置指南涵盖了两个范围、路径匹配、标签、内置保护文件以及一个不安全的逃生口。
对于本地检查,安装了 Bash、Git 和 mise 后,可以通过克隆仓库并运行 mise trust、mise install、mise run bootstrap 和 mise run test 来运行干净的检出。README 建议在 mise trust 之前阅读 mise.toml,因为该命令会记录本地信任决策。运行成功以测试套件通过为标志。它不会注册 GitHub App,也不证明实时 GitHub 合约。若要在测试仓库中发布检查,可参考 first-check 教程。在任何关键位置都应保持原生代码所有者规则启用。Alpha 镜像和图表仅用于影子模式测试,且应通过摘要(digest)进行固定。
该项目处于预发布阶段。Alpha 镜像和图表仅用于非必需的影子模式测试,不应强制执行生产环境合并。由于早于不可变发布流水线,main 及其 sha 和 sha256 同伴标签等旧版预览镜像不受支持且不安全,不建议部署。项目状态文档区分了当前可用功能与阻碍支持发布的功能。文档包括项目状态、原生 CODEOWNERS 对比、威胁模型、开发安装教程、配置指南、故障排除指南、部署与运维指南、接收者通知包、架构与维护者指南以及贡献者指南。完整手册位于 Read the Docs。项目策略涵盖支持、私有漏洞报告、OpenSSL CVEs 和 VEX、治理、变更日志以及 Apache License 2.0。徽章集显示了 CI、属性测试、覆盖率、CodeQL、OpenSSF Scorecard、文档、Python 3.12 至 3.14 以及 Apache-2.0 许可。
评论
0 评分人数达到10人后显示
登录后参与讨论。