本页面介绍了如何在 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 代码库同步
要获取使用源代码控制管理功能所需的权限,请 您可以 项目:
配置源代码控制代码库:
- Cloud Data Fusion 运算符 (
roles/datafusion.operator
) - Cloud Data Fusion Editor (
roles/datafusion.editor
) - Cloud Data Fusion 管理员 (
roles/datafusion.admin
)
- Cloud Data Fusion 运算符 (
使用来自命名空间的推送或拉取操作同步流水线:
- Cloud Data Fusion 运算符 (
roles/datafusion.operator
) - Cloud Data Fusion 开发者 (
roles/datafusion.developer
) - Cloud Data Fusion Editor (
roles/datafusion.editor
) - Cloud Data Fusion 管理员 (
roles/datafusion.admin
)
- Cloud Data Fusion 运算符 (
如需详细了解如何授予角色,请参阅管理访问权限。
您或许也可以通过其他 预定义角色。
设置 Git 代码库
要在 GitHub 中创建 Git 代码库,请按照 创建代码库。
如需详细了解 GitHub 和其他版本中的个人访问令牌 控制系统,请参阅以下页面:
。将 Git 代码库与 Cloud Data Fusion 连接
借助 Cloud Data Fusion,您可以配置和连接 Git 代码库 找到每个命名空间的“源代码控制管理”标签要将命名空间与 Git 代码库中,请按以下步骤操作:
控制台
- 在 Cloud Data Fusion Studio 中 点击 Menu(菜单)。
- 点击命名空间管理员。
- 在命名空间管理员页面上,点击源代码控制管理。 标签页。
- 点击关联代码库。
输入以下详细信息:
- Provider(提供商):选择一个 Git 服务提供商,例如 GitHub 或 GitLab。
- Repository 网址:输入代码库的网址
。对于 GitHub,代码库网址是
https://github.com/HOST/REPO
。 - Default branch(可选):输入 Git 的初始分支。这个 分支可以不同于 GitHub 上配置的默认分支。 无论默认分支如何,此分支都用于同步流水线 。
- 路径前缀(可选):为流水线名称输入一个前缀,即
保存在 Git 代码库中例如,如果您的流水线名称
为
DataFusionQuickStart
,如果您指定前缀为namespaceName
,则流水线将另存为 Git 代码库中的namespaceName/DataFusionQuickStart
。 - 身份验证类型:借助 Cloud Data Fusion,您可以使用 作为身份验证类型。这是 。
- 令牌名称:输入可与令牌关联的名称。
- Token(令牌):输入 GitHub 代码库提供的令牌。
- 可选:用户名:输入令牌的用户名或所有者。
点击验证。等待验证连接。
配置完成后,点击保存并关闭以确认 配置。
REST API
在以下位置创建密钥: 包含个人访问令牌的 Cloud Data Fusion。
运行以下命令:
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
:Secret 的名称 包含个人访问令牌的密钥。PERSONAL_ACCESS_TOKEN
:个人访问权限 GitHub 的令牌。
运行以下命令:
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
:Secret 的名称 包含身份验证类型PAT
的个人访问令牌的密钥。USER_NAME
:对于 身份验证类型PAT
。
将 Cloud Data Fusion 流水线与远程代码库同步
使用命名空间配置 Git 代码库后 并将其与 Git 代码库同步
将流水线从 Cloud Data Fusion 推送到 Git 代码库
如需将多个已部署的流水线从命名空间同步到 Git 代码库,请执行以下操作: 请按以下步骤操作:
控制台
- 在 Cloud Data Fusion Studio 中 点击 Menu(菜单)。
- 点击命名空间管理员。
- 在命名空间管理员页面上,点击源代码控制管理。 标签页。
- 找到要同步的 Git 代码库,然后 点击同步流水线。
- 点击命名空间流水线标签页。
搜索并选择要推送到 Git 的流水线 存储库
将最新版本的流水线推送到 Git 或从 Git 代码库中,已连接到 Git 状态会显示
Connected
。如果 流水线从未推送到 GitHub,状态为“已连接到 Git” 显示为空白 (-
)。如果您部署的较新版本的流水线已经与 Git 代码库中,已连接到 Git 的状态从
Connected
更改为 空白 (-
)。点击推送到代码库。
输入提交消息,然后点击确定。
推送操作开始,系统将显示一条消息,指示 正在将选定的流水线推送到远程代码库
推送操作成功完成后,系统将返回一条成功消息 显示推送到远程的流水线数量 存储库
如果推送操作失败,请检查 GitHub 中的流水线, 最新版本。对于每个失败的推送操作,系统会显示一条错误消息 。如需查看错误详情,请展开错误消息。
您也可以将单个流水线从流水线推送到 Git 代码库 Design Studio:
- 在 Cloud Data Fusion Studio 中 点击 Menu(菜单)。
- 点击列表。
- 点击要推送到 Git 代码库的流水线。
- 在流水线页面上,点击操作 > 推送到代码库。
- 输入提交消息,然后点击确定。
REST API
将一组流水线从 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 的提交消息 commit。
响应包含推送操作的 ID。例如:
RESPONSE { "id": OPERATION_ID }
如需轮询推送操作的状态,请运行以下命令:
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 代码库同步到您的命名空间,请按照以下 步骤:
控制台
- 在 Cloud Data Fusion Studio 中 点击 Menu(菜单)。
- 点击命名空间管理员。
- 在命名空间管理员页面上,点击源代码控制管理。 标签页。
- 找到要同步的 Git 代码库,然后点击 同步流水线。
- 点击代码库流水线标签页。 系统会显示 Git 代码库中存储的所有流水线。
- 搜索并选择要从 Git 中拉取的流水线 存储到 Cloud Data Fusion 命名空间中。
点击从代码库拉取。
拉取操作开始,屏幕上会显示一条消息,指示 正在从远程仓库中拉取选定的流水线 Cloud Data Fusion 在配置的路径下查找 JSON 文件,以及 拉取它们并将其作为流水线部署到 Cloud Data Fusion。
拉取操作成功完成后,系统会显示一条成功消息 显示从 远程仓库
如果拉取操作失败,将显示一条错误消息。要查看 请展开错误消息。
您也可以将单个流水线从 Git 代码库拉取到命名空间 流水线设计工作室编写的示例:
- 在 Cloud Data Fusion Studio 中 点击 Menu(菜单)。
- 点击列表。
- 点击要从 Git 代码库中拉取的流水线。
- 在流水线页面上,点击操作 > 从代码库拉取。
REST API
将一组流水线从 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 }
如需轮询拉取操作的状态,请运行以下命令:
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 代码库配置,请按以下步骤操作:
控制台
- 在 Cloud Data Fusion Studio 中 点击“ ” 菜单。
- 点击命名空间管理员。
- 在命名空间管理员页面上,点击源代码控制管理。 标签页。
- 对于要删除的 Git 代码库配置,点击 > 删除。
REST API
删除 Git 代码库配置:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository -X DELETE
将 NAMESPACE_ID 替换为 命名空间。
后续步骤
- 详细了解 使用 GitHub 代码库管理流水线。