2017-09-13 97 views
2

VSTS构建定义是否有任何方式来询问git提交消息,并且只有在任何提交消息包含预定义文本时才触发?如果提交消息包含文本,则触发构建

另外,如果预定义文本不存在于任何提交消息中,是否有可能在构建定义中有一个任务来停止构建?

+0

您是否用jessehouwing的解决方案解决了这个问题? –

+0

是的,我只是将它标记为答案 – Slicc

回答

1

这是一个问题两个部分:

  1. 没有,对提交信息不过滤。
  2. 是的,这样做比较容易,但不能保证每次提交都会触发构建,因为可以按组推送多个提交。当构建正在进行时,服务器端批处理可能会批量提交。

您可以插入一个小脚本执行git log -1 --pretty=%B并检查输出;然后使用特殊的日志记录格式来使构建失败。例如,在PowerShell中会记录错误和失败的构建:

Write-Host "##vso[task.logissue type=error;]Build token missing, aborting." 
Write-Host "##vso[task.complete result=Failed;]Cancelled" 

有关特殊命令的详细信息,请参阅:https://github.com/Microsoft/vsts-tasks/blob/master/docs/authoring/commands.md

的混帐命令只工作在构建流水线,信息除非您在发布期间实际克隆回购,否则不在发布管道中提供。

您可以将构建版本设置为包含某种类型的后缀作为构建的一部分,然后在发布管道中使用该信息。相同的魔法命令包括一个设置Build.BuildNumber:

Write-Host "##vso[build.updatebuildnumber]1.1.7-Release" 

然后在您的发布管道中,检查版本号。

或者在构建定义中使用Trigger a Release任务,并根据您已经创建的PowerShell的输出使其执行条件有效。

相关问题