【发布时间】:2019-12-10 15:09:12
【问题描述】:
明确一点:这不是关于 Git 标签的。我说的是可以添加到单个管道构建中的标签。例如,使用日志记录命令 ##vso[build.addbuildtag].
构建管道在其构建中添加了许多标签。例如版本号、构建是否适用于候选版本等...
我的问题是如何根据标记的管道构建在发布管道中获取这些标签。
[编辑]应用的解决方案
我实现的方式是在命令任务中,使用 Bash。唯一的依赖是一个名为“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
【问题讨论】:
-
你检查过自动变量吗?
-
如果你的意思是内置变量,那么是的。
-
@JG801 好几天没有收到您的回复,能否分享一下您对此问题的最新信息?如果您有任何问题,请随时在这里分享。
-
@HughLin-MSFT 我目前在工作中分心。所以,并不是我不想找到答案。 :-)
标签: azure-devops azure-pipelines azure-pipelines-release-pipeline