You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline如何获取构建关联的Git TAG并存入yml变量?

Azure Pipeline 捕获构建关联Git TAG的实现方法

场景1:构建流水线内直接获取

如果你的TAG捕获操作是在构建流水线(Build Pipeline)中执行,且构建是由Git TAG推送触发的,可直接使用内置变量:

  • 内置变量Build.SourceBranch会返回完整的TAG引用路径,格式为refs/tags/[TAG名称]
  • 内置变量Build.SourceBranchName会直接返回TAG的名称,无需额外截取

场景2:发布流水线(Release Pipeline)中获取关联构建的TAG

这是你当前的使用场景,需要调用Azure DevOps REST API实现,步骤如下:

  1. 先配置代理作业权限:在发布流水线的对应代理作业设置中,开启允许脚本访问OAuth令牌选项,后续任务可直接使用内置变量System.AccessToken完成鉴权。
  2. 添加PowerShell任务(Linux环境可替换为Bash任务),插入如下代码:
# 替换为你自己的组织名、项目名
$orgName = "你的组织名称"
$projectName = "你的项目名称"
$buildId = $(RELEASE.ARTIFACTS.MyPipeline_BUILDID)
$apiUrl = "https://dev.azure.com/$orgName/$projectName/_apis/build/builds/$buildId?api-version=7.0"

# 调用API获取构建详情
$response = Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization = "Bearer $(System.AccessToken)"} -Method Get

# 提取TAG名称
$sourceBranch = $response.sourceBranch
if ($sourceBranch -like "refs/tags/*") {
    $gitTag = $sourceBranch.Replace("refs/tags/", "")
} else {
    $gitTag = "无关联TAG"
}

# 设置为流水线全局变量,后续所有任务都可以调用$(GitTag)
Write-Host "##vso[task.setvariable variable=GitTag;]$gitTag"
  1. 后续任务中直接使用$(GitTag)即可进行字符串拼接等操作。

注意:如果关联的构建不是由TAG触发的,sourceBranch会返回对应分支路径(如refs/heads/main),可根据你的业务需求调整上述判断逻辑。

内容的提问来源于stack exchange,提问作者Leonardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:06:00