本文介绍 Databricks 资产捆绑包部署模式的语法。 捆绑包支持以编程方式管理 Azure Databricks 工作流。 请参阅什么是 Databricks 资产捆绑包?
在 CI/CD 工作流中,开发人员通常在不同的阶段或 模式中编写代码、测试、部署和运行解决方案。 例如,最简单的模式集包括用于预生产验证的开发模式,然后是用于已验证可交付结果的生产模式。 Databricks 资产捆绑包提供一套可选的默认行为,对应各模式。 若要对特定目标使用这些行为,请在 mode 配置映射中为目标设置 presets 或配置 targets。 有关 targets 的信息,请参阅捆绑配置目标映射。
开发模式
若要在开发模式下部署捆绑包,必须先将 mode 映射(设置为 development)添加到预期目标。 例如,此名为 dev 的目标被视为开发目标:
targets:
  dev:
    mode: development
通过运行 databricks bundle deploy -t <target-name> 命令在开发模式下部署目标可实现以下行为,可以使用预设自定义这些行为:
- 在所有未作为文件或笔记本部署的资源前追加前缀 [dev ${workspace.current_user.short_name}],并为每个已部署的作业和管道添加devAzure Databricks 标记。
- 将所有相关已部署的 Lakeflow 声明性管道标记为 development: true。
- 允许在对 --compute-id <cluster-id>命令的相关调用中使用bundle deploy,这将替代相关捆绑包配置文件中已指定的所有现有群集定义。 可以在此处将--compute-id <cluster-id>映射(或作为bundle deploy映射的子映射)设置为要使用的群集 ID,而不是在对compute_id命令的相关调用中使用bundle。
- 暂停已部署资源(如作业或质量监控器)上的所有计划和触发器。 通过将 schedule.pause_status设置为UNPAUSED来取消暂停单个作业的计划和触发器。
- 对所有已部署的作业启用并发运行,以加快迭代速度。 通过将 max_concurrent_runs设置为1来禁用单个作业的并发运行。
- 禁用部署锁以加快迭代速度。 此锁可防止在开发模式下不太可能发生的部署冲突。 通过将 bundle.deployment.lock.enabled设置为true来重新启用锁。
生产模式
若要在生产模式下部署捆绑包,必须先将 mode 映射(设置为 production)添加到预期目标。 例如,此名为 prod 的目标被视为生产目标:
targets:
  prod:
    mode: production
通过运行 databricks bundle deploy -t <target-name> 命令在生产模式下部署目标可实现以下行为:
- 验证所有相关的 Lakeflow 声明性管道是否已标记为 - development: false。
- 验证当前 Git 分支等于目标中指定的 Git 分支。 可以选择在目标中指定 Git 分支,这一操作可以通过其他 - git属性来完成,如下所示:- git: branch: main- 通过在部署时指定 - --force,可以覆盖此验证。
- Databricks 建议使用服务主体进行生产部署。 可以通过将 - run_as设置为服务主体来强制执行此操作。 请参阅 服务主体 并 指定 Databricks 资产捆绑包工作流的运行标识。 如果不使用服务主体,请注意以下附加行为:- 验证 artifact_path、file_path、root_path或state_path映射未重写给特定用户。
- 验证已指定的 run_as和permissions映射,以澄清哪些身份具有特定的部署权限。
 
- 验证 
- 与前面将 - mode映射设置为- development的行为不同,如果将- mode映射设置为- production,则无法通过某种方式(例如使用- --compute-id <cluster-id>选项或- compute_id映射)替代相关捆绑包配置文件中指定的任何现有群集定义。
自定义预设
Databricks 资产捆绑包支持目标的可配置预设,以便自定义目标的行为。 下表列出了可用的预设:
注意
除非下表中有特别指明的例外情况,否则如果同时设置了mode和presets,预设会覆盖默认模式的行为,同时各个资源的设置会覆盖预设。 例如,如果作业的 max_concurrent_runs 值为 10,但 jobs_max_concurrent_runs 预设设置为 20,则作业的最大并发运行将为 10。
| 预设 | 说明 | 
|---|---|
| artifacts_dynamic_version | 在部署过程中是否动态更新 whl项目的版本。 有效值为true或false。 如果指定了顶级 artifacts.dynamic_version 配置设置,则会替代此预设。 | 
| jobs_max_concurrent_runs | 作业允许的最大并发运行数。 | 
| name_prefix | 要追加到资源名称前面的前缀字符串。 | 
| pipelines_development | 管道是否处于开发模式。 有效值为 true或false。 | 
| source_linked_deployment | 保留以供将来使用。 部署期间创建的资源是否指向工作区中的源文件而非其工作区副本。 | 
| tags | 一组“键:值”标记,这些标记适用于支持标记的所有资源,包括作业和试验。 Databricks 资产捆绑包不支持 schema资源的标记。 | 
| trigger_pause_status | 适用于所有触发器和计划的暂停状态。 有效值为 PAUSED或UNPAUSED。如果 mode设置为development,则trigger_pause_status则始终为PAUSED。 | 
以下示例显示名为 dev 的目标的自定义预设配置:
targets:
  dev:
    presets:
      name_prefix: 'testing_' # prefix all resource names with testing_
      pipelines_development: true # set development to true for pipelines
      trigger_pause_status: PAUSED # set pause_status to PAUSED for all triggers and schedules
      jobs_max_concurrent_runs: 10 # set max_concurrent runs to 10 for all jobs
      tags:
        department: finance