DataWorks 与 Git 深度集成,赋能数据研发新模式。DataWorks 的代码同步及合并功能实现了平台与 Git 仓库的无缝对接。无论是代码的保存还是发布,所有变更都能自动同步至指定的 Git 分支。同时,您也可以轻松地将 Git 分支上的代码修改合并回 DataWorks。
本功能处于邀测阶段,您可提交工单联系技术支持人员开通白名单。
功能概述
DataWorks与Git的集成包含两种流程:
DataWorks到Git的同步:保存或发布DataWorks中的代码时,变更内容将自动提交至Git仓库的保护分支。该过程由专用的Git账户和具备网络访问能力的Serverless资源组自动执行。
Git到DataWorks的合并:将Git仓库的主分支或独立分支的代码变更,合并回DataWorks。
DataWorks在Git仓库中自动创建并管理以下三个分支,并通过分支保护规则防止手动更改:
dataworks_${region}_${projectName}_save:对应在DataWorks中执行保存操作后的代码。dataworks_${region}_${projectName}_release_dev:对应成功发布到开发环境的代码。dataworks_${region}_${projectName}_release_prod:对应成功发布到生产环境的代码。
步骤一:准备云资源与网络环境
代码同步任务依赖Serverless资源组执行,并需通过网络访问Git仓库和OSS。
准备Serverless资源组并配置网络。
准备一个DataWorks的Serverless资源组,并绑定到目标工作空间。
确保该资源组可访问Git服务器的SSH端口(仅支持22端口)。
准备OSS数据源。 代码同步功能使用OSS进行临时存储。
在与DataWorks工作空间相同的地域(Region)下,创建一个OSS Bucket。
在DataWorks工作空间的数据源管理页面,创建一个指向该Bucket的OSS数据源。
说明仅支持使用访问密钥(Access Key)模式的数据源。
步骤二:准备Git环境
在Git平台创建专用账户、配置SSH密钥及设置分支保护规则。
创建Git专用账户并生成SSH密钥。
在Git平台(例如云效、GitLab)创建专用于代码自动提交的账户(例如
dataworks_pusher),并配置有效邮箱。为该账户生成RSA算法模式的SSH密钥对,生成过程中无需设置口令(passphrase)。
目的:生成用于认证的SSH公钥和私钥。
命令:
# 将 "your_user_email@example.com" 替换为上一步中配置的账户邮箱 ssh-keygen -t rsa -C "your_user_email@example.com" # 在提示输入口令时,直接按回车键跳过 # Enter passphrase (empty for no passphrase): [回车] # Enter same passphrase again: [回车]结果:命令执行成功后,在
~/.ssh/目录下生成id_rsa(私钥)和id_rsa.pub(公钥)文件。后续步骤将使用这两个文件的内容。# 复制并保存公钥与私钥内容,后续步骤需要使用 cat ~/.ssh/id_rsa.pub cat ~/.ssh/id_rsa
在Git平台添加公钥。
登录Git平台,在
dataworks_pusher账户的SSH密钥管理页面,添加上一步生成的公钥(id_rsa.pub文件内容)。创建代码仓库并配置分支保护规则。
创建专用于DataWorks代码管理的Git仓库,例如
DataWorks_code。在仓库中设置分支保护规则,确保DataWorks自动管理的分支不被直接修改。此操作需由仓库管理员完成。
重要未正确配置分支保护规则可能导致DataWorks自动管理的分支被意外修改,从而破坏同步一致性。
分支名模式:
dataworks_*允许推送:选择指定成员,并添加
dataworks_pusher账户。允许合并:选择不允许任何人。
步骤三:配置并初始化代码同步
仅支持租户管理员及工作空间管理员设置当前空间的代码同步配置,其他角色无权限新增或者变更该内容。
建立DataWorks工作空间与Git仓库的连接,并启动初始化。

进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的,进入Data Studio。
(可选)连接性测试。正式配置前,可在Data Studio中创建临时Shell节点,使用已准备的Serverless资源组进行调试,以验证网络连通性和SSH私钥的有效性。
测试网络连通性:运行
telnet命令。如果日志显示“Connected to ...”,表示网络连通,网络连通后,即可停止运行。# 替换为您的Git服务器域名或IP,如云效地址:codeup.aliyun.com telnet your_git_server_domain 22以云效为例,当日志出现以下内容,则说明网络已连通,可停止运行任务;否则,需要检查网络配置是否成功。

测试SSH密钥有效性:运行以下脚本。如果日志出现“Welcome to ...”等成功认证信息,表示私钥配置正确。
# SSH私钥是否正确,期望输出“Welcome to xxx,……” # 以下脚本将在一个临时的运行环境中,将您提供的私钥内容写入标准SSH密钥文件(~/.ssh/id_rsa),并以此测试与Git服务器的连接,验证私钥的有效性。 # 将私钥内容编码为Base64 id_rsa_base64=$(cat <<'EOF' | base64 -w 0 # [此处粘贴私钥(id_rsa文件)完整内容] -----BEGIN OPENSSH PRIVATE KEY----- ... -----END OPENSSH PRIVATE KEY----- EOF ) # 在运行环境中重建SSH密钥文件 id_rsa=$(base64 -d <<< "$id_rsa_base64") mkdir ~/.ssh echo "$id_rsa" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub chmod 644 ~/.ssh/id_rsa.pub # 测试SSH连接(将your_git_server_domain替换为您的Git SSH地址,如codeup.aliyun.com) ssh -T git@your_git_server_domain单击运行,以云效为例,若运行日志中出现以下内容,说明该账号的私钥正确。

在左侧导航栏底部单击,进入代码同步页面。配置以下参数:
注意:代码同步页签需开通白名单才能看到。
名称
描述
Git地址
目标Git代码库的SSH地址。
私钥
粘贴步骤二中生成的私钥(
id_rsa文件)的完整内容。重要私钥内容需要包括
-----BEGIN OPENSSH PRIVATE KEY-----和-----END OPENSSH PRIVATE KEY-----。DataWorks OSS 数据源
选择已准备好的OSS数据源。
说明界面若提示:“未授权当前资源组访问OSS数据源权限,去授权”,点击去授权即可。
OSS 存储路径
指定一个OSS路径用于存放代码元数据,例如:
dataworks-workspace-code。DataWorks OSS 通用资源组
选择上文准备的Serverless资源组。
配置完成后,单击开始同步。开启同步后,需要对Git代码库进行初始化。单击初始化,系统将自动在Git仓库中创建DataWorks所需的分支并同步当前工作空间中的代码,可能需要数分钟。
说明关闭同步后,再次开启同步,需要重新初始化。

配置生效后,DataWorks会自动在您的Git仓库中创建并管理以下三个分支,请勿手动创建或修改它们:
dataworks_${region}_${projectName}_save:对应在DataWorks中保存操作的代码。dataworks_${region}_${projectName}_release_dev:对应发布到开发环境成功的代码。dataworks_${region}_${projectName}_release_prod:对应发布到生产环境成功的代码。
此后,在DataWorks中的每一次保存和发布操作,都会自动将相应的代码和配置变更内容同步到Git对应的分支中。
点击默认的save分支,可查看当前工作空间中已保存的节点代码、工作流、目录等信息。

步骤四:验证代码同步
新建数据开发Shell节点,命名为:shell_test。
在代码编辑页中填写如下代码,并单击工具栏的保存按钮。
echo 'Code push test.'登录Git,进入目标代码库,选择save分支,找到shell_test文件夹,可观察到文件夹下存在
shell_test.sh(代码文件)和shell_test.spec.json(调度配置文件)两个文件,单击shell_test.sh可查看到shell_test节点及其代码内容,即为同步成功。
其余两个分支的同步情况,可通过发布节点到相应的环境中验证,发布操作详见:同工作空间发布。
赋能多人协同:支持从 Git 分支反向合并
DataWorks 不仅支持将代码同步至 Git,更实现了强大的反向合并能力。您可以轻松将 Git 远端分支的最新变更合并回 DataWorks 平台。
这不仅包括主同步分支,也完全兼容基于该分支创建的各类特性分支(Feature Branch)。开发者可以遵循主同步分支的开发范式,在独立分支上进行开发、测试与代码审查(Code Review),最终将成熟的代码安全地集成回 DataWorks,赋能专业、高效的团队协同开发。
此功能需要开启同步,支持开发及更高权限的角色。
合并入口
在数据开发Data Studio界面左侧的导航栏,单击
代码合并,进入代码合并界面。合并预览
输入要合并的分支名称后,单击合并预览,系统将比较来源分支与DataWorks默认的
save分支之间的新增,变更,删除的内容。无冲突:界面将展示变更内容的Diff,清晰地列出将被新增、修改或删除的节点及代码改动详情。
有冲突:界面将直接提示冲突,并展示具体的冲突内容。此时您需要返回本地,在Git中手动解决冲突后,再重新发起合并。



确认合并
在预览无误后,单击确认合并。
系统将开始执行合并任务,您可以实时看到合并进度。
所有历史合并记录都会展示在下方的 代码合并历史 区域,您可以随时查看责任人、合并状态和分支明细。

产品计费
涉及的计费资源主要包括:
Serverless资源组:同步任务使用的资源规格为0.5CU,根据购买资源组的计费方式不同,产生的费用也不相同。详见:Serverless资源组计费。
公网NAT网关与EIP:如果Git仓库位于公网,会产生相应的流量费用。详见:NAT 网关计费。
OSS存储:用于存储代码同步数据,按存储容量和请求次数计费。详见:OSS计费概述。
常见问题FAQ
Q: 显示初始化成功,但是Git仓库中未创建分支,怎么办?
A: 请按连接性测试章节,依次排查telnet和ssh连接是否成功。重点检查Serverless资源组的网络配置(NAT网关/VPC)是否正确。
Q: 合并代码时提示冲突,该如何处理?
A: 请在您的本地开发环境中,将DataWorks的save分支 (dataworks_${region}_${projectName}_save) 拉取到本地,与您的开发分支进行合并(git merge或git rebase),解决冲突后,再将您的开发分支推送到远程,最后回到DataWorks页面重新发起合并。