仅在非草稿状态的拉取请求上运行操作。

19

我已经设置了 Github actions,以便在创建草稿拉取请求时跳过它,但当拉取请求准备好进行评审时,它并没有触发。有没有办法在我将草稿 PR 从草稿更改为准备好审核时运行该操作?

pull_request:
  types: ['opened', 'edited', 'reopened', 'synchronize', 'ready_for_review']

jobs:
 build:
    if: github.event.pull_request.draft == 'false'
    runs-on: ubuntu-latest

1
github.event.pull_request.draft == 'false' 更改为 github.event.pull_request.draft == false 可以使其正常工作。 - jakub.g
1个回答

32

pull_request.draft 是一个布尔值,但你将其作为字符串处理,所以你比较的类型不匹配。

根据 文档,在这种情况下操作数被强制转换为数字:左侧(布尔)变成1如果为真,变成0如果为假;右侧(字符串)变成NaN,所以你的if语句永远不会计算为true

要解决问题,请去掉引号:

    if: github.event.pull_request.draft == false

可以使用否定运算符!来缩短,但由于!对于YAML来说是特殊字符,所以值必须用引号括起来:

    if: '! github.event.pull_request.draft'

3
上述解决方案似乎无效,因为在打开拉取请求时它始终失败。我收到以下错误提示:解析标签时未找到预期的标签URI。 - Ruben Pretorius
@RubenPretorius 我不明白那是从哪里来的,你能分享更多你的工作流文件吗? - Benjamin W.
1
谢谢您的回复。现在似乎可以工作了,只需要在if语句中false处去掉单引号即可。 - Ruben Pretorius
要明确的是,您不能使用if: ! github.event.pull_request.draft,因为!符号无法正确解释。if: github.event.pull_request.draft == false将会产生所需的行为。 - Greg
@Greg 噢,你说的没错,那个需要加引号(但是这样就能用了)。 - Benjamin W.

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