繁体   English   中英

如何根据整个 github 操作工作流的成功或失败设置 github 分支保护规则?

[英]How do I set a github branch protection rule based on the success or failure of an entire github actions workflow?

我正在尝试根据 github 操作工作流的成功或失败设置 github 分支保护规则。

您可以在此处查看工作流程:

https://github.com/apostrophecms/apostrophe/blob/main/.github/workflows/main.yml

工作流通过了,我什至有一个工作徽章,但我无法设置一个分支保护规则,要求它作为状态检查通过。

可以根据矩阵中的任何一个单独构建设置分支保护规则,但我不想单独设置所有这些并在我的矩阵规则更改时跟踪它们。

正如您从屏幕截图中看到的,我无法选择作业的名称“build”(尽管我可以选择任何子构建),而且我也无法选择“tests”,作业的名称整个工作流程(如果我使用大写字母 t,它不会改变)。

我错过了什么? 谢谢你的帮助!

屏幕截图一:我可以选择一个子构建,但不能选择整个构建作业。

我可以选择一个子构建,但不能选择整个构建作业

屏幕截图二:我根本无法选择整个“测试”工作流程的名称。

我根本无法选择整个“测试”工作流程的名称

在这种情况下,您只有一个带有矩阵的作业。 这意味着您将以 9 种可能性结束(3 个节点选项 × 3 个 MongoDB 选项)。 其中每一项都被视为单独的状态检查,并且可以单独强制启用或禁用。 这样您就可以添加新选项,而无需预先强制执行。

如果您希望这些工作中的每一个都通过,那么您需要选择 9 个工作中的每一个并根据需要标记它们。

有一个技巧可以在工作流中添加一个步骤,以将矩阵中的所有作业收集到一张支票:

  tests:
    runs-on: ubuntu-latest
    needs: build
    if: always()
    steps:
      - name: All tests ok
        if: ${{ !(contains(needs.*.result, 'failure')) }}
        run: exit 0
      - name: Some tests failed
        if: ${{ contains(needs.*.result, 'failure') }}
        run: exit 1

if: always()必须收集失败的任务,否则 PR 永远不会得到适当的状态检查。 此外,这是您支付的额外步骤(如果您使用付费计划)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM