GitHub Actions在推送到所有分支时运行。

48

在任何推送或拉取请求上运行GitHub Action 非常容易

# Triggers the workflow on push or pull request events
on: [push, pull_request]

但是,如果我想将运行限制为针对特定基础参照打开的拉取请求,同时允许在所有分支上运行怎么办?

我考虑了一下:

on:
  push:
    branches:
      - "*"
  pull_request:
    branches:
      - "develop"
      - "staging"

但是它没有起作用。我将此操作添加到一个特性分支中,但 GitHub 没有捕获到它。

我的全局通配符有什么问题吗? 为什么“*”不起作用?

2个回答

51

发布问题后,我找到了Filter pattern cheat sheet:

'*': 匹配不包含斜杠(/)的所有分支和标签名称。 星号(*)是YAML中的特殊字符。当您使用星号开始一个模式>时,必须使用引号。

'**': 匹配所有分支和标签名称。这是默认行为 当您不使用分支或标记过滤器时。

恰巧我测试的分支包含斜线(/),所以一个星号(*)并不够用。我改用两个星号(**) ,现在它可以正常工作了。


5
您也可以完全删除 branches 对象,以便触发任何分支的事件。 - Benjamin W.
1
当我删除“branches”时,yml文件无法编译,因为“on”是一个映射。 - Paul Razvan Berg
你难道不需要将.YML文件合并到所有分支中,以便触发器实际上可以为每个命名分支工作吗? - Polajenko
@PaulRazvanBerg 请尝试使用 on: {} - MEMark
这对我有效:branches: [] - theartofrain

28

完全取消推送限制意味着会针对所有推送触发(提交,以及标签):

on:
  push:
  pull_request:
    branches:
      - develop
      - staging

jobs:
  print:
    runs-on: ubuntu-latest
    steps:
      - run: echo "Running!"

3
注意:当您删除“分支”时,工作流将运行标签推送,而不仅仅是分支推送。 - Suma
@Suma 很好的观点,已经添加了一条备注来指出这一点。 - Benjamin W.

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