如何仅在具有特定名称前缀的分支上获得 GitHub 到 运行 的操作步骤?

How to get a GitHub Action step to run only on branches with a particular name prefix?

我正在写一个 GitHub 动作。我希望我的某些步骤仅在某些分支上 运行。

仅在 master 和以 features/lr 开头的分支上,整个操作设置为 运行。

on:
  push:
    branches: 
      - master
      - features/lr*

我有一个“部署”步骤,我想 运行 在 master 和以 features/lrd[ 开头的分支上=36=]。 (因此,例如,如果我的分支名为 features/lr-foo,则应跳过部署步骤。)

我知道我可以这样 if 条件句:

- name: Deploy application
  if: github.ref == 'refs/heads/master'

我还可以检查 github.ref 是否与某个前缀或模式匹配吗?它的语法是什么?

类似这样的伪代码:

- name: Deploy application
  if: github.ref == 'refs/heads/master' || github.ref.matches('refs/heads/lrd*')

提前致谢!

branchesbranches-ignoretagstags-ignore 关键字接受 glob 模式。您可以在文档中查看详细信息 - filter pattern.

至于使用表达式,文档没有提到 matches 函数,但也许您可以使用 containsstartsWithendsWith 之类的东西。有关详细信息,请参阅 here

受 frennky 回答的启发,我最终在我的步骤中做了以下操作,虽然丑陋但有效:

- name: Deploy application
  if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/features/lrd')