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

如何无需PAT通过YAML流水线向ADO仓库推送Git标签

问题确认

你的判断是正确的——构建服务确实未完成仓库的认证。默认情况下,流水线克隆代码时使用临时凭证,但你脚本中直接执行git push时,origin的HTTPS地址未附带有效认证信息,而流水线环境禁用了终端交互,因此触发了密码输入失败的错误。

无需PAT的解决方案

以下是两种适配同组织ADO仓库的原生认证方案,均无需手动管理PAT:

方案1:使用流水线内置System.AccessToken(推荐)

这是ADO流水线原生生成的临时令牌,权限与流水线的构建服务账号完全一致,无需手动创建或轮换,适配所有同组织仓库操作。

操作步骤:

  1. 在流水线编辑页面,点击右上角「...」→「变量」,找到System.AccessToken变量,勾选「允许脚本访问OAuth令牌」(默认隐藏,需展开变量详情查看)。
  2. 修改脚本,在git push前替换origin地址,注入系统令牌:
git config --global user.email "pipeline@example.com"
git config --global user.name "pipeline"
# 替换仓库origin地址,嵌入系统访问令牌
git remote set-url origin https://$(System.AccessToken)@dev.azure.com/org/proj/_git/repo
git tag -a v$(GitVersion.semVer) -m "Alpha" 
git push origin v$(GitVersion.semVer)
  1. 重新运行流水线即可完成标签推送。

方案2:使用托管身份(针对已配置托管身份的场景)

若你坚持使用托管身份,需先为托管身份授予仓库权限,再通过其获取ADO访问令牌完成认证:

操作步骤:

  1. 在ADO组织设置中,将托管身份添加为项目成员,并授予仓库「贡献」「创建标签」权限。
  2. 在流水线脚本中,通过Azure CLI获取托管身份的ADO访问令牌:
# 获取针对ADO资源的托管身份令牌
TOKEN=$(az account get-access-token --resource https://dev.azure.com --query accessToken -o tsv)
  1. 配置git使用该令牌认证:
git config --global user.email "pipeline@example.com"
git config --global user.name "pipeline"
git remote set-url origin https://$TOKEN@dev.azure.com/org/proj/_git/repo
git tag -a v$(GitVersion.semVer) -m "Alpha" 
git push origin v$(GitVersion.semVer)

注意:该方案要求流水线代理已安装Azure CLI,且托管身份已正确配置在代理环境中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:35:19