触发基于推送标签的构建
Trigger build on pushing tag
我有一个构建,当提交被推送到我的主分支时触发。这些构建生成预发布的 nuget 包。当我推送标签时,我想做一个没有预发布后缀的完整发布。是否可以在将标签推送到存储库时触发某些特定的 build/release(仅)?
不,当标签被推送到 repo 时,没有触发 a build/release 的功能。需要更改。
解决方法是:
- Create/add 一个 PowerShell 文件到源代码控制以添加构建标签(##vso[build.addbuildtag]build tag) per to the new tag of repo (logical: 1. Get a list of tags 2. 比较它们(例如 creationData、标签名称或将其与旧标签进行比较(可以存储在文件中)3 . 如果满足你的要求 4. 添加标签构建 (##vso[build.addbuildtag]构建标签))
- 创建新的构建定义
- 选中触发器选项卡中的
Continuous integration (CI)
选项并指定分支过滤器
- 添加 PowerShell 步骤以构建定义并指定该 PowerShell 文件
- 创建新的发布定义
- 勾选触发器选项卡中的
Continuous Deployment
选项并指定Set trigger on artifact source
,然后点击Add
添加标签条件
之后,如果有特定的标签添加到构建中,将创建新版本。
关于用PowerShell调用RESTAPI,可以参考:Calling VSTS APIs with PowerShell
尝试在"Branch filters"中指定refs/tags/*。
这在最简单的情况下对我有用——当我推送任何标签时(但在我的例子中只推送到分支的头部提交)——构建被触发
更新:"only to the head commit of the branch" 的问题在我这边。实际上它会触发带有添加到任何提交的标签的构建
我有一个构建,当提交被推送到我的主分支时触发。这些构建生成预发布的 nuget 包。当我推送标签时,我想做一个没有预发布后缀的完整发布。是否可以在将标签推送到存储库时触发某些特定的 build/release(仅)?
不,当标签被推送到 repo 时,没有触发 a build/release 的功能。需要更改。
解决方法是:
- Create/add 一个 PowerShell 文件到源代码控制以添加构建标签(##vso[build.addbuildtag]build tag) per to the new tag of repo (logical: 1. Get a list of tags 2. 比较它们(例如 creationData、标签名称或将其与旧标签进行比较(可以存储在文件中)3 . 如果满足你的要求 4. 添加标签构建 (##vso[build.addbuildtag]构建标签))
- 创建新的构建定义
- 选中触发器选项卡中的
Continuous integration (CI)
选项并指定分支过滤器 - 添加 PowerShell 步骤以构建定义并指定该 PowerShell 文件
- 创建新的发布定义
- 勾选触发器选项卡中的
Continuous Deployment
选项并指定Set trigger on artifact source
,然后点击Add
添加标签条件
之后,如果有特定的标签添加到构建中,将创建新版本。
关于用PowerShell调用RESTAPI,可以参考:Calling VSTS APIs with PowerShell
尝试在"Branch filters"中指定refs/tags/*。
这在最简单的情况下对我有用——当我推送任何标签时(但在我的例子中只推送到分支的头部提交)——构建被触发
更新:"only to the head commit of the branch" 的问题在我这边。实际上它会触发带有添加到任何提交的标签的构建