使用分支过滤器的GitHub Actions标签过滤器

11

GitHub Actions 允许使用分支和标签过滤器,但它们似乎不能同时使用。

例如,此工作流程在推送到主分支 推送带有标签的分支时运行。

name: npm Publish

on:
  push:
    branches:
      - master
    tags:
      - v*

我想设置一个发布工作流程,当标记推送到主分支时运行,而不仅是其中之一。如何实现?

你有任何不在master分支上的标签吗?因为我在文档中找不到像你所寻找的AND操作的方法,但如果你所有的v*标签都在主分支上,那么你可以尝试省略branches: master,看看是否有效。文档中说:“仅定义tags:branches:中的一个将意味着工作流跳过影响另一类型引用的事件。” - rmunn
1
从文档中看起来似乎不可能。您可以在作业步骤中使用 if 条件语句,但这可能有点繁琐。一个选项是仅使用 on: release 触发工作流程,而不是 on: push。然后它只会在您发布主分支上的标签时触发。 - peterevans
@peterevans 我之前没有看到过那个解决方案。我觉得它已经足够接近了,值得作为一个答案。 - Kyeotic
1
@Kyeotic,我添加了一个答案来扩展我的评论。 - peterevans
1个回答

9
一种解决方案是使用 on: release 而不是 on: push。这将在通过 GitHub UI 发布发布版时触发工作流程执行。当您在 GitHub 上发布版本时,它会使用您指定的版本标记 master 分支。因此,每次工作流程的执行都保证是在 master 分支上的已标记提交。
name: npm Publish

on: release

1
这是我见过的最接近解决方案的东西。 - Kyeotic

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