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

Azure Pipeline YAML中通过Bash按分支条件设置构建版本问题

Azure Pipeline 构建名称设置解决方案

问题原因

你原脚本的错误在于混用了PowerShell语法和Bash语法,并且变量引用格式错误:

  • Bash中无法解析$(Build.SourceBranchName):+-$(Build.SourceBranchName)这种嵌套变量写法,触发「command not found」错误。
  • 直接拼接分支名时,若分支名含特殊字符,会违反Azure Pipeline构建号的格式规则,导致构建终止。

正确实现方法

方法1:使用Bash脚本(适配Windows虚拟机)

Bash中Azure Pipeline变量以大写下划线形式存在,通过分支判断实现格式控制:

name: $(Rev:r)

trigger:
- main
- '*' # 触发所有分支的构建

pool:
  vmImage: windows-2019
steps:
- bash: |
    # 判断分支是否为main,非main分支拼接分支名
    if [ "$BUILD_SOURCEBRANCHNAME" != "main" ]; then
      echo "##vso[build.updatebuildnumber]${BUILD_BUILDNUMBER}-${BUILD_SOURCEBRANCHNAME}"
    else
      echo "##vso[build.updatebuildnumber]${BUILD_BUILDNUMBER}"
    fi

方法2:使用PowerShell脚本(更适配Windows环境)

PowerShell通过环境变量引用Pipeline参数,写法更直观:

name: $(Rev:r)

trigger:
- main
- '*'

pool:
  vmImage: windows-2019
steps:
- powershell: |
    if ($env:BUILD_SOURCEBRANCHNAME -ne 'main') {
      Write-Host "##vso[build.updatebuildnumber]$($env:BUILD_BUILDNUMBER)-$($env:BUILD_SOURCEBRANCHNAME)"
    } else {
      Write-Host "##vso[build.updatebuildnumber]$($env:BUILD_BUILDNUMBER)"
    }

额外注意事项

若分支名包含/、空格等特殊字符,需先做替换处理(比如把/换成-),避免违反Azure Pipeline构建号的格式规则:
示例(Bash中添加替换):

BRANCH_NAME=$(echo "$BUILD_SOURCEBRANCHNAME" | tr '/' '-')
echo "##vso[build.updatebuildnumber]${BUILD_BUILDNUMBER}-${BRANCH_NAME}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:20:11