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

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

关于源代码控制管理

Cloud Data Fusion 提供直观的界面,可用于设计 ETL 和 ELT 集成流水线。为了更好地管理 Cloud Data Fusion 可让您对流水线进行源代码控制 (使用 GitHub 和其他版本控制系统)。

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

  • 将每个 Cloud Data Fusion 命名空间与版本控制系统集成。
  • 在中央 Git 代码库中管理您的流水线。
  • 审核并审核流水线更改。
  • 还原流水线更改。
  • 与团队有效协作,同时确保集中控制。

准备工作

  • Source Control Management 支持与 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 中 点击 Menu(菜单)。
  2. 点击命名空间管理员
  3. 命名空间管理员页面上,点击源代码控制管理。 标签页。
  4. 点击关联代码库
  5. 输入以下详细信息:

    • Provider(提供商):选择一个 Git 服务提供商,例如 GitHubGitLab
    • Repository 网址:输入代码库的网址 。对于 GitHub,代码库网址是 https://github.com/HOST/REPO
    • Default branch(可选):输入 Git 的初始分支。这个 分支可以不同于 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 URI,例如 https://github.com/user/repo.git
    • DEFAULT_BRANCH:用于推送和拉取操作的分支。如果省略,系统会使用代码库中配置的默认分支,例如主分支。
    • PATH_TO_DIRECTORY:指向 中的目录的路径 存储配置文件的代码库
    • AUTH_TYPE:身份验证类型。 仅支持 PAT。请参阅 GitHub 中的精细个人访问令牌
    • PASSWORD_SECRET_KEY:Secret 的名称 包含身份验证类型 PAT 的个人访问令牌的密钥。
    • USER_NAME:对于 身份验证类型 PAT

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

使用命名空间配置 Git 代码库后 并将其与 Git 代码库同步

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

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

控制台

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

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

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

  7. 点击推送到代码库

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

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

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

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

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

您也可以将单个流水线从流水线推送到 Git 代码库 Design Studio:

  1. 在 Cloud Data Fusion Studio 中 点击 Menu(菜单)。
  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 的提交消息 commit。

    响应包含推送操作的 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 中 点击“菜单
  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 替换为 命名空间。

后续步骤