通过


包含 Databricks Git 文件夹的 CI/CD

使用 CI/CD 流中的 Databricks Git 文件夹在源代码管理中保持工作,并将其与数据工程工作流集成。 有关使用 Azure Databricks 的 CI/CD 的更广泛概述,请参阅 Azure Databricks 上的 CI/CD

使用流

Git 文件夹的自动化主要围绕初始文件夹配置和 Azure Databricks Repos REST API,以便从 Azure Databricks 作业自动执行 Git 操作。 在开发自动化之前:

  • 查看将使用的远程 Git 存储库。
  • 为每个阶段(开发、集成、过渡、生产)选择正确的存储库和分支。

有三个主要流:

  • 管理流:Azure Databricks 工作区管理员创建顶级文件夹来托管生产 Git 文件夹。 管理员在创建每个文件夹时克隆存储库和分支,并可以按目的命名它们(例如,“生产”、“测试”或“暂存”)。 请参阅 “创建生产 Git”文件夹
  • 用户流:用户从远程存储库创建 Git 文件夹 /Workspace/Users/<email>/ ,在特定于用户的分支上工作,并将提交推送到远程。 请参阅 使用 Git 文件夹进行协作
  • 合并流程:用户从 Git 文件夹推送后,会打开拉取请求(PR)。 合并 PR 后,自动化过程可以使用 Azure Databricks Repos API 将更改同步到生产 Git 文件夹中。

使用 Git 文件夹进行协作

通过从 Azure Databricks UI 拉取和推送更改来与他人协作。 常见的模式是使用功能或开发分支来聚合工作。

若要协作处理功能分支,请执行以下步骤:

  1. 将现有 Git 存储库克隆到 Databricks 工作区
  2. 在 Git 文件夹 UI 中,从主 分支创建功能分支 。 可以根据需要使用多个功能分支。
  3. 编辑存储库中的 Azure Databricks 笔记本和其他文件。
  4. 提交更改并将其推送 到远程存储库。
  5. 其他参与者可以将存储库克隆到自己的用户文件夹中。 他们在分支上工作,更改 Git 文件夹中的笔记本和文件,然后 提交并推送 到远程。
  6. 准备就绪后,在 Git 服务提供商上创建 PR,与团队一起审核,并合并到部署分支中。

注释

Databricks 建议每个开发人员在其自己的分支上工作。 若要解决合并冲突,请参阅 “解决合并冲突”。

选择 CI/CD 方法

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

小窍门

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

创建生产 Git 文件夹

生产 Git 文件夹不同于 /Workspace/Users/ 下的用户级别 Git 文件夹。 用户级文件夹是用户开发和推送更改的本地签出。 生产环境的 Git 文件夹是由管理员在用户文件夹之外创建的,包含部署分支,并且是自动化工作流的起始源。 仅当 PR 合并到部署分支时,才应通过自动化更新它们。 将生产 Git 文件夹限制为大多数用户仅运行访问权限。 仅允许管理员和 Azure Databricks 服务主体对其进行编辑。

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

创建一个用于生产环境的 Git 文件夹:

  1. 选择用于部署的 Git 存储库和分支。

  2. 创建或使用服务主体并配置 Git 凭据,以便它可以访问该存储库。

  3. 工作区 下的子文件夹中为存储库和分支创建 Azure Databricks Git 文件夹(例如,每个项目、团队或阶段)。

  4. 选择该文件夹,然后共享(或在工作区树中右键单击“共享(权限)”)。

  5. 分配权限级别:

    • 可以针对 需要运行工作流的项目用户运行。
    • 可以运行 针对该文件夹执行自动化操作的任何 Azure Databricks 服务主体。
    • 可选择将查看权限设置为支持所有工作区用户的发现和共享。

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

  6. 单击 添加

  7. 使用以下选项之一使生产 Git 文件夹与远程分支保持同步:

    • 外部 CI/CD:在 PR 合并到部署分支时,使用 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>")
    

有关使用 Repos API 自动执行的详细信息,请参阅 Repos 的 Databricks REST API 文档