GitHub Actions未阻止处于跳过状态的必需步骤的PR。

4

我有一个GitHub Action,只有在提交信息中包含“test_api”时才应运行。但是,我希望它成为必须检查的要求,以便能够合并PR。但由于某种原因,这不被识别,而且对我来说毫无意义。

jobs:
  api-tests:
    if: contains(github.event.commits[0].message, '[test_api]')
    runs-on: ubuntu-latest
    ...

就绪合并的PR

分支保护


如果消息不包含“test-api”,为什么不抛出错误(强制失败)以中断工作流程? - GuiFalourd
2个回答

0

它说测试被跳过了 - 这意味着这不是真的:

if: contains(github.event.commits[0].message, '[test_api]')

除非您在工作流程中有更多的操作。


我知道它们已被跳过。我希望它们能够跳过。然而,即使它们处于跳过模式,我仍然能够合并PR,这是非常不期望的。 - Laurens

0

如果条件不成立,我会强制失败。

jobs:
  api-tests:
    if: contains(github.event.commits[0].message, '[test_api]')
    runs-on: ubuntu-latest
    steps:
      ...
    
  not-api-tests:
    if: "!contains(github.event.commits[0].message, '[test_api]')"
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2.3.4
    - name: Fail the job
      run: exit 1

注意:此方法适用于所有三个平台(ubuntu、macos和windows)。

我在这里(使用[test_api]提交)进行了测试,以及在这里(通过另一条提交消息强制出错) 进行了测试。工作流程实现可以在这里 找到。


1
嘿,我现在确实做了同样的事情,但我真的不喜欢这个想法。它现在显示所有测试都失败了。此外,我必须添加逻辑来补偿主分支,在该分支中应始终运行,而不管提交消息如何。这太奇怪了,如果您检查屏幕截图,它清楚地显示api_test被标记为必需。然而,当跳过时它并没有阻止。 - Laurens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接