我正在使用" Post to Slack"任务作为我在TFS 2018中的构建步骤之一,我想知道如何访问与该提交相关的变量。我想将它们作为Message字段的一部分(类似于#34; Commit:$(CommitMessage)链接到changeset $(ChangesetLink)"但这些变量不存在)。这是我需要在TFS中引用变量的地方:
本文档:link描述了如何访问构建变量,但它没有提及与提交相关的任何内容。我想访问提交消息,关联的提交更改集以及与提交相关联的更改集的链接。有谁知道如何做到这一点或知道我在哪里可以找到它的文档?谢谢
答案 0 :(得分:1)
Cruiser是对的,在TFS中没有这样的Predefined variables,您可以通过REST API检索所需的信息,然后使用Logging Commands设置相应的变量。
PowerShell
任务之前" Post to Slack
"你的任务
运行PS脚本的定义$(commitID)
,$(CommitMessage)
和
$(commitUrl)
" Post to Slack
"任务注意:对于Git它的提交,对于TFVC,changeset
您可以使用以下脚本设置变量:
Param(
[string]$collectionurl = "http://server:8080/tfs/DefaultCollection",
[string]$repoid = "389e8215-1fb2-4fdc-bd04-ebc8a8a4410e",
[string]$user = "username",
[string]$token = "password"
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$searchCriteria = "$" + "top=1"
$baseUrl = "$collectionurl/_apis/git/repositories/$repoid/commits?$searchCriteria"
$response = (Invoke-RestMethod -Uri $baseUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
#Retrieve values
$commitID = $response.value.commitID
$CommitMessage = $response.value.comment
$commitUrl = $response.value.remoteUrl
#Set variables
Write-Host "##vso[task.setvariable variable=commitID]$commitID"
Write-Host "##vso[task.setvariable variable=CommitMessage]$CommitMessage"
Write-Host "##vso[task.setvariable variable=commitUrl]$commitUrl"
<强>更新强>
您可以使用此REST API获取存储库ID:
GET http://server:8080/tfs/DefaultCollection/{ProjectName}/_apis/git/repositories