【问题标题】:Require PR review in branch protection rules without "write" access要求在没有“写”权限的分支保护规则中进行 PR 审查
【发布时间】:2020-09-30 18:10:21
【问题描述】:

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

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: github permissions pull-request


    【解决方案1】:

    GitHub 受保护分支上的“必需的批准评论”设置仅计算具有写入或管理员权限的人,因此如果您想计算具有读取权限的人,您似乎不太走运。

    来自Approving a pull request with required reviews

    如果您的存储库需要审查,则拉取请求必须获得特定数量的来自存储库中具有写入或管理权限的人员的批准审查,然后才能合并它们。

    除此之外,我认为您可以使用您建议的解决方法/集成。触发机器人批准可能是一种选择,但如果您需要超过 1 个额外批准,那么您可能需要多个机器人帐户(机器人只能批准一次 PR)?不过,您可能可以统计评论并在 PR 上留下通过/失败状态(这可能是必需的状态检查)。

    如果您不想构建/托管某些东西,那么您可以查看PullApproveThere'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 个批准):

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-05
      • 2022-01-21
      • 2020-02-20
      • 2021-10-05
      • 2020-09-26
      • 2019-06-10
      • 2023-01-18
      • 2019-11-16
      相关资源
      最近更新 更多