【问题标题】:How to write custom GitLab approval rules?如何编写自定义 GitLab 审批规则?
【发布时间】:2022-08-23 05:20:31
【问题描述】:

我的团队正在使用 GitLab Premium。在项目设置中,在合并请求批准, 有一个审批规则部分。在第一行,我们增加了需要批准number 为 1,以便每个合并请求都必须得到至少一个其他队友的批准。到目前为止,一切都很好。

我可以看到还有一个许可证检查规则和覆盖检查可以启用的规则以及它们的作用是不言自明的。还有一个添加审批规则按钮,您可以在其中为新规则设置名称和批准者,但您实际上不能描述/选择实际规则应该是什么。我能找到的所有文档都简单地解释了如何点击该 UI。

您如何实际设置新规则,是否可以编写自己的自定义规则?

例如,我们想设置一个规则,只有团队的一个子集可以批准“大”合并请求(其中“大”由更改的行数定义,由 git log 报告) .我想这将类似于许可证检查或者覆盖检查,但由我们编写。那可能吗?

    标签: gitlab gitlab-api


    【解决方案1】:

    我认为这还不可能。目前,批准规则是特定于分支机构的。合并请求的内容无关紧要。

    不过,我认为有一个适合您的解决方案:GitLab 允许您编写可以访问 GitLab API 的机器人。您需要的是一个外部服务来监听新的合并请求。然后,您的工具必​​须以某种方式找出实际进行了多少更改(据我所知,Merge Request API 尚无法做到这一点)。根据此,您可以通过 API 调整相应 MR (API reference) 的审批规则。

    这种方法对您有帮助吗?

    您也可以在GitLab Community Forum 中提问,在那里您可能会得到更好的帮助。

    【讨论】:

    • 感谢您的回答!现在我明白了添加批准规则的意义(它只是为给定的分支定义一组批准者,仅此而已)。外部监控服务可能会起作用,但对于我们想要的东西来说似乎有点过分了。我想我们也可以设置一个 CI 作业,在大型 MR 上进行检查并失败,但是没有任何方法可以批准异常。我只是想知道他们是如何实现许可证检查和覆盖检查的……我猜这些是在他们的系统中硬编码的。
    【解决方案2】:

    现在我明白了添加批准规则的意义(它只是为给定的分支定义一组批准者,仅此而已)。

    实际上,批准规则将适用于一个分支或所有分支,或者自GitLab 15.3(2022 年 8 月)以来:

    为所有受保护的分支添加批准规则

    您现在可以创建一个 MR approval rule 并将其仅应用于您的受保护分支 项目。
    这是一项重大改进,可让您更有选择地应用合规性控制并增加粒度。

    以前,添加 MR 批准规则会将其应用于所有分支机构。这是确保之前执行正确的工作流程的好方法 代码已投入生产,但这也意味着功能分支、短期分支或实验分支的 MR 都必须使用相同的 工作流程。
    这可能会减慢那些不打算提交受保护分支并且可能不需要相同级别的开发人员 工作流执行。

    为受保护的分支创建 MR 批准规则可以让您确信您所依赖的敏感分支将具有适当的 应用到它们的工作流,同时不会减慢不需要相同级别控制的其他分支的开发。

    请参阅 DocumentationIssue

    但这与其他规则不同,这些规则无法通过 Approval 规则轻松复制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      • 2012-08-21
      • 2013-05-20
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      相关资源
      最近更新 更多