如果提交消息包含文本,则触发构建

时间:2017-09-13 11:28:12

标签: git azure-devops git-commit azure-pipelines azure-pipelines-build-task

VSTS构建定义是否有办法询问git提交消息,只有在任何提交消息包含预定义文本时才会触发?

或者,如果任何提交消息中不存在预定义文本,那么构建定义中的任务是否可以停止构建?

1 个答案:

答案 0 :(得分:1)

这是一个由两部分组成的问题:

  1. 不,提交消息没有过滤器。
  2. 是的,这样做更容易,但不能保证每次提交都会触发构建,因为可以在组中推送多个提交。当构建正在进行时,服务器端批处理可以批量提交。
  3. 您可以插入一个执行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

    git命令仅适用于Build管道,除非您在发布期间实际克隆了repo,否则该信息在发布管道中不可用。

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

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

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

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