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

Azure DevOps Pipeline中PowerShell设置含+号Build Tag失败咨询

Azure DevOps YAML Pipeline中含+号的Build Tag设置问题解决办法

你在PowerShell脚本中通过##vso[build.addbuildtag]$Version添加版本标签0.0.1+时执行失败,报错##[error]Not Found,但手动在GUI中可正常添加该标签。核心原因是+号属于Azure DevOps日志命令的特殊字符,会被自动解析,导致标签内容异常。

解决办法

方案1:对+号进行URL编码

将版本字符串中的+替换为URL编码值%2B,绕过日志命令的字符解析逻辑,脚本修改如下:

$encodedVersion = $Version.Replace("+", "%2B")
Write-Host "Version: $Version"
Write-Host "##vso[build.addbuildtag]$encodedVersion"

执行后,Azure DevOps会自动将编码后的%2B还原为+,最终添加的标签即为0.0.1+。

方案2:调用Azure DevOps REST API添加标签

如果编码方式不生效,可直接调用REST API添加标签,完全避开日志命令的字符限制。示例脚本如下:

$organization = "你的组织名称"
$project = "你的项目名称"
$buildId = $Env:BUILD_BUILDID
$versionTag = $Version

# 使用Pipeline系统提供的访问令牌
$accessToken = $Env:SYSTEM_ACCESSTOKEN

# 构造API请求地址
$apiUrl = "https://dev.azure.com/$organization/$project/_apis/build/builds/$buildId/tags/$versionTag`?api-version=7.1-preview.3"

# 发送PUT请求添加标签
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization = "Bearer $accessToken"} -Method Put -ContentType "application/json"

同时需要在YAML步骤中注入系统令牌权限,示例YAML片段:

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      # 上述REST API脚本内容
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:58:20