是否可能仅在推送新版本(即带有新标签的版本)时才触发Github Action?我不想在每次推送到主分支时都运行它们,但我也不想创建一个发布分支。
是否可能仅在推送新版本(即带有新标签的版本)时才触发Github Action?我不想在每次推送到主分支时都运行它们,但我也不想创建一个发布分支。
使用以下语法:
on:
push:
# Pattern matched against refs/tags
tags:
- '*' # Push events to every tag not containing /
on:
push:
# Pattern matched against refs/tags
tags:
- '**' # Push events to every tag including hierarchical tags like v1.0/beta
目标是在推送标签时触发工作流程,例如执行以下操作:
git tag v1.0.0
git push origin v1.0.0
在工作流程文件中:
例如 ci.yml
name: CI
on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
如果有人向 GitHub 仓库推送语义化版本标签,这将会运行。
我犯了一个错误,当我从 Travis CI 迁移到 GitHub Actions 时,我 错误地 使用了
'^v[0-9]+\.[0-9]+\.[0-9]+'
作为模式,这是错误的。因此,如果工作流没有被触发,请检查您的模式语法。
v[0-9]+(\.[0-9]+)*([-\.]\S+)?
。它可以匹配像 v1
、v1.2
、v1.2.3-alpha.1
和 v1.2.3.alpha.1-build.123+sha.456
这样的标签。 - benjixinator'v[0-9]+(\.[0-9]+)*([-\.]\S+)?'
产生了push event contained invalid tags patterns: v[0-9]+(\.[0-9]+)*([-\.]\S+)?
的无效标签模式。 - undefined我已经让它可以工作了
on:
push:
tags:
- '*'
我发现,如果标签在工作流创建之前(本地)已经创建,无论我删除和重新推送标签多少次,它都不会触发,除非我在本地删除并重新创建标签。对于在工作流创建之前创建的标签,该操作似乎不起作用。
git push origin :1.2.3.0 ; git push origin --tags
起作用:git tag -d 1.2.3.0 ; git tag 1.2.3.0 ; git push origin :1.2.3.0 ; git push origin --tags
- dB.