如何仅在具有特定名称前缀的分支上获得 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*')
提前致谢!
branches
、branches-ignore
、tags
和 tags-ignore
关键字接受 glob 模式。您可以在文档中查看详细信息 - filter pattern.
至于使用表达式,文档没有提到 matches
函数,但也许您可以使用 contains
、startsWith
或 endsWith
之类的东西。有关详细信息,请参阅 here。
受 frennky 回答的启发,我最终在我的步骤中做了以下操作,虽然丑陋但有效:
- name: Deploy application
if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/features/lrd')
我正在写一个 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*')
提前致谢!
branches
、branches-ignore
、tags
和 tags-ignore
关键字接受 glob 模式。您可以在文档中查看详细信息 - filter pattern.
至于使用表达式,文档没有提到 matches
函数,但也许您可以使用 contains
、startsWith
或 endsWith
之类的东西。有关详细信息,请参阅 here。
受 frennky 回答的启发,我最终在我的步骤中做了以下操作,虽然丑陋但有效:
- name: Deploy application
if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/features/lrd')