Azure Databricks 上的 CI/CD

持续集成和持续交付(CI/CD)是指使用自动化管道在短时间内开发和交付软件的过程。 CI/CD 在软件开发中很常见,并且在数据工程和数据科学中越来越必要。 通过自动化代码的生成、测试和部署,开发团队能够比手动流程更可靠地交付发布。

通用工具可用于开发 CI/CD 管道,但由于每个组织的软件开发生命周期的独特方面,从组织到组织的实现和方法可能略有不同。 本页提供有关在 Databricks 上进行 CI/CD 的各种方法的信息,以及每种方法的优缺点:

有关 Azure Databricks 上机器学习项目的 CI/CD 概述,请参阅 Databricks 如何支持用于机器学习的 CI/CD?

Databricks 资产捆绑包 是 Databricks 上 CI/CD 的建议方法。 使用 Databricks 资产捆绑包描述 Databricks 资源(如作业和管道)作为源文件,并将它们与其他资产捆绑在一起,以提供可部署项目的端到端定义。 这些文件捆绑包可以进行源代码管理,可以使用外部 CI/CD 自动化(如 Github Actions)来触发部署。

优点 缺点
  • 包括许多功能,例如自定义捆绑模板,用于在整个组织中强制实施一致性和最佳做法。
  • 全面支持为许多 Databricks 资源部署代码文件和配置。
  • 需要了解 捆绑配置语法 才能创作捆绑包。
  • 不能保证捆绑包部署文件夹与远程 Git 提交匹配。 生产捆绑包文件夹可能会在工作区中被意外编辑。
  • 需要外部 CI/CD 管道(如 GitHub Actions)在合并时触发一个部署。

生产环境 Git 文件夹

如果尚未准备好采用 Databricks 资产捆绑包,但希望代码受源代码管理,可以设置 生产 Git 文件夹。 然后,使用外部 CI/CD 工具(如 GitHub Actions)在代码合并时拉取 Git 目录,或者当无法访问外部 CI/CD 管道时,请创建计划任务以在工作区中拉取 Git 目录。

优点 缺点
  • 对于未采用 Databricks 资产捆绑包的团队,支持轻量级简单部署。
  • 支持使用外部业务流程协调程序(如 Airflow)的工作区的 CI/CD。
  • 生产环境中的 Git 文件夹可能会被意外修改。
  • 只有代码文件(如笔记本和仪表板草稿)位于源代码管理中。 在 Git 文件夹中运行资产的作业的配置和发布仪表板的配置不在源代码管理中。
  • 需要外部 CI/CD 管道(如 GitHub Actions)在合并时触发部署。

包含作业的 Git

如果只需要作业的 CI/CD,包含作业的 Git 使你可以将某些作业类型配置为使用远程 Git 存储库作为源。 作业运行开始时,Databricks 会对远程存储库进行快照提交,并确保作业的所有运行过程都基于同一版本的代码。

优点 缺点
  • 轻量级,可以完全在 UI 中创作。
  • 不需要外部 CI/CD 管道(如 GitHub Actions)来执行最新的代码。
  • 确保生产作业执行没有本地编辑的远程代码,从而防止对生产作业进行意外更改。
  • 仅支持有限的作业任务。
  • 只有代码文件(如笔记本和其他文件)位于源代码管理中。 作业配置(如任务序列、计算和计划)不受源代码管理,因此此方法不太适用于多环境跨工作区部署。
  • 在运行时需要 Git 连接。 如果 Git 连接中断,作业将失败。

其他 CI/CD 建议

无论选择哪种 CI/CD 方法,都使用 CI/CD 的服务主体。 请参阅 CI/CD 的服务主体

Databricks 还建议使用 Databricks Terraform 提供程序来管理 Databricks 工作区和关联的云基础结构。

有关管理 Azure Databricks 资产和数据生命周期的详细信息,请参阅以下有关 CI/CD 和数据管道工具的文档。

面积 对于以下需求,请使用这些工具…
Databricks 资产捆绑包 使用 CI/CD 最佳做法和工作流以编程方式定义、部署和运行 Azure Databricks 作业、DLT 管道和 MLOps Stacks。
Databricks Terraform 提供者 使用 Terraform 预配和管理 Databricks 工作区和基础结构。
包含 Git 和 Databricks Git 文件夹的 CI/CD 工作流 将 GitHub 和 Databricks Git 文件夹用于源代码管理和 CI/CD 工作流。
使用 Microsoft Entra 服务主体对 Azure Databricks Git 文件夹的访问权限进行身份验证 使用 MS Entra 服务主体对 Databricks Git 文件夹的访问权限进行身份验证。
GitHub 活动 在 CI/CD 工作流中包含为 Azure Databricks 开发的 GitHub Action。
将 CI/CD 与 Azure Databricks 上的 Jenkins 配合使用 开发一个在 Azure Databricks 上使用 Jenkins 的 CI/CD 管道。
使用 Apache Airflow 协调 Azure Databricks 作业 管理和计划使用 Apache Airflow 的数据管道。
CI/CD 的服务主体 将服务主体(而不是用户)用于 CI/CD 系统。