如何在构建成功后自动创建Azure DevOps Build Pipeline TAG(非GIT TAG)
解决方案
前置准备
首先需要给构建服务账号配置对应仓库的操作权限,避免权限不足导致操作失败:
- 进入对应代码仓库的「安全性」设置页
- 找到名称格式为「[项目名称] Build Service ([组织名称])」的服务账号
- 给该账号授予「创建标签」「贡献」权限后保存配置
YAML配置步骤
以下配置完全基于Azure DevOps原生能力实现,无需任何第三方插件,适配你使用的Dev18.M170.1版本,直接添加到现有流水线YAML末尾即可:
Windows代理(PowerShell版本)
steps: # 你原有的所有构建步骤保持不变,在末尾新增以下步骤 # ... - task: PowerShell@2 displayName: '同步Git TAG到构建记录' condition: succeeded() # 仅构建成功时执行该步骤 inputs: targetType: 'inline' script: | # 提取触发当前构建的原始TAG名称 $sourceBranch = "$(Build.SourceBranch)" if ($sourceBranch.StartsWith("refs/tags/")) { $tagName = $sourceBranch.Replace("refs/tags/", "") Write-Host "检测到触发TAG:$tagName" # 调用Azure DevOps原生日志命令给当前构建打标签 Write-Host "##vso[build.addbuildtag]$tagName" Write-Host "构建标签添加成功" } else { Write-Host "当前构建非TAG触发,跳过打标签步骤" }
Linux/macOS代理(Bash版本)
steps: # 你原有的所有构建步骤保持不变,在末尾新增以下步骤 # ... - task: Bash@3 displayName: '同步Git TAG到构建记录' condition: succeeded() inputs: targetType: 'inline' script: | SOURCE_BRANCH="$(Build.SourceBranch)" if [[ $SOURCE_BRANCH == refs/tags/* ]]; then TAG_NAME=${SOURCE_BRANCH#refs/tags/} echo "检测到触发TAG:$TAG_NAME" echo "##vso[build.addbuildtag]$TAG_NAME" echo "构建标签添加成功" else echo "当前构建非TAG触发,跳过打标签步骤" fi
验证配置
- 提交修改后的YAML到代码仓库
- 手动创建一个RC开头的TAG(例如RC2)触发构建
- 构建成功后进入构建详情页,查看「标签」区域可确认对应RC标签已经自动添加
- 在Release Pipeline中配置触发过滤条件为
Build tag matches RC*即可正常筛选符合要求的构建版本
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

