如何通过服务主体将Azure DevOps仓库复制到Databricks Repos
解决方案:通过Azure DevOps服务主体将工件部署到Databricks /Repos
前提条件
- 服务主体已获得Databricks工作区的Repos管理员或工作区管理员权限
- Azure DevOps CI管道已配置Azure Resource Manager服务连接(自动注入服务主体身份变量,无需明文密钥)
- CI代理已安装Azure CLI和Databricks CLI(可通过管道任务临时安装)
步骤1:通过Azure AD认证配置Databricks CLI
利用服务主体的Azure AD身份获取Databricks访问令牌,无需存储明文密钥:
- 登录Azure CLI(使用服务连接注入的变量):
az login --service-principal -u $(servicePrincipalId) -p $(servicePrincipalKey) --tenant $(tenantId)
- 获取Databricks工作区的Azure AD访问令牌:
DATABRICKS_TOKEN=$(az account get-access-token --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d --query accessToken -o tsv)
(注:2ff814a6-3304-4ab8-85cb-cd0e6f879c1d是Databricks的固定Azure AD资源ID)
3. 配置Databricks CLI指向目标工作区:
echo "$DATABRICKS_TOKEN" | databricks configure --token --host $(databricksWorkspaceUrl)
(databricksWorkspaceUrl为你的Databricks工作区URL,如https://eastus.azuredatabricks.net,可存入管道变量)
步骤2:解压Azure DevOps zip工件
假设工件已下载至$(Pipeline.Workspace)/artifact目录,解压到临时目录:
mkdir -p /tmp/repo-content unzip $(Pipeline.Workspace)/artifact/your-repo.zip -d /tmp/repo-content
步骤3:同步内容到Databricks /Repos目录
使用Databricks CLI的fs cp命令递归上传内容到目标路径(替换为你的实际/Repos目录):
# 若目标目录已存在,可先删除(可选) databricks fs rm --recursive dbfs:/Repos/<团队/用户目录>/<目标仓库名> # 上传解压后的内容 databricks fs cp --recursive /tmp/repo-content dbfs:/Repos/<团队/用户目录>/<目标仓库名>
步骤4:验证部署结果(可选)
添加任务确认文件已成功上传:
databricks fs ls dbfs:/Repos/<团队/用户目录>/<目标仓库名>
内容的提问来源于stack exchange,提问作者Apuntatis
相关产品推荐
相关产品推荐

