53

我希望能够让操作在除 master 之外的任何给定分支上运行。我知道有一个预先构建的filter动作,但我想要完全相反。

更像 GitLab 的except关键字。由于这不在官方文档中,有没有人准备了一个体面的解决方法?

非常感谢。

4

2 回答 2

94

更新:在Samy 的回答中描述了一个更新的过滤器,它提供了一种更简洁的方式来实现这一点。


文档已更新,现在提供更多信息:

当您指定一个branchestags过滤器时,工作流仅在至少一个模式匹配时运行。对与定义的模式不匹配的分支或标签的任何更改都不会触发工作流。您定义模式的顺序很重要:

  • 正匹配后的匹配负模式将再次排除引用。
  • 否定匹配后的匹配肯定模式将再次包含参考。

因此,为了排除master,您需要确保首先包含与所有内容匹配的模式:

on:
  push:
    branches:    
      - '*'         # matches every branch that doesn't contain a '/'
      - '*/*'       # matches every branch containing a single '/'
      - '**'        # matches every branch
      - '!master'   # excludes master
于 2019-09-12T09:13:07.753 回答
84

现在有一个branches-ignore选项:

on:
  push:
    branches-ignore:
      - master

https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestbranchestags

于 2020-07-15T15:37:01.300 回答