如果提交消息包含文本,则触发构建
Trigger build if commit messages contain text
VSTS 构建定义是否有任何方法可以查询 git 提交消息并且仅在任何提交消息包含预定义文本时触发?
或者,如果预定义的文本不存在于任何提交消息中,构建定义中是否可以有一个任务将停止构建?
这是一个由两部分组成的问题:
- 不,提交消息没有过滤器。
- 是的,这更容易做到,但不能保证每次提交都会触发构建,因为可以按组推送多个提交。并且服务器端批处理可能会在构建过程中批量提交。
您可以插入一个小脚本来执行 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.BuildNumber:
Write-Host "##vso[build.updatebuildnumber]1.1.7-Release"
然后在您的发布管道中,检查版本号。
或者在您的构建定义中使用 Trigger a Release 任务,并根据您已经创建的 PowerShell 的输出使其执行有条件。
VSTS 构建定义是否有任何方法可以查询 git 提交消息并且仅在任何提交消息包含预定义文本时触发?
或者,如果预定义的文本不存在于任何提交消息中,构建定义中是否可以有一个任务将停止构建?
这是一个由两部分组成的问题:
- 不,提交消息没有过滤器。
- 是的,这更容易做到,但不能保证每次提交都会触发构建,因为可以按组推送多个提交。并且服务器端批处理可能会在构建过程中批量提交。
您可以插入一个小脚本来执行 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.BuildNumber:
Write-Host "##vso[build.updatebuildnumber]1.1.7-Release"
然后在您的发布管道中,检查版本号。
或者在您的构建定义中使用 Trigger a Release 任务,并根据您已经创建的 PowerShell 的输出使其执行有条件。