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

本页介绍了如何通过 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。
  • 源代码管理仅支持批处理流水线。
  • 源代码控制管理仅支持用于 push 和 pull 操作的流水线设计 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 中,点击 Menu(菜单)。
  2. 点击命名空间管理员
  3. Namespace admin 页面上,点击 Source Control Management 标签页。
  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 中创建一个包含个人访问令牌的 Secret 密钥

  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 URI,例如 https://github.com/user/repo.git
    • 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 中,点击 Menu(菜单)。
  2. 点击命名空间管理员
  3. Namespace admin 页面上,点击 Source Control Management 标签页。
  4. 找到要与之同步的 Git 代码库,然后点击同步流水线
  5. 点击命名空间流水线标签页。
  6. 搜索并选择要推送到 Git 代码库的流水线。

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

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

  7. 点击推送到代码库

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

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

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

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

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

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

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

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

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 中,点击 Menu(菜单)。
  2. 点击命名空间管理员
  3. Namespace admin 页面上,点击 Source Control Management 标签页。
  4. 找到要与之同步的 Git 代码库,然后点击同步流水线
  5. 点击代码库流水线标签页。 系统会显示存储在 Git 代码库中的所有流水线。
  6. 搜索并选择要从 Git 代码库中拉取到 Cloud Data Fusion 命名空间中的流水线。
  7. 点击从代码库拉取

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

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

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

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

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

  1. 在 Cloud Data Fusion Studio 中,点击 Menu(菜单)。
  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 中,点击 Menu(菜单)。
  2. 点击命名空间管理员
  3. Namespace admin 页面上,点击 Source Control Management 标签页。
  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。

后续步骤