如何在Azure DevOps发布名称中捕获Git任务分支名称?
解决方案:从合并提交信息中提取来源分支名
因为你是在PR合并到develop后触发流水线构建,此时System.PullRequest.*变量仅在PR验证阶段生效,合并后的常规构建无法获取这些值;而Build.SourceBranch指向develop是正常行为。要获取带任务编号的原分支名,可通过提取PR合并提交的信息来实现,具体步骤如下:
1. 在流水线中添加脚本任务提取分支名
在流水线的发布名称设置步骤之前,添加一个脚本任务(PowerShell或Bash均可),通过Git命令解析合并提交的信息,提取原分支名并设置为流水线变量:
Bash脚本示例
# 从合并提交信息中提取来源分支名(GitHub PR合并提交默认格式为"Merge pull request #XXX from <仓库>/<分支名>") BRANCH_NAME=$(git log --format=%s -n 1 | grep -oP 'from \K[^ ]+') # 处理非PR合并的情况(直接推送到develop的提交) if [ -z "$BRANCH_NAME" ]; then BRANCH_NAME="develop" fi # 设置为流水线输出变量,供后续步骤使用 echo "##vso[task.setvariable variable=SourceTaskBranch;isOutput=true]$BRANCH_NAME"
PowerShell脚本示例
# 获取最新提交信息 $commitMessage = git log --format=%s -n 1 # 匹配提取来源分支名 $matchResult = $commitMessage | Select-String 'from (\S+)' if ($matchResult.Success) { $branchName = $matchResult.Matches.Groups[1].Value } else { # 非PR合并提交时默认使用develop $branchName = "develop" } # 设置为流水线输出变量 Write-Host "##vso[task.setvariable variable=SourceTaskBranch;isOutput=true]$branchName"
2. 在发布名称中引用自定义变量
将发布名称设置为包含自定义变量的格式,例如:
Release-$(SourceTaskBranch)-$(Build.BuildId)
这样就能自动获取到带任务编号的原分支名,无需手动添加提交备注。
内容的提问来源于stack exchange,提问作者Eric Swiggum
相关产品推荐
相关产品推荐

