github 操作排除来自分支的拉取请求

时间:2021-07-15 05:38:01

标签: github github-actions pull-request

假设我有一个在每个 PR 上运行以掌握的工作流程,其开头为:

on:
  pull_request:
    branches:
      - master

如果 PR 来自 depbot 分支,我想跳过所有作业。类似的东西:

on:
  pull_request:
    branches:
      - master
    head_ref-ignore:
      - depbot

我认为您可以使用

跳过所有步骤(一次一个)
 if: startsWith(github.head_ref, 'depbot') == false

但这不是我想要的,因为它仍然会启动工作。我如何才能在发布级别实现这一目标?

2 个答案:

答案 0 :(得分:1)

<块引用>

但这不是我想要的,因为它仍然会启动工作。

这意味着您需要一个“看门人”作业,该作业将被启动(并检查 github.head_ref),并且只有在满足正确条件时才会通过 job dependency 调用第二个作业。

但重点是:您至少需要启动一项作业,以检查条件。

答案 1 :(得分:0)

根据the documentation,在工作流级别至少有两种方法:

on:
  pull_request:
    branches:    
      - 'master'    # matches refs/heads/master
      - '!depbot'   # excludes refs/heads/depbot

on:
  pull_request:
    branches-ignore:    
      - 'depbot'   # ignore refs/heads/depbot

并不是说您不能对工作流中的同一事件同时使用 branchesbranches-ignore 过滤器。当您需要过滤分支以获得正匹配并排除分支时,请使用分支过滤器。当您只需要排除分支名称时,请使用分支忽略过滤器。