仅在新标签上触发 Github Action?

mrv*_*klm 24 github github-actions

是否有可能仅在推送新版本(带有新标签)时触发 github 操作?我不想在每次推送到 master 时运行它们,但我也想避免创建发布分支。

Yon*_*ong 40

目标是在推送标签时触发工作流程,例如执行以下操作:

git tag v1.0.0
git push origin v1.0.0
Run Code Online (Sandbox Code Playgroud)

在工作流程文件中:例如ci.yml

git tag v1.0.0
git push origin v1.0.0
Run Code Online (Sandbox Code Playgroud)

如果有人将语义版本化标签推送到 GitHub 存储库,这将会运行。

我犯的一个错误是从 Travis CI 迁移到 GitHub Actions 时,我错误地使用了

'^v[0-9]+\.[0-9]+\.[0-9]+'

作为模式,这是错误的。因此,如果工作流程没有被触发,请检查您的模式语法。

  • 该模式没有考虑 alpha、beta 等版本,这对于高级项目来说可能是一个问题。 (4认同)
  • 试试这个:`v[0-9]+(\.[0-9]+)*([-\.]\S+)?`。它匹配“v1”、“v1.2”、“v1.2.3-alpha.1”和“v1.2.3.alpha.1-build.123+sha.456”等标签。 (4认同)

riQ*_*iQQ 31

使用以下语法:

on:
  push:
    # Pattern matched against refs/tags
    tags:        
      - '*'           # Push events to every tag not containing /
Run Code Online (Sandbox Code Playgroud)

对于分层标签:

on:
  push:
    # Pattern matched against refs/tags
    tags:        
      - '**'           # Push events to every tag including hierarchical tags like v1.0/beta
Run Code Online (Sandbox Code Playgroud)

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

  • “完整(基本)工作示例”是什么意思?原来的问题并没有要求这样的事情。 (2认同)
  • 个人工作怎么样(if 声明)?此示例仅显示如何对整个工作流程文件执行此操作。 (2认同)

Gri*_*der 6

我得到它的工作

on:
  push:
    tags:
      - '*'
Run Code Online (Sandbox Code Playgroud)

我发现如果标签是在工作流创建之前(本地)创建的,无论我删除和重新推送标签多少次,它都不会触发,直到我在本地删除标签并重新创建它。该操作似乎不适用于在工作流之前创建的标签。

  • 这让我发疯了一个小时,试图根据新标签触发。不起作用: `git push origin :1.2.3.0 ; git push origin --tags` 工作:`git tag -d 1.2.3.0 ; git 标签 1.2.3.0 ;git推送原点:1.2.3.0;git push origin --tags` (4认同)