如何使用Azure管道将TFVC标签与最新源代码进行比较

时间:2019-05-06 06:18:40

标签: azure-devops azure-pipelines azure-pipelines-release-pipeline tfvc

我正在尝试比较标签和最新来源之间的更改,并为我的部署获取差异文件。有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Rest API获取标签项和版本,并获取最新的源更改集,然后进行比较。

一个小型PowerShell脚本的示例:(在管道中添加一个PowerShell任务)

$azureDevopsUrl = "https://dev.azure.com/{organization}"
$user = ""
$pat = "YOUR-PAT-HERE"  
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

#Get Label Id:
$myLabel = "test"
$url = "$azureDevopsUrl/{project}/_apis/tfvc/labels?api-version=4.0"
$labels = (Invoke-RestMethod -Uri $url -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -ContentType application/json).value
$label = $labels.Where({ $_.name -eq $myLabel })

#Get Label Details:
$labelUrl = "$azureDevopsUrl/_apis/tfvc/labels/$($label.id)/items?api-version=4.0"
$labelDetails = (Invoke-RestMethod -Uri $labelUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -ContentType application/json).value

#Get Changeset Details:
$latestSourceChangeset = $env:Build_SourceVersion
$changeSetUrl = "$azureDevopsUrl/_apis/tfvc/changesets/$latestSourceVersion/changes?api-version=4.0"
$cahngeset = (Invoke-RestMethod -Uri $changeSetUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -ContentType application/json).value

# Now compare the versions and get the files you want

有一个特殊的变量来获取最新的源:$(Build.SourceVersion),所以我在{changeset-id}的脚本中使用了它,如果您不在管道中运行脚本,请替换它的特定变更集ID。< / p>

对Rest API的引用:LabelsLabelChangeset