gpt4 book ai didi

github - 要求在没有 "write"访问权限的分支保护规则中进行 PR 审查

转载 作者:行者123 更新时间:2023-12-04 17:27:35 30 4
gpt4 key购买 nike

我有一个团队在几个 GitHub 存储库中工作。每个存储库都有负责人(维护者)对拉取请求进行最终审查,如果可以则将其合并到 master 中。所有其他成员都是此存储库的开发人员和审阅者(但可能在另一个存储库中具有维护者角色)。工作流程是:

  1. Member1 提交 PR
  2. Member2 评论 PR
  3. 维护者审查和合并 PR

为了要求 PR 审查,我启用了“分支保护规则”到 master 并选中了“Require pull request reviews before merging”。但是当团队成员批准 PR 时,它不会变成“绿色”并且维护者无法合并它,为了使 PR 批准“绿色”,我将团队成员的访问权限更改为“写入”。但是现在每个成员都可以在没有维护者参与的情况下合并拉取请求:

  1. Member1 提交 PR
  2. Member2 评论 PR
  3. Member1 o Member2 合并 PR(如果他们有写入权限)

此外,写入权限还提供了关闭工单和拉取请求的能力。当然,我们可能会达成冗长的协议(protocol),即有人是维护者,只有这个人可以在某个特定的 repo 中合并 PR,但在这种情况下,我看不出 GitHub 如何帮助实现这个“分支保护规则”。

是否可以使用 GitHub 配置自动执行此工作流程?我只想将每个存储库中的“读取”权限授予开发人员和审阅者,并将“维护”角色授予维护者。

我看到了一些可能的解决方法,但需要手动实现:

  1. 使用 GitHub Action :在 PR 批准事件上触发 GitHub Action ,检查批准者是否是团队成员并具有“读取”权限,从 Action 中批准 PR。
  2. 将简单的托管服务器与机器人用户一起使用:将机器人用户添加到具有写入权限的存储库,监听服务器上的网络 Hook ,并使用机器人 token 在团队成员批准的网络 Hook 上通过 API 批准 PR。

也许我遗漏了一些东西,我可以不用编写代码而只使用 GitHub 来完成?这似乎是很常见的做法,我不明白为什么它没有在 GitHub 端实现。

最佳答案

GitHub 保护分支上的“required apprapping reviews”设置只计算具有写入或管理权限的人员,因此如果您想计算具有读取权限的人员,您似乎不太走运。

来自 Approving a pull request with required reviews :

If your repository requires reviews, pull requests must have a specific number of approving reviews from people with write or admin permissions in the repository before they can be merged.

除此之外,我认为您已经按照您建议的那样进行了解决方法/集成。触发机器人批准可能是一种选择,但如果您需要超过 1 个额外的批准,那么您可能需要多个机器人帐户(机器人只能批准一次 PR)?不过,您可能会汇总评论并在 PR 上留下通过/未通过状态(这可能是必需的状态检查)。

如果您不想构建/托管某些东西,那么您可以看看 PullApprove . There's more flexibility for counting reviews and "read" permissions are fine so long as they can review a PR .

基本的 PullApprove 配置看起来更像这样:

# .pullapprove.yml
version: 3

groups:
members:
reviewers:
teams: [members-team]
reviews:
required: 1
request: 1
maintainer:
reviewers:
users: [maintainer-jeff]
required: 1
request: 1

然后可以设置为必需状态(有或没有额外的 GitHub 至少 1 次批准):

GitHub protected branch settings with PullApprove

关于github - 要求在没有 "write"访问权限的分支保护规则中进行 PR 审查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62318630/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com