明确说明:这不是关于Git标签的不是。我说的是可以添加到各个管道构建中的标签。例如,使用记录命令 ## vso [build.addbuildtag] 。
构建管道将许多标签添加到其构建中。例如版本号,版本是否用于候选版本等等。
我的问题是如何根据标记管道的构建在发布管道中获取这些标记。
[EDIT]应用了解决方案
我的实现方式是使用Bash在Command任务中。唯一的依赖项是一个名为“ myvars.pat”的(秘密)变量。这是为此特定情况创建的个人访问令牌。我使用了一个变量组来与不同的发布管道共享令牌。
# Construct the url based on the environment
ORG=$(basename $(System.CollectionUri))
URL=https://dev.azure.com/$ORG/$(Build.ProjectName)/_apis/build/builds/$(Build.BuildId)/tags?api-version=5.1
# Base64 the PAT token. Mind the ':' prefix !
PAT=$(echo -n ":$(myvars.pat)" | base64)
# Make the GET request. "-L" is needed to follow redirects.
curl -L -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Basic $PAT" -s -o ./tags.json $URL
# Using default tools to extract the array. No doubt there is a cleaner way.
tags=$(cat ./tags.json | cut -d "[" -f 2 | cut -d "]" -f 1 | tr -d '"' | tr ',' ' ')
# There are the tags
for tag in $tags; do
echo $tag
done
# Set them as a variable to be used by the subsequent tasks
echo "##vso[task.setvariable variable=Build.Tags;]$tags"
# Clean up
rm ./tags.json
答案 0 :(得分:0)
我如何基于已标记的内容在发布管道中获取这些标记 管道构建
对于此问题,您可以使用Tags - Get Build Tags rest api来实现。您可以将Powershell任务添加到发布管道,然后通过脚本调用此rest api以在发布中输出构建标签。
GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/tags?api-version=5.1
示例脚本:
$personalAccessToken="{yourPAT}"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($personalAccessToken)"))
$header = @{Authorization=("Basic {0}" -f $token)}
$Url = "https://dev.azure.com/{org}/{pro}/_apis/build/builds/{buildId}/tags?api-version=5.1"
$tags = Invoke-RestMethod -Uri $Url -Method Get -Headers $header
Write-Host "Tags = $($tags.value| ConvertTo-Json -Depth 1)"
获得发布: