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

如何在Azure DevOps部署时将Databricks Job的YAML键设为变量或复制作业

实现Databricks作业的动态名称复制(Azure DevOps + DAB)

首先修正你提供的YAML缩进错误(否则DAB会解析失败):

# resource yaml file
resources:
  jobs:
    my-test-bundle_job:
      name: test-bundle_job
      tasks:
        - task_key: notebook_task
          job_cluster_key: job_cluster
          notebook_task:
            notebook_path: ../src/simple_notebook.ipynb
      job_clusters:
        - job_cluster_key: job_cluster
          new_cluster:
            node_type_id: i3.xlarge
            spark_version: 13.3.x-scala2.12

方法一:用DAB变量动态生成作业ID和名称

DAB原生支持变量替换YAML中的占位符,你可以把作业的唯一键(my-test-bundle_job)和显示名称都设为变量,部署时传入不同值即可快速复制作业。

步骤1:将YAML改为模板形式

把作业ID和名称替换为变量占位符:

# resource yaml file
resources:
  jobs:
    ${var.job_id}:
      name: ${var.job_name}
      tasks:
        - task_key: notebook_task
          job_cluster_key: job_cluster
          notebook_task:
            notebook_path: ../src/simple_notebook.ipynb
      job_clusters:
        - job_cluster_key: job_cluster
          new_cluster:
            node_type_id: i3.xlarge
            spark_version: 13.3.x-scala2.12

步骤2:设置默认变量(可选)

在bundle.yml中定义变量默认值,避免部署时未传参出错:

variables:
  job_id: "my-test-bundle_job"
  job_name: "test-bundle_job"

步骤3:Azure DevOps部署时传入自定义变量

在Azure DevOps Pipeline的任务中,执行DAB部署命令时通过--var参数传入新的作业ID和名称:

databricks bundle deploy --var job_id="new-test-job-1" --var job_name="New Test Job 1"

如果需要批量复制多个作业,可在Pipeline中用循环或矩阵策略,每次传入不同的job_id和job_name。

方法二:Azure DevOps流水线中复制YAML并替换变量

如果不想依赖DAB的变量系统,也可以通过脚本复制原YAML文件,替换作业ID和名称后再部署。

示例Bash脚本任务

在Azure DevOps Pipeline中添加Bash任务,完成复制和替换:

# 复制原YAML到新文件
cp resources.yml new-job-resources.yml

# 替换作业ID和显示名称
sed -i 's/my-test-bundle_job/new-test-job-2/g' new-job-resources.yml
sed -i 's/test-bundle_job/New Test Job 2/g' new-job-resources.yml

# 部署新作业
databricks bundle deploy --file new-job-resources.yml

示例PowerShell脚本任务

如果使用Windows代理,用PowerShell实现:

# 复制原YAML文件
Copy-Item resources.yml -Destination new-job-resources.yml

# 替换作业ID和名称
(Get-Content new-job-resources.yml) -replace 'my-test-bundle_job', 'new-test-job-2' -replace 'test-bundle_job', 'New Test Job 2' | Set-Content new-job-resources.yml

# 执行部署
databricks bundle deploy --file new-job-resources.yml

注意事项

  • 作业ID(YAML中的键)是Databricks的唯一标识符,不能重复;显示名称可重复,但建议保持唯一方便管理。
  • 确保Azure DevOps代理已安装databricks-cli并完成认证(比如通过服务连接或环境变量配置)。
  • 批量部署时,推荐用Azure DevOps的矩阵策略(Matrix Strategy)并行部署多个作业实例,提升效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:45:12