如何在TFS 2018构建定义中访问提交相关变量
解决TFS 2018中Slack任务获取提交信息的方法
刚好我之前在TFS 2018里处理过类似的需求,默认构建变量里确实没有直接可用的CommitMessage或ChangesetLink,不过我们可以通过两步操作轻松实现:先提取提交相关信息并设置为自定义变量,再在Slack任务里引用这些变量。
方法一:用PowerShell脚本提取提交消息并生成链接
这是最通用的方案,不管你的构建代理有没有安装TFS命令行工具都能搞定:
在「Post to Slack」任务前添加PowerShell任务
选择「Inline Script」模式,粘贴以下脚本:# 获取TFS内置的变更集ID和基础地址 $changesetId = "$(Build.SourceVersion)" $collectionUri = "$(System.TeamFoundationCollectionUri)" $projectName = "$(System.TeamProject)" # 调用TFS REST API获取变更集详情 $apiUrl = "$collectionUri/$projectName/_apis/tfvc/changesets/$changesetId?api-version=2.0" $changeset = Invoke-RestMethod -Uri $apiUrl -UseDefaultCredentials # 提取提交消息并构建变更集链接 $commitMessage = $changeset.comment $changesetLink = "$collectionUri/$projectName/_versionControl/changeset/$changesetId" # 将值设置为自定义构建变量,供后续Slack任务调用 Write-Host "##vso[task.setvariable variable=CommitMessage;]$commitMessage" Write-Host "##vso[task.setvariable variable=ChangesetLink;]$changesetLink"在Slack任务中引用自定义变量
打开「Post to Slack」的消息编辑框,直接使用刚才定义的变量:本次构建关联提交信息: 提交消息:*$(CommitMessage)* 变更集链接:<$(ChangesetLink)|点击查看变更集详情>这里用了Slack的链接格式,会把链接显示成「点击查看变更集详情」,更符合Slack的阅读习惯。
方法二:简化版(仅需变更集链接时)
如果只需要变更集链接,完全不需要额外脚本,直接用现有变量拼接即可:
变更集链接:<$(System.TeamFoundationCollectionUri)/$(System.TeamProject)/_versionControl/changeset/$(Build.SourceVersion)|查看变更集>
$(Build.SourceVersion)就是TFVC的变更集ID,结合集合地址和项目名就能直接生成有效链接。
额外提示
- 确保构建代理的服务账号拥有访问TFS版本控制的权限,否则调用API或执行相关命令会失败
- 如果你的代码仓库是Git而非TFVC,TFS 2018其实自带
$(Build.SourceVersionMessage)变量可直接获取提交消息,链接可以用$(System.TeamFoundationCollectionUri)/$(System.TeamProject)/_git/$(Build.Repository.Name)/commit/$(Build.SourceVersion)拼接
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

