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

使用服务主体在Databricks CLI签出Azure DevOps分支报错求助

问题分析与修复方案

1. 变量拼写错误导致Databricks CLI认证异常

脚本中定义的变量为oauth_databrick_secret,但export时误用了$oauthDatabrickSecret(大小写不统一),导致DATABRICKS_CLIENT_SECRET环境变量为空,直接影响Databricks CLI的服务主体认证,进而可能引发命令参数解析错误。

修复:统一变量名大小写:

oauth_databrick_secret="<oauth secret for $sp_name in Databricks>"
# ...
export DATABRICKS_CLIENT_SECRET=$oauth_databrick_secret

2. 核心错误:令牌用途完全不匹配

你当前获取的是Databricks资源的访问令牌,但databricks git-credentials create需要的是Azure DevOps Git仓库的访问令牌,两者归属不同资源,无法混用。

服务主体访问Azure DevOps Git仓库,需获取针对Azure DevOps资源的令牌(资源ID为499b84ac-1321-427f-aa17-267ca6975798),而非Databricks的资源ID。

修复:替换令牌获取命令:

# 获取Azure DevOps的访问令牌,而非Databricks的
resource_id_azure_devops="499b84ac-1321-427f-aa17-267ca6975798"
access_token=$(az account get-access-token --query accessToken -o tsv --resource $resource_id_azure_devops)

3. Git用户名的正确设置

Azure DevOps中,服务主体的Git用户名需使用其客户端ID($sp_id),而非服务主体名称——服务主体在Azure DevOps中的身份标识是client ID,而非显示名称。

修复:调整--git-username参数值:

databricks git-credentials create azureDevOpsServices --personal-access-token $access_token --git-username $sp_id

完整修正后的脚本

sp_name="<name of the Azure App registration>"
sp_id="<the app id (client id) of $sp_name>"
sp_secret="<the secret of the app id of $sp_name>"
tenant_id="<tenant id>"
resource_id_azure_devops="499b84ac-1321-427f-aa17-267ca6975798" # Azure DevOps
oauth_databrick_secret="<oauth secret for $sp_name in Databricks>"

# 服务主体登录Azure
az login --allow-no-subscriptions --service-principal -u $sp_id -p $sp_secret --tenant $tenant_id

# 获取Azure DevOps访问令牌
access_token=$(az account get-access-token --query accessToken -o tsv --resource $resource_id_azure_devops)

# 配置Databricks CLI服务主体认证环境变量
export DATABRICKS_HOST="https://adb-xxxxxxxxxx.xx.azuredatabricks.net/"
export DATABRICKS_CLIENT_ID=$sp_id
export DATABRICKS_CLIENT_SECRET=$oauth_databrick_secret

# 创建Git凭据(使用Azure DevOps令牌和服务主体client ID作为用户名)
databricks git-credentials create azureDevOpsServices --personal-access-token $access_token --git-username $sp_id

# 更新Databricks仓库
databricks repos update xxxxx

关于关联账户截图的说明

如果截图显示的是Databricks工作区中服务主体的OAuth配置状态,只要确认已正确添加对应OAuth密钥(即脚本中oauth_databrick_secret的值),该配置就无问题,和当前命令错误无直接关联。若OAuth配置有误,会先在Databricks CLI认证阶段报错,而非Git凭据创建阶段的参数错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:53:10