远端仓库代码同步
该功能仅旗舰版支持
概述
用户可以通过「代码同步」功能,将离线开发中的项目和远端仓库中的项目进行对接,从而统一进行代码的管理。例如需要将远端仓库上的历史存量代码需要迁移到离线项目中,或是将离线开发中的代码放到远端仓库中维护。都可以尝试使用代码同步功能,来增加代码迁移和管理的效率。目前离线仅支持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的地址,如图所示。
同步账号绑定
代码同步账号支持「个人」和「项目」两种维度进行账号绑定。
如果选择「个人」同步账号,则在当前项目下进行推送和拉取操作时,使用的是个人绑定GitLab账号;如果选择「项目」同步账号,则在当前项目下进行推送和拉取操作时,使用的是项目绑定账号;
个人同步账号绑定
个人账号绑定需要先在「用户中心->用户管理->用户属性自定义」中,新增三个自定义属性名称分别为「gitLabName」「gitLabPassword」「gitLabAccessToken」(需要完全保持一致)。「gitLabPassword」「gitLabAccessToken」打开「密文展示」开关,「gitLabName」「gitLabPassword」「gitLabAccessToken」打开「展示到个人信息页」开关。
自定义属性配置完成后,每个用户都可以在「用户中心->个人信息」中,进行个人同步账号的填写。
账号密码和个人访问令牌仅需填写一种方式即可
在项目中选择填写的「访问方式」,再进行「校验」确认地址和访问方式的连通性。校验通过后,就可以进行「推送」和「拉取」操作
项目同步账号绑定
项目同步账号的配置比较简单,「同步账号」选择项目后,直接在项目中填写所需的访问方式信息并完成校验即可。如下图
项目拉取
在进行项目初始化或者有批量任务需要进行拉取时,可以使用此功能。项目拉取的过程与在IDE中进行GIt的Clone操作相似,只是离线开发中的「拉取」针对离线开发产品进行了更多场景化的处理。
进行拉取操作时,需要选择仓库中具体的分支
选中分支后,会展示两种映射方式「按文件类型配置映射」和「每个文件单独配置映射」。
「按文件类型配置映射」
「按文件类型配置映射」可以用于仓库的任务类型较为单一的场景,如下图所示,每种文件类型支持配置离线任务中对应的一种任务类型,目前支持SQL文件、Python文件、Shell文件的映射配置。
映射类型配置完成后,点击「拉取」按钮,会立即进行远端代码拉取,在离线项目中进行任务的覆盖和新增。
拉取执行逻辑如下
1、远端已有的任务和目录,会全部拉取到离线项目中。
2、先去做目录的拉取,不存在同名目录的新增,存在同名目录跳过。根据远端的目录结构调整顺序,远端没有的目录放在最下方。
3、再去做任务的拉取,新增目录下的任务全部拉取,项目存在同名任务报错。同名目录下存在同名任务,任务内容进行覆盖;同名目录下不同名任务,任务进行新增。
4、任务拉取的过程中如果报错将会拉取失败,并展示失败原因
如下图所示,拉取失败的任务会在下方展示「任务名称」和「错误信息」。
在针对具体的报错文件进行调整后,点击「失败任务重新拉取」,可以重新拉取失败任务。
「每个文件单独配置映射」
「每个文件单独配置映射」可以用于远端仓库中SQL种类较多的场景,可以灵活配置SQL文件对应的任务类型。目前支持解析远端的仓库目录和目录下的SQL文件、Python文件、Shell文件。如下图所示
为了方便用户配置文件对应的任务类型,文件目录下映射类型选择除了首个文件默认为空外,其他文件的映射类型默认为“同上”。如果单个目录下都是同一种任务类型,仅需配置目录的第一个任务即可。
完成映射类型配置后,点击「拉取」按钮执行拉取操作
拉取失败的任务,会在下方展示拉取失败原因。可以点击「失败任务重新拉取」按钮进行重新拉取。
项目推送
需要对项目中的任务进行批量推送时,可以使用此功能。
进行拉取操作时,需要选择仓库中具体的分支,任务范围可以通过「所有任务」或「部分任务」的方式选择。
部分任务支持按照任务目录树或者任务名称模糊查询进行筛选。
提交信息是需要必填,对应的是通常IDE中推送时需要填写的Commit message。
点击「推送」按钮,执行推送操作。如果任务推送失败,则会展示失败原因。
任务层面推送和拉取
当项目设置中的代码同步完成配置,可以在任务中直接进行拉取和推送
如图所示,在IDE中点击「拉取」和「推送」icon,可以对单任务执行推送和拉取。
选取分支后,支持展示当前代码和远端代码对比(去远端找同名文件)。
每次进行「拉取」和「推送」操作前,系统会自动进行保存,避免出现代码丢失的情况,保存记录可以在版本记录中查看。