包含 Databricks Git 文件夹(存储库)的 CI/CD

Databricks Git 文件夹可用于 CI/CD 工作流。 通过在工作区中配置 Databricks Git 文件夹,可以使用源代码管理在 Git 存储库中工作,并将其集成到数据工程工作流中。 有关使用 Azure Databricks 的 CI/CD 的更全面概述,请参阅 Azure Databricks 上的 CI/CD

使用流

开发 Git 文件夹自动化的大部分工作主要集中在文件夹的初始配置,以及了解 Azure Databricks Repos REST API,你可以使用它来自动化 Azure Databricks 作业中的 Git 操作。 在开始构建自动化和设置文件夹之前,请查看将纳入自动化流的远程 Git 存储库,并为自动化的不同阶段(包括开发、集成、过渡和生产)选择合适的存储库。

  • 管理流:对于生产流,Azure Databricks 工作区管理员在工作区中设置顶级文件夹以托管生产 git 文件夹。 管理员在创建 Git 存储库时克隆一个 Git 存储库和分支,并可以为这些文件夹提供有意义的名称,例如“生产”、“测试”或“暂存”,这些名称对应于远程 Git 存储库在开发流中的用途。 有关详细信息,请参阅 生产 Git 文件夹
  • 用户流:用户可以基于远程 Git 存储库创建 Git 文件夹 /Workspace/Users/<email>/ 。 用户为将要提交并推送到远程存储库的工作创建一个特定于用户的本地分支。 有关在用户特定的 Git 文件夹中进行协作的信息,请参阅 使用 Git 文件夹进行协作
  • 合并流:用户可以在从 Git 文件夹推送后创建拉取请求 (PR)。 合并 PR 后,自动化可以使用 Azure Databricks Repos API 将更改拉取到生产 Git 文件夹中。

使用 Git 文件夹进行协作

可以使用 Git 文件夹轻松与他人协作,直接从 Azure Databricks UI 拉取更新和推送更改。 例如,使用功能或开发分支聚合跨多个分支所做的更改。

以下流程描述如何使用功能分支进行协作:

  1. 将现有 Git 存储库克隆到 Databricks 工作区
  2. 使用 Git 文件夹用户界面 从主分支创建特性分支。 可以创建并使用多个功能分支来完成工作。
  3. 对存储库中的 Azure Databricks 笔记本和其他文件进行修改。
  4. 提交更改并将其推送到远程 Git 存储库
  5. 参与者现在可将 Git 存储库克隆到其自己的用户文件夹中。
    1. 某位同事在新分支上工作,并对 Git 文件夹中的笔记本和其他文件进行更改。
    2. 参与者 提交并推送其更改到远程 Git 存储库
  6. 当你或其他参与者准备好合并代码时,请在 Git 提供程序网站上创建 PR。 在将更改合并到部署分支之前,请与团队一起查看代码。

注释

Databricks 建议每个开发人员在其自己的分支上工作。 有关如何解决合并冲突的信息,请参阅解决合并冲突

选择 CI/CD 方法

Databricks 建议使用 Databricks 资产捆绑包 来打包和部署 CI/CD 工作流。 如果希望仅将源代码管理的代码部署到工作区,可以设置生产 Git 文件夹。 有关使用 Azure Databricks 的 CI/CD 的更全面概述,请参阅 Azure Databricks 上的 CI/CD

小窍门

使用捆绑包在源文件中定义作业和管道等资源,然后在工作区 Git 文件夹中创建、部署和管理捆绑包。 请参阅在工作区中协作处理捆绑包

生产 Git 文件夹

生产 Git 文件夹的作用不同于位于用户文件夹中 /Workspace/Users/的用户级 Git 文件夹。 用户级 Git 文件夹充当本地签出,用户在其中开发和推送代码更改。 相比之下,生产 Git 文件夹是由 Databricks 管理员在用户文件夹外部创建的,并且包含生产部署分支。 生产环境的 Git 文件夹包含自动化工作流的源代码,仅当拉取请求(PR)被合并到部署分支时,才应通过编程方式更新。 对于生产 Git 文件夹,请限制用户对仅运行的访问权限,并允许管理员和 Azure Databricks 服务主体进行编辑。

Git生产文件夹映射到远程存储库中的主分支。

创建 Git 生产文件夹:

  1. 选择 Git 存储库和分支进行部署。

  2. 获取服务主体并配置服务主体的 Git 凭据以访问此 Git 存储库。

  3. 在专用于项目、团队和开发阶段的 Workspace 子文件夹中,为 Git 存储库和分支创建 Azure Databricks Git 文件夹。

  4. 在选择文件夹后或在工作区树下右键单击文件夹,选择共享共享(权限)。 使用以下权限配置 Git 文件夹:

    • 为任何项目用户设置“可运行”
    • 为任何将为其运行自动化的 Azure Databricks 服务主体帐户设置可运行
    • 如果适合项目,请为工作区中的所有用户设置 “可查看” ,以鼓励发现和共享。

    “共享 Git 文件夹模式”对话框窗口。

  5. 选择 并添加

  6. 设置 Databricks Git 文件夹的自动更新。 可以通过执行以下操作之一,使用自动化使生产环境中的 Git 目录与远程分支保持同步:

    • 当拉取请求合并到部署分支时,使用外部 CI/CD 工具(如 GitHub Actions)将最新的提交拉入到生产 Git 文件夹。 有关 Github Actions 示例,请参阅 运行更新生产 Git 文件夹的 CI/CD 工作流
    • 如果无法访问外部 CI/CD 工具,请创建计划作业,以使用远程分支更新工作区中的 Git 文件夹。 使用以下代码计划一个简单的笔记本,以便定期运行:
    from databricks.sdk import WorkspaceClient
    w = WorkspaceClient()
    w.repos.update(w.workspace.get_status(path=”<git-folder-workspace-full-path>”).object_id, branch=”<branch-name>”)
    

有关使用 Azure Databricks Repos API 实现自动化的详细信息,请参阅 Repos 的 Databricks REST API 文档