【问题标题】:Trigger build if commit messages contain text如果提交消息包含文本,则触发构建
【发布时间】:2017-09-13 11:28:11
【问题描述】:

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

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

【问题讨论】:

  • 你用 jessehouwing 的解决方案解决了这个问题吗?
  • 是的,我刚刚将其标记为答案

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


【解决方案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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-27
    • 2020-04-23
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    相关资源
    最近更新 更多