持续集成和持续交付(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 目录,或者当无法访问外部 CI/CD 管道时,请创建计划任务以在工作区中拉取 Git 目录。
优点 | 缺点 |
---|---|
|
|
如果只需要作业的 CI/CD,包含作业的 Git 使你可以将某些作业类型配置为使用远程 Git 存储库作为源。 作业运行开始时,Databricks 会对远程存储库进行快照提交,并确保作业的所有运行过程都基于同一版本的代码。
优点 | 缺点 |
---|---|
|
|
无论选择哪种 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 系统。 |