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

如何向Databricks Asset Bundles的databricks.yml传递环境参数?

如何通过Azure DevOps流水线向Databricks资产包传递环境差异化参数

核心思路

不用在databricks.yml里硬编码所有环境的变量值,而是用占位符+流水线参数/环境变量的方式动态注入,实现不同环境的配置差异化。


步骤1:在databricks.yml中配置变量占位符

把需要动态调整的字段(比如quartz_cron_expression)替换为bundle变量引用,格式是${var.变量名}:

tasks:
  your_scheduled_task:
    job_clusters:
      - job_cluster_key: default_cluster
        new_cluster:
          # 你的集群配置...
    schedule:
      quartz_cron_expression: "${var.cron_expression}"
      timezone_id: "UTC"

这里的cron_expression就是我们要从流水线传递的变量名。

步骤2:在Azure DevOps流水线中传递参数

直接在流水线部署步骤里,通过前缀为DATABRICKS_BUNDLE_VAR_的环境变量把流水线参数传给Databricks bundle命令:

parameters:
- name: environment
  type: string
  values:
  - dev
  - prod
- name: cronExpression
  type: string
  default: "0 0 * * * ?" # Dev环境默认每天跑一次

steps:
- task: Bash@3
  displayName: 部署Databricks资产包
  env:
    # 先配置Databricks连接信息
    DATABRICKS_HOST: $(databricksHost)
    DATABRICKS_TOKEN: $(databricksToken)
    # 把流水线的cronExpression参数传给bundle变量cron_expression
    DATABRICKS_BUNDLE_VAR_cron_expression: ${{ parameters.cronExpression }}
  script: |
    databricks bundle deploy --environment ${{ parameters.environment }}

步骤3:自动根据环境设置参数(可选)

如果不想每次手动指定cron值,让流水线根据环境自动切换:

steps:
- task: Bash@3
  displayName: 自动设置Cron表达式
  name: setCron
  script: |
    if [ "${{ parameters.environment }}" = "prod" ]; then
      # Prod环境每2小时跑一次
      echo "##vso[task.setvariable variable=cronExpression]0 */2 * * * ?"
    else
      # 非Prod环境每天跑一次
      echo "##vso[task.setvariable variable=cronExpression]0 0 * * * ?"
    fi

- task: Bash@3
  displayName: 部署Databricks资产包
  env:
    DATABRICKS_HOST: $(databricksHost)
    DATABRICKS_TOKEN: $(databricksToken)
    DATABRICKS_BUNDLE_VAR_cron_expression: $(cronExpression)
  script: |
    databricks bundle deploy --environment ${{ parameters.environment }}

关于自定义变量的补充说明

Databricks资产包的自定义变量支持三种设置方式:

  • 在databricks.yml的vars块里定义默认值;
  • 通过命令行--var key=value直接传递;
  • 通过DATABRICKS_BUNDLE_VAR_前缀的环境变量传递(变量名用下划线替代连字符,比如cron-expression对应DATABRICKS_BUNDLE_VAR_cron_expression)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:11:28