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

如何在Azure DevOps发布管道中通过Bash脚本获取源与目标分支名?

Azure DevOps发布管道中通过Bash获取源/目标分支名称

在Azure DevOps的发布管道中,构建管道常用的System.PullRequest.*、Build.SourceBranch等变量并不直接生效,需要根据发布的触发方式选择对应的变量和方法:

情况1:由拉取请求(PR)触发的发布

当发布由PR触发时,直接使用Release Pipelines专有的PR变量:

  • Release.PullRequest.SourceBranch:源分支完整路径(格式如refs/heads/feature/test)
  • Release.PullRequest.TargetBranch:目标分支完整路径(格式如refs/heads/main)

若仅需要分支名称(去掉refs/heads/前缀),可通过Bash字符串处理提取:

# 提取源分支名
SOURCE_BRANCH_NAME=$(echo "$RELEASE_PULLREQUEST_SOURCEBRANCH" | sed 's/refs\/heads\///')
# 提取目标分支名
TARGET_BRANCH_NAME=$(echo "$RELEASE_PULLREQUEST_TARGETBRANCH" | sed 's/refs\/heads\///')

echo "源分支名: $SOURCE_BRANCH_NAME"
echo "目标分支名: $TARGET_BRANCH_NAME"

情况2:由分支推送触发的发布(关联构建工件)

如果发布是由分支推送后触发的构建所关联的,需要通过发布管道中的工件变量获取分支信息:

  • RELEASE_ARTIFACTS_<ArtifactName>_SOURCEBRANCH:关联构建的源分支完整路径
  • RELEASE_ARTIFACTS_<ArtifactName>_SOURCEBRANCHNAME:关联构建的源分支名称

注意将<ArtifactName>替换为你发布管道中实际的工件名称(需大写,空格替换为下划线),例如工件名为MyBuildArtifact,则变量为RELEASE_ARTIFACTS_MYBUILDARTIFACT_SOURCEBRANCHNAME。

示例Bash脚本:

# 替换为你的工件名称
ARTIFACT_NAME="MyBuildArtifact"
SOURCE_BRANCH_NAME="${!RELEASE_ARTIFACTS_${ARTIFACT_NAME^^}_SOURCEBRANCHNAME}"

echo "源分支名: $SOURCE_BRANCH_NAME"

验证可用变量

若不确定哪些变量存在,可在Bash任务中打印所有相关变量排查:

printenv | grep -E "(RELEASE_|BUILD_)"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:50:03