阿里云首页 云效2020 相关技术圈

本地代码迁移工具

针对自建服务整体搬站、自建服务不通公网、或者超大代码库或上千个大量代码库迁移的场景,通过本地迁移工具可以方便的将代码库批量导入至 Codeup 指定企业中,轻松完成仓库迁移。

说明

迁移工具包于 2021年11月26日 进行更新,为提升导入速度,建议该日期前下载工具的用户更新下载最新版本使用。

注意

建议导入库地址使用 HTTP 协议,后续将基于 HTTP 协议支持仓库同步能力。

工具使用方法

说明

简单三步,完成代码库批量迁移:

  • 步骤一.下载迁移工具;

  • 步骤二.输入一行命令自动生成期望导入的代码库列表,作为导入的配置文件;

  • 步骤三.输入一行命令,将配置文件涉及的代码库批量推送至 Codeup 指定企业;

一、工具下载地址

下载本地迁移小工具,其原理是根据您在迁移来源平台的权限,自动生成导入代码库文件列表,并自动将列表中所有代码库导入云效的指定企业中。

工具包最近更新时间: 2021.11.26 ,为提升导入效率,建议该日期前下载的用户更新最新版使用:

MacOS ARM 64位

MacOS 64位

Linux 64位

Windows 64位

二、生成导入库列表配置文件

1. 指定来源平台,自动生成库列表文件(可选)

使用该小工具,指定迁移来源平台,自动生成需导入的库列表配置文件。

注意

自动生成配置文件,目前仅支持自建 Gitlab 平台,如需迁移其他平台的代码库,请参见下方「自定义导入库列表」章节。

1)命令格式

codeup repo generate --platform=gitlab --host=your_host --access_token=your_token

2)命令参数说明

查询指定平台的代码库列表,并且在当前目录下生成一个名为repo_list_config的库导入配置文件,每一行为一个导入任务,可实现批量导入。

命令

必选

解释

--platform

平台类型。目前仅支持 Gitlab

--host

平台Host URL

--access_token

指定平台的个人访问令牌。生成参考Access Token 添加说明

--protocol

代码库克隆使用的协议,可选HTTP或SSH,默认HTTP

--max_page

代码库列表最大查询页数,默认100

--membership

是否仅查询有成员关系的代码库,默认为true

--ssh_port

使用ssh协议克隆地址时,指定ssh端口,默认22

注意

对于参数--membership,默认仅生成当前用户为仓库成员的库列表。

针对整站搬迁的场景,用户可能拥有平台Admin权限,但并不属于库成员,此时可将该参数设置为 false,此时会查询所有有读权限的库,而不限于必须有库成员权限。

2. 自定义导入库列表(可选)

手动在当前目录下创建一个名为 repo_list_config 的库导入配置文件,根据配置文件格式自行填入期望导入的库列表,任意有权限的代码库均可,不限仅自建 Gitlab。

3.配置文件格式介绍

导入代码库前,需要使用一个配置文件,可以是通过上诉 1 的小工具自动生成的,也可以手动自定义创建的配置文件,其内容包含:

  • 需要导入的代码库克隆地址

  • 导入至 Codeup 后代码库路径

  • 导入至 Codeup 后代码库可见性

其格式如下,每一行代表一个导入任务:

#库克隆地址,Codeup代码库路径,Codeup代码库可见性
https://gitlab.com/xxxxx/stable.git,xxxxx/stable,10
https://gitlab.com/xxxxx/flutter.git,xxxxx/flutter,10
https://gitlab.com/xxxxx/qwdqwdqwd.git,xxxxx/qwdqwdqwd,0
https://gitlab.com/xxxxx/test-svn1.git,xxxxx/test-svn1,0

每一行包含三列,用英文逗号分隔,以https://gitlab.com/xxxxx/stable.git,xxxxx/stable,10为例:

  • 第一列为克隆地址,支持 http 或 ssh 协议。

注意

1)使用ssh协议需要确保已经配置了ssh-key,本地可以通过ssh克隆该代码库;

2)使用http协议,如果本地没有配置密钥缓存,后续导入过程中每个导入任务开始时需要手动输入克隆账号和克隆密钥。如果想要简化手动流程,可以配置 http 密钥缓存或者将 http 账密添加在克隆地址中解决(如https://username:password@gitlab.com/xxx/xxx.git);

  • 第二列为导入至 Codeup 后的代码库路径。

例中设置为 xxxxx/stable,导入至 Codeup 后访问地址为https://codeup.aliyun.com/org_id/xxxxx/stable

  • 第三列为导入至 Codeup 后代码库的可见性,仅支持0(私有)和10(企业内可见)。

注意

导入代码库时如果提示无法创建可见性为企业可见的代码库,请检查:

1)企业设置中是否允许创建该可见性的代码库或代码组

2)代码库所属组是否已存在,私有代码组下无法创建企业内可见的代码库或代码组

1

三、导入代码库至 Codeup

根据步骤二准备好导入库列表配置文件后,即可开始导入代码库至 Codeup。

1)导入命令

codeup repo import --repo_list_path=path_to_your_config --organization=your_org_id --access_key=your_aliyun_ak --secret_key=your_aliyun_sk --personal_access_token=your_access_token

2)命令参数说明

指定导入库配置云效企业以及阿里云AK信息,将配置文件里的代码库导入至 Codeup。

命令

必选

解释

--repo_list_path

库导入列表文件路径。用于指定导入到Codeup的代码库

--organization

云效企业ID。用于指定导入库到指定企业。快速入门

--access_key

阿里云AK、SK。用于导入代码库之前调用Codeup接口创建空库,该AK所属用户需要有在指定企业(--organization参数)下创建代码库的权限

--secret_key

--personal_access_token

Codeup个人访问令牌,用于推送代码至仓库。

注:在 Codeup 生成个人访问令牌时作用范围需要勾选 repo(代码库的全部读写权限)