本页介绍了如何通过 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 代码库同步
如需获得使用源代码管理功能所需的权限,请让您的管理员为您授予项目的以下任一预定义角色:
配置源代码控制库:
- Cloud Data Fusion 操作员 (
roles/datafusion.operator
) - Cloud Data Fusion Editor (
roles/datafusion.editor
) - Cloud Data Fusion Admin (
roles/datafusion.admin
)
- Cloud Data Fusion 操作员 (
使用命名空间中的推送或拉取操作同步流水线:
- Cloud Data Fusion 操作员 (
roles/datafusion.operator
) - Cloud Data Fusion Developer (
roles/datafusion.developer
) - Cloud Data Fusion Editor (
roles/datafusion.editor
) - Cloud Data Fusion Admin (
roles/datafusion.admin
)
- Cloud Data Fusion 操作员 (
如需详细了解如何授予角色,请参阅管理访问权限。
您也可以通过其他预定义角色来获取所需的权限。
设置 Git 代码库
如需在 GitHub 中创建 Git 代码库,请按照创建代码库中所述的说明操作。
如需详细了解 GitHub 和其他版本控制系统中的个人访问令牌,请参阅以下页面:
将 Git 代码库与 Cloud Data Fusion 相关联
借助 Cloud Data Fusion,您可以在每个命名空间的“源代码管理”标签页中配置和连接 Git 代码库。如需将命名空间与 Git 代码库相关联,请按以下步骤操作:
控制台
- 在 Cloud Data Fusion Studio 中,点击 Menu(菜单)。
- 点击命名空间管理员。
- 在 Namespace admin 页面上,点击 Source Control Management 标签页。
- 点击关联代码库。
输入以下详细信息:
- 提供方:选择 Git 服务提供方,例如 GitHub 或 GitLab。
- 代码库网址:输入可访问代码库的网址。对于 GitHub,代码库网址为
https://github.com/HOST/REPO
。 - 默认分支(可选):输入 Git 的初始分支。此分支可以与 GitHub 上配置的默认分支不同。无论 GitHub 上的默认分支如何,此分支都用于同步流水线。
- 路径前缀(可选):为保存在 Git 代码库中的流水线名称输入前缀。例如,如果您的流水线名称为
DataFusionQuickStart
,并且您将前缀指定为namespaceName
,则流水线会在 Git 代码库中保存为namespaceName/DataFusionQuickStart
。 - 身份验证类型:Cloud Data Fusion 允许您使用个性化访问令牌作为身份验证类型。系统会自动选择此选项。
- 令牌名称:输入可与令牌相关联的名称。
- 令牌:输入 GitHub 代码库提供的令牌。
- 可选:用户名:输入令牌的用户名或所有者。
点击验证。等待系统验证连接。
配置完成后,点击保存并关闭以确认配置。
REST API
在 Cloud Data Fusion 中创建一个包含个人访问令牌的 Secret 密钥。
运行以下命令:
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 的个人访问令牌。
运行以下命令:
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 代码库,请按以下步骤操作:
控制台
- 在 Cloud Data Fusion Studio 中,点击 Menu(菜单)。
- 点击命名空间管理员。
- 在 Namespace admin 页面上,点击 Source Control Management 标签页。
- 找到要与之同步的 Git 代码库,然后点击同步流水线。
- 点击命名空间流水线标签页。
搜索并选择要推送到 Git 代码库的流水线。
如果最新版本的流水线被推送到或从 Git 代码库中拉取,已连接到 Git 状态会显示
Connected
。如果流水线从未推送到 GitHub,已连接到 Git 状态会显示为空白 (-
)。如果您部署了已与 Git 代码库同步的较新版本的流水线,已连接到 Git 状态会从
Connected
更改为空白 (-
)。点击推送到代码库。
输入提交消息,然后点击确定。
推送操作随即开始,系统会显示一条消息,指明所选的流水线正在推送到远程代码库。
推送操作成功完成后,系统会显示一条成功消息,指明已推送到远程代码库的流水线数量。
如果推送操作失败,请在 GitHub 中检查流水线,确认其是否为最新版本。对于每次推送操作失败,系统都会显示一条错误消息。如需查看错误的详细信息,请展开错误消息。
您还可以从流水线设计工作室将单个流水线推送到 Git 代码库:
- 在 Cloud Data Fusion Studio 中,点击 Menu(菜单)。
- 点击列表。
- 点击要推送到 Git 代码库的流水线。
- 在“流水线”页面上,依次点击操作 > 推送到代码库。
- 输入提交消息,然后点击 OK。
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 提交的提交消息。
响应包含推送操作的 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(菜单)。
- 点击命名空间管理员。
- 在 Namespace admin 页面上,点击 Source Control Management 标签页。
- 找到要与之同步的 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 中,点击 Menu(菜单)。
- 点击命名空间管理员。
- 在 Namespace admin 页面上,点击 Source Control Management 标签页。
- 对于要删除的 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。
后续步骤
- 不妨详细了解如何使用 GitHub 代码库管理流水线。