Skip to main content

远端仓库代码同步

info

该功能仅旗舰版支持

概述

用户可以通过「代码同步」功能,将离线开发中的项目和远端仓库中的项目进行对接,从而统一进行代码的管理。例如需要将远端仓库上的历史存量代码需要迁移到离线项目中,或是将离线开发中的代码放到远端仓库中维护。都可以尝试使用代码同步功能,来增加代码迁移和管理的效率。目前离线仅支持GitLab仓库和BitBucket两种代码仓库。

目前支持GitLab版本12.x和15.x

支持代码同步的任务类型

任务类型拉取推送备注
Shell支持支持
Shell on Agent支持支持
Python只支持web模式开发的任务,不支持资源上传模式只支持web模式开发的任务,不支持资源上传模式
Python on Agent支持只支持web模式开发的任务,不支持资源上传模式只支持web模式开发的任务,不支持资源上传模式
PySpark不支持不支持
Spark SQL支持支持
Hive SQL支持支持
Impala SQL支持支持
Inceptor SQL支持支持
TiDB SQL支持支持
SQL Server支持支持
MySQL支持支持
GreenPlum SQL支持支持
ADB SQL支持支持
Oracle SQL支持支持
GaussDB SQL支持支持
Hana SQL支持支持
StarRocks SQL支持支持
HashData SQL支持支持
Trino SQL支持支持
OushuDB SQL支持支持
数据同步仅脚本模式支持(向导模式无此按钮)仅脚本模式支持(向导模式无此按钮)
HadoopMR不支持不支持
Spark不支持不支持
工作流上述子节点支持(父节点无此按钮)上述子节点支持(父节点无此按钮)仅支持对子节点的推送拉取,工作流父任务不存在推送拉取按钮

GitLab代码同步

在「项目管理->操作设置」中,勾选「代码同步」复选框,再点击「配置」按钮,打开代码同步配置弹窗,选中GitLab仓库,如下图所示。

配置仓库地址

仓库地址需要填写远端GitLab仓库中对应的项目Clone的地址,如图所示。

image-20231016161004849

同步账号绑定

代码同步账号支持「个人」和「项目」两种维度进行账号绑定。

如果选择「个人」同步账号,则在当前项目下进行推送和拉取操作时,使用的是个人绑定GitLab账号;如果选择「项目」同步账号,则在当前项目下进行推送和拉取操作时,使用的是项目绑定账号;

个人同步账号绑定

个人账号绑定需要先在「用户中心->用户管理->用户属性自定义」中,新增三个自定义属性名称分别为「gitLabName」「gitLabPassword」「gitLabAccessToken」(需要完全保持一致)。「gitLabPassword」「gitLabAccessToken」打开「密文展示」开关,「gitLabName」「gitLabPassword」「gitLabAccessToken」打开「展示到个人信息页」开关。

自定义属性配置完成后,每个用户都可以在「用户中心->个人信息」中,进行个人同步账号的填写。

image-20231016162305444

tip

账号密码和个人访问令牌仅需填写一种方式即可

在项目中选择填写的「访问方式」,再进行「校验」确认地址和访问方式的连通性。校验通过后,就可以进行「推送」和「拉取」操作

项目同步账号绑定

项目同步账号的配置比较简单,「同步账号」选择项目后,直接在项目中填写所需的访问方式信息并完成校验即可。如下图

image-20231016162430245

项目拉取

在进行项目初始化或者有批量任务需要进行拉取时,可以使用此功能。项目拉取的过程与在IDE中进行GIt的Clone操作相似,只是离线开发中的「拉取」针对离线开发产品进行了更多场景化的处理。

进行拉取操作时,需要选择仓库中具体的分支

选中分支后,会展示两种映射方式「按文件类型配置映射」和「每个文件单独配置映射」。

「按文件类型配置映射」

「按文件类型配置映射」可以用于仓库的任务类型较为单一的场景,如下图所示,每种文件类型支持配置离线任务中对应的一种任务类型,目前支持SQL文件、Python文件、Shell文件的映射配置。

映射类型配置完成后,点击「拉取」按钮,会立即进行远端代码拉取,在离线项目中进行任务的覆盖和新增。

tip

拉取执行逻辑如下

1、远端已有的任务和目录,会全部拉取到离线项目中。

2、先去做目录的拉取,不存在同名目录的新增,存在同名目录跳过。根据远端的目录结构调整顺序,远端没有的目录放在最下方。

3、再去做任务的拉取,新增目录下的任务全部拉取,项目存在同名任务报错。同名目录下存在同名任务,任务内容进行覆盖;同名目录下不同名任务,任务进行新增。

4、任务拉取的过程中如果报错将会拉取失败,并展示失败原因

如下图所示,拉取失败的任务会在下方展示「任务名称」和「错误信息」。

在针对具体的报错文件进行调整后,点击「失败任务重新拉取」,可以重新拉取失败任务。

「每个文件单独配置映射」

「每个文件单独配置映射」可以用于远端仓库中SQL种类较多的场景,可以灵活配置SQL文件对应的任务类型。目前支持解析远端的仓库目录和目录下的SQL文件、Python文件、Shell文件。如下图所示

为了方便用户配置文件对应的任务类型,文件目录下映射类型选择除了首个文件默认为空外,其他文件的映射类型默认为“同上”。如果单个目录下都是同一种任务类型,仅需配置目录的第一个任务即可。

完成映射类型配置后,点击「拉取」按钮执行拉取操作

拉取失败的任务,会在下方展示拉取失败原因。可以点击「失败任务重新拉取」按钮进行重新拉取。

项目推送

需要对项目中的任务进行批量推送时,可以使用此功能。

进行拉取操作时,需要选择仓库中具体的分支,任务范围可以通过「所有任务」或「部分任务」的方式选择。

部分任务支持按照任务目录树或者任务名称模糊查询进行筛选。

提交信息是需要必填,对应的是通常IDE中推送时需要填写的Commit message。

点击「推送」按钮,执行推送操作。如果任务推送失败,则会展示失败原因。

任务层面推送和拉取

当项目设置中的代码同步完成配置,可以在任务中直接进行拉取和推送

如图所示,在IDE中点击「拉取」和「推送」icon,可以对单任务执行推送和拉取。

选取分支后,支持展示当前代码和远端代码对比(去远端找同名文件)。

每次进行「拉取」和「推送」操作前,系统会自动进行保存,避免出现代码丢失的情况,保存记录可以在版本记录中查看。

image-20231016162513582