拜托,我需要你的帮助...我现在正在努力获取工作代码,以便使用以下命令在 Databricks CLI 中签出 Azure Devops repos git 分支:“databricks repos update 等等...”这与个人 Databricks PAT(在 DevOps CI 管道中)配合得很好,但我想将其更改为 1) 2) 服务原则的短暂令牌。
我在自托管的 Ubuntu VM 上使用 Azure CLI 和 Databricks CLI(均为最新版本)。 我指的是这个文档:https://learn.microsoft.com/en-us/azure/databricks/dev-tools/ci-cd/use-ms-entra-sp-with-devops。
这是我到目前为止所拥有的:
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_databricks="2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" #Databricks
oauth_databrick_secret="<oauth secret for $sp_name in Databricks>"
az login --allow-no-subscriptions --service-principal -u $sp_id -p $sp_secret --tenant $tenant_id
access_token=$(az account get-access-token --query accessToken -o tsv --resource $resource_id_databricks)
export DATABRICKS_HOST="https://adb-xxxxxxxxxx.xx.azuredatabricks.net/"
export DATABRICKS_CLIENT_ID=$sp_id
export DATABRICKS_CLIENT_SECRET=$oauthDatabrickSecret
databricks git-credentials create azureDevOpsServices --personal-access-token $access_token --git-username $sp_name
databricks repos update xxxxx
$sp_name 在组织中拥有基本的 DevOps 许可证,并且是该项目的贡献者组的成员。 $sp_secret 是当前的。 $sp_name 在 Databricks ($oauth_databrick_secret) 中有一个 OAuth 机密,并且在工作区中是管理员。我没有创建 .databrickscfg 文件,而是按照此文档使用环境变量:https://learn.microsoft.com/en-us/azure/databricks/dev-tools/auth/oauth-m2m#environment .
创建 git-credentials 时遇到的错误是:
Error: accepts 1 arg(s), received 3
Usage:
databricks git-credentials create GIT_PROVIDER [flags]
Flags:
--git-username string The username or email provided with your Git provider account, depending on which provider you are using.
-h, --help help for create
--json JSON either inline JSON string or @path/to/file.json with request body (default JSON (0 bytes))
--personal-access-token string The personal access token used to authenticate to the corresponding Git provider.
我在这里缺少什么?
我找到了解决方案:创建凭证时不应使用服务原则的名称,而应使用应用程序 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_databricks="2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" #Databricks
oauth_databrick_secret="<oauth secret for $sp_name in Databricks>"
az login --allow-no-subscriptions --service-principal -u $sp_id -p $sp_secret --tenant $tenant_id
access_token=$(az account get-access-token --query accessToken -o tsv --resource $resource_id_databricks)
export DATABRICKS_HOST="https://adb-xxxxxxxxxx.xx.azuredatabricks.net/"
export DATABRICKS_CLIENT_ID=$sp_id
export DATABRICKS_CLIENT_SECRET=$oauthDatabrickSecret
databricks git-credentials create azureDevOpsServices --personal-access-token $access_token --git-username $sp_id
databricks repos update /Repos/your/path_to_repo --branch feature_branch_name