如何在构建定义中访问与TFS提交相关的变量

时间:2018-05-09 19:09:16

标签: tfs tfs2018

我正在使用" Post to Slack"任务作为我在TFS 2018中的构建步骤之一,我想知道如何访问与该提交相关的变量。我想将它们作为Message字段的一部分(类似于#34; Commit:$(CommitMessage)链接到changeset $(ChangesetLink)"但这些变量不存在)。这是我需要在TFS中引用变量的地方:

enter image description here

本文档:link描述了如何访问构建变量,但它没有提及与提交相关的任何内容。我想访问提交消息,关联的提交更改集以及与提交相关联的更改集的链接。有谁知道如何做到这一点或知道我在哪里可以找到它的文档?谢谢

1 个答案:

答案 0 :(得分:1)

Cruiser是对的,在TFS中没有这样的Predefined variables,您可以通过REST API检索所需的信息,然后使用Logging Commands设置相应的变量。

  1. 创建PowerShell脚本以设置可变量(参考下文 示例,您也可以Use the OAuth token to access the REST API),然后提交并将脚本推送到TFS。
  2. 添加PowerShell任务之前" Post to Slack"你的任务 运行PS脚本的定义
  3. 使用变量$(commitID)$(CommitMessage)$(commitUrl)" Post to Slack"任务
  4. 注意对于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

    enter image description here