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

本页面介绍了如何通过 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 服务提供方,例如 GitHub 或 GitLab。
    • 代码库网址:输入可访问代码库的网址。对于 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.git。https
    • 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_1、PIPELINE_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_1、PIPELINE_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。

后续步骤