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

本页面介绍了如何通过 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. 点击命名空间管理员
  3. 命名空间管理员页面上,点击源代码控制管理标签页。
  4. 点击关联代码库
  5. 输入以下详细信息:

    • 提供商:选择 Git 服务提供商,例如 GitHubGitLab
    • 代码库网址:输入可访问代码库的网址。对于 GitHub,代码库网址为 https://github.com/HOST/REPO
    • Default branch(可选):输入 Git 的初始分支。此分支可以不同于 GitHub 上配置的默认分支。 无论 GitHub 上的默认分支是什么,此分支都用于同步流水线。
    • 路径前缀(可选):输入保存在 Git 代码库中的流水线名称的前缀。例如,如果您的流水线名称为 DataFusionQuickStart 且将前缀指定为 namespaceName,则该流水线会在 Git 代码库中保存为 namespaceName/DataFusionQuickStart
    • 身份验证类型:Cloud Data Fusion 允许您使用个性化访问令牌作为身份验证类型。这是自动选择的选项。
    • 令牌名称:输入可与令牌关联的名称。
    • Token(令牌):输入 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 网址,例如 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 中,点击 菜单
  2. 点击命名空间管理员
  3. 命名空间管理员页面上,点击源代码控制管理标签页。
  4. 找到要同步的 Git 代码库,然后点击同步流水线
  5. 点击命名空间流水线标签页。
  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. 点击命名空间管理员
  3. 命名空间管理员页面上,点击源代码控制管理标签页。
  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 中,点击 菜单
  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. 点击命名空间管理员
  3. 命名空间管理员页面上,点击源代码控制管理标签页。
  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。

后续步骤