使用源代码控制管理系统管理流水线

本页面介绍了如何通过 Git 代码库在 Cloud Data Fusion 中使用源代码控制来管理流水线。

关于源代码控制管理

Cloud Data Fusion 能够以直观方式设计 ETL 和 ELT 集成的流水线。为了更好地管理开发环境和生产环境之间的流水线,Cloud Data Fusion 允许使用 GitHub 和其他版本控制系统对流水线进行源代码控制管理。

借助 Cloud Data Fusion 中的源代码控制管理,您可以执行以下操作:

  • 将每个 Cloud Data Fusion 命名空间与版本控制系统集成。
  • 在中央 Git 代码库中管理流水线。
  • 查看和审核流水线更改。
  • 回滚流水线更改。
  • 与团队高效协作,同时确保集中控制。

准备工作

  • 源代码控制管理支持与 GitHub、Bitbucket Server、Bitbucket Cloud 和 GitLab 代码库集成。
  • 不支持 GitHub OAuth。
  • 源代码控制管理仅支持批处理流水线。
  • 源代码控制管理仅支持用于推送和拉取操作的流水线设计 JSON。 不支持执行配置。
  • 链接的代码库的大小上限为 5 GB。

所需的角色和权限

Cloud Data Fusion 中的源代码控制管理包含两个关键操作:

  • 配置源代码控制代码库
  • 使用推送和拉取操作将流水线与 Git 代码库同步

如需获得使用源代码控制管理功能所需的权限,请让管理员向您授予项目的以下任何预定义角色:

如需详细了解如何授予角色,请参阅 管理访问权限

您或许还可以通过其他 预定义角色获得所需的权限。

设置 Git 代码库

如需在 GitHub 中创建 Git 代码库,请按照 创建代码库中所述的说明操作。

如需详细了解 GitHub 和其他版本控制系统中的个人访问令牌,请参阅以下页面:

将 Git 代码库与 Cloud Data Fusion 连接

Cloud Data Fusion 允许您在每个命名空间的“源代码控制管理”标签页中配置和连接 Git 代码库。如需将命名空间与 Git 代码库关联,请按以下步骤操作:

控制台

  1. 在 Cloud Data Fusion Studio 中, 点击 菜单
  2. 点击 Namespace Admin
  3. Namespace Admin 页面上,点击源代码控制管理 标签页。
  4. 点击链接代码库
  5. 输入以下详细信息:

    • 提供方:选择 Git 服务提供方,例如 GitHubGitLab
    • 代码库网址:输入可访问代码库的网址。对于 GitHub,代码库网址为 https://github.com/HOST/REPO
    • 默认分支 (可选):输入 Git 的初始分支。此分支可以与 GitHub 上配置的默认分支不同。 无论 GitHub 上的默认分支是什么,此分支都用于同步流水线。
    • 路径前缀 (可选):为保存在 Git 代码库中的流水线名称输入前缀。例如,如果您的流水线名称 为 DataFusionQuickStart,并且您将前缀指定为 namespaceName,则流水线在 Git 代码库中保存为 namespaceName/DataFusionQuickStart
    • 身份验证类型:Cloud Data Fusion 允许您使用 个性化访问令牌作为身份验证类型。系统会自动选择此选项。
    • 令牌名称:输入可与令牌关联的名称。
    • 令牌:输入 GitHub 代码库提供的令牌。
    • 可选:用户名:输入令牌的用户名或所有者。
  6. 点击验证 。等待系统验证连接。

  7. 配置完成后,点击保存并关闭 以确认配置。

将 Git 代码库与 Cloud Data Fusion 连接。

REST API

  1. 在 Cloud Data Fusion 中创建 一个包含个人访问令牌的密钥。

  2. 运行以下命令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" 
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/securekeys/PASSWORD_SECRET_KEY -X PUT -d '{ "description": "Example Secure Key","data": "PERSONAL_ACCESS_TOKEN"}'
    

    替换以下内容:

    • NAMESPACE_ID:命名空间的 ID。
    • PASSWORD_SECRET_KEY:包含个人访问令牌的密钥的名称。
    • PERSONAL_ACCESS_TOKEN:GitHub 的个人访问令牌。
  3. 运行以下命令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" 
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository -X PUT -d '{"test": "TEST_ONLY", "config": {"provider": "PROVIDER_TYPE", "link": "REPO_URL", "defaultBranch": "DEFAULT_BRANCH", "pathPrefix": "PATH_TO_DIRECTORY", "auth": {"type": "AUTH_TYPE", "patConfig": {"passwordName": "PASSWORD_SECRET_KEY", "username": "USER_NAME"}}}}'
    

    替换以下内容:

    • NAMESPACE_ID:命名空间的 ID。
    • TEST_ONLY:如果您只想验证配置而不添加配置,请设置为 true
    • PROVIDER_TYPE:Git 提供方名称,即 GITHUB
    • REPO_URL:要链接的代码库网址。使用 网址,例如https://github.com/user/repo.githttps
    • DEFAULT_BRANCH:用于推送和拉取操作的分支。如果省略,则使用代码库中配置的默认分支,例如主分支。
    • PATH_TO_DIRECTORY:代码库中存储配置文件的目录的路径。
    • AUTH_TYPE:身份验证类型。 仅支持 PAT。请参阅 GitHub 中的精细的个人访问令牌
    • PASSWORD_SECRET_KEY:包含身份验证类型 PAT 的个人访问令牌的密钥的名称。
    • USER_NAME:您可以为身份验证类型 PAT 省略此值。

将 Cloud Data Fusion 流水线与远程代码库同步

将 Git 代码库配置为使用命名空间后,您可以推送和拉取流水线,并将其与 Git 代码库同步。

将流水线从 Cloud Data Fusion 推送到 Git 代码库

如需将多个已部署的流水线从命名空间同步到 Git 代码库,请按以下步骤操作:

控制台

  1. 在 Cloud Data Fusion Studio 中, 点击 菜单
  2. 点击 Namespace Admin
  3. Namespace Admin 页面上,点击源代码控制管理 标签页。
  4. 找到要同步的 Git 代码库,然后点击同步流水线
  5. 点击 Namespace pipelines 标签页。
  6. 搜索并选择要推送到 Git 代码库的流水线。

    如果流水线的最新版本已推送到 Git 代码库或已从 Git 代码库拉取,则已连接到 Git 状态会显示 Connected。如果流水线从未推送到 GitHub,则已连接到 Git 状态会显示空白 (-)。

    如果您部署了已与 Git 代码库同步的流水线的较新版本,则已连接到 Git 状态会从 Connected 更改为空白 (-)。

  7. 点击推送到代码库

  8. 输入提交消息 ,然后点击确定

    推送操作开始,系统会显示一条消息,指明所选流水线正在推送到远程代码库。

将流水线从 Cloud Data Fusion 推送到 Git 代码库。

推送操作成功完成后,系统会显示一条成功消息,指明已推送到远程代码库的流水线数量。

如果推送操作失败,请在 GitHub 中检查流水线,看看它是否是最新版本。对于每次失败的推送操作,系统都会显示一条错误消息。如需查看错误的详细信息,请展开错误消息。

您还可以从流水线设计工作室将单个流水线推送到 Git 代码库:

  1. 在 Cloud Data Fusion Studio 中, 点击 菜单
  2. 点击列表
  3. 点击要推送到 Git 代码库的流水线。
  4. 在流水线页面上,依次点击操作 > 推送到代码库
  5. 输入提交消息 ,然后点击确定

从流水线设计工作室推送流水线。

REST API

  1. 将一组流水线从 Cloud Data Fusion 推送到 Git 代码库:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository/apps/push -X POST
    -d '{"apps": ["PIPELINE_NAME_1", "PIPELINE_NAME_2"]}, "commitMessage": "COMMIT_MESSAGE"'
    

    替换以下内容:

    • NAMESPACE_ID:命名空间的 ID。
    • PIPELINE_NAME_1PIPELINE_NAME_2:要推送的流水线的名称。
    • COMMIT_MESSAGE:Git 提交的提交消息。

    响应包含推送操作的 ID。例如:

    RESPONSE
    {
    "id": OPERATION_ID
    }
    
  2. 如需轮询推送操作的状态,请运行以下命令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" 
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/operations/OPERATION_ID
    

    替换以下内容:

    • NAMESPACE_ID:命名空间的 ID。
    • OPERATION_ID:从推送操作收到的操作 ID。

    响应包含推送操作的状态。例如:

    RESPONSE
    {
    "id": OPERATION_ID
    "done": True/False
    "status": STARTING/RUNNING/SUCCEEDED/FAILED
    "error": {"message": ERROR_MESSAGE, "details":[{"resourceUri": RESOURCE, "message": ERROR_MESSAGE}]}
    }
    

    如需验证推送操作是否已完成,请检查响应中的 done 属性。如果操作失败,请检查 error 属性以了解更多详细信息。

将流水线从 Git 代码库拉取到 Cloud Data Fusion 中

如需将多个流水线从 Git 代码库同步到您的命名空间,请按以下步骤操作:

控制台

  1. 在 Cloud Data Fusion Studio 中, 点击 菜单
  2. 点击 Namespace Admin
  3. Namespace Admin 页面上,点击源代码控制管理 标签页。
  4. 找到要同步的 Git 代码库,然后点击同步流水线
  5. 点击 Repository pipelines 标签页。 系统会显示存储在 Git 代码库中的所有流水线。
  6. 搜索并选择要从 Git 代码库拉取到 Cloud Data Fusion 命名空间的流水线。
  7. 点击从代码库拉取

    拉取操作开始,系统会显示一条消息,指明所选流水线正在从远程代码库拉取。Cloud Data Fusion 会在配置的路径下查找 JSON 文件,并将其拉取并部署为流水线到 Cloud Data Fusion。

将流水线从 Git 代码库拉取到 Cloud Data Fusion 中。

拉取操作成功完成后,系统会显示一条成功消息,指明已从远程代码库拉取的流水线数量。

如果拉取操作失败,系统会显示一条错误消息。如需查看错误的详细信息,请展开错误消息。

您还可以从流水线设计工作室将单个流水线从 Git 代码库拉取到命名空间:

  1. 在 Cloud Data Fusion Studio 中, 点击 菜单
  2. 点击列表
  3. 点击要从 Git 代码库拉取的流水线。
  4. 在流水线页面上,依次点击操作 > 从代码库拉取

从流水线设计工作室拉取流水线。

REST API

  1. 将一组流水线从 Git 代码库拉取到 Cloud Data Fusion 中:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" 
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository/apps/pull -X POST -d '{"apps": ["PIPELINE_NAME_1", "PIPELINE_NAME_2"]}'
    

    替换以下内容:

    • NAMESPACE_ID:命名空间的 ID。
    • PIPELINE_NAME_1PIPELINE_NAME_2:要拉取的流水线的名称。

    响应包含拉取操作的 ID。例如:

    RESPONSE
    {
    "id": OPERATION_ID
    }
    
  2. 如需轮询拉取操作的状态,请运行以下命令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" 
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/operations/OPERATION_ID
    

    替换以下内容:

    • NAMESPACE_ID:命名空间的 ID。
    • OPERATION_ID:从拉取操作收到的操作 ID。

    响应包含拉取操作的状态。例如:

    RESPONSE
    {
    "id": OPERATION_ID
    "done": True/False
    "status": STARTING/RUNNING/SUCCEEDED/FAILED
    "error": {"message": ERROR_MESSAGE, "details":[{"resourceUri": RESOURCE, "message": ERROR_MESSAGE}]}
    }
    

    如需验证拉取操作是否已完成,请检查响应中的 done 属性。如果操作失败,请检查 error 属性以了解更多详细信息。

删除 Git 代码库配置

如需从命名空间中删除 Git 代码库配置,请按以下步骤操作:

控制台

  1. 在 Cloud Data Fusion Studio 中, 点击 菜单
  2. 点击 Namespace Admin
  3. Namespace Admin 页面上,点击源代码控制管理 标签页。
  4. 对于要删除的 Git 代码库配置,依次点击 > 删除

REST API

删除 Git 代码库配置:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository -X DELETE

NAMESPACE_ID 替换为 命名空间的 ID。

后续步骤