通用三方代码平台迁移

本文为您介绍使用Codeup-CLI工具对常见三方平台如Github、Gitee、Coding 、Teambition等提供了代码库 Git数据批量迁移服务,削减企业迁移成本,最小化对业务的影响。

一、前提条件

操作前,请确认工具已安装并运行正常,参见安装本地迁移工具

二、迁移准备

本工具可以帮助您进行三方代码库Git数据的批量迁移,包括源代码、分支、提交、标签信息。

  1. 在正式迁移生产库前,建议使用非正式库进行试迁移,保障配置正确后正式迁移。

  2. 在迁移操作时建议控制三方代码库的库变更和写入行为,一旦仓库迁移成功后,重复迁移不会刷新变更的代码数据,即三方库的新增内容不会更新至Codeup。

三、定义迁移配置文件

  1. 开始迁移前,请输入以下命令,初始化本次迁移所需的配置文件:

    ./codeup-cli init

    此时可以看到配置文件初始化成功的提示:

    demo:workspace my$ ./codeup-cli init
    【提示】 配置文件路径:/Users/my/config.yaml
    【成功】 初始化 config.yaml 成功,路径地址为:/Users/my/config.yaml,请按照帮助文档正确填写配置。
  2. 接着根据提示的路径,打开这个 config.yaml 文件,开始填写源和目标平台的配置参数,用于代码库拉取和导入。

    配置文件字段说明,请填写必填的字段,其中 HTTP 或 SSH 克隆二选一填写,不需要的字段请自行删除

    source - 源平台参数配置

    是否必填

    参数说明

    platform

    必填

    请填写 "common"。

    apiEndpoint

    暂无

    系统预留字段。

    host

    暂无

    系统预留字段。

    accessToken

    暂无

    系统预留字段。

    username

    如用HTTP克隆必填

    三方平台可用于HTTP克隆的用户名。

    password

    如用HTTP克隆必填

    三方平台可用于HTTP克隆的密码。

    *注意GitHub需要用户名/Token,已不支持使用登录密码。

    accessKey

    暂无

    系统预留字段。

    secretKey

    暂无

    系统预留字段。

    orgID

    暂无

    系统预留字段。

    localSSHKeyPath

    如用SSH克隆必填

    三方平台已配置的 SSH key 对应的本地私钥 key 路径,注意填写完整路径,如 /Users/my/.ssh/id_rsa。

    具体路径请根据实际本机私钥存放路径填写。

    asMember

    暂无

    系统预留字段。

    target - 目标平台参数配置

    是否必填

    参数说明

    platform

    必填

    codeup (初始化已配置,请勿修改)。

    apiEndpoint

    必填

    devops.cn-hangzhou.aliyuncs.com(初始化已配置,请勿修改)。

    host

    必填

    codeup.aliyun.com(初始化已配置,请勿修改)。

    accessToken

    必填

    阿里云主账号在 Codeup 的个人访问令牌,需勾选授予权限 write:repo,参见个人访问令牌

    username

    如用HTTP克隆必填

    Codeup 可用于HTTP克隆的用户名。

    password

    如用HTTP克隆必填

    Codeup 可用于HTTP克隆的密码。

    accessKey

    必填

    阿里云的主账号(同时需要作为Codeup目标企业的拥有者)AK (AccessKey ID)参见如何获取

    secretKey

    必填

    阿里云的主账号(同时需要作为Codeup目标企业的拥有者)SK(AccessKey Secret)参见如何获取

    orgID

    必填

    期望迁移到的 Codeup 企业ID,可在云效企业管理后台查看。

    localSSHKeyPath

    如用SSH克隆必填

    Codeup 已配置的 SSH key 对应的本地私钥 key 路径,注意需填写完整路径,如 /Users/my/.ssh/id_rsa。

    具体路径请根据实际本机私钥存放路径填写。

    以 SSH 方式为例,最简的配置文件内容为:

    import:
        source:
            platform: common
            localSSHKeyPath: /Users/my/.ssh/id_rsa
        target:
            platform: codeup
            apiEndpoint: devops.cn-hangzhou.aliyuncs.com
            accessToken: xxxxx
            host: codeup.aliyun.com
            accessKey: xxxxx
            secretKey: xxxxx
            orgID: xxxxx
            localSSHKeyPath: /Users/my/.ssh/id_rsa
        # projectlistpath 指定步骤四里迁移库范围文件路径;
        projectlistpath: projects.csv    、
        # workdir 指定迁移的工作目录路径,迁移完成后将自动清理目录;
        workdir: /Users/my/workspace  

四、定义迁移代码库范围

您需要告知迁移工具要迁移的代码库列表范围,需要一个配置文件。

可以通过以下命令,生成迁移库范围的配置文件,文件需要和步骤三中 projectlistpath 指定的路径一致。

./codeup-cli import --gen project 

命令执行完成后会在当前目录下生成一个projects.csv的配置文件,打开文件,其内容格式是每一行都是[三方代码库全路径],[Codeup代码库相对路径],[Codeup代码库可见性],示例如下:

#GitHub代码库完整路径,Codeup代码库相对路径,Codeup代码库可见性
https://github.com/namesapce/demo.git,namesapce/demo,10

#Gitee代码库完整路径,Codeup代码库相对路径,Codeup代码库可见性
https://gitee.com/namesapce/demo.git,namesapce/demo,10 

#Coding代码库完整路径,Codeup代码库相对路径,Codeup代码库可见性
https://e.coding.net/namesapce/demo.git,namesapce/demo,10 

#Teambition代码库完整路径,Codeup代码库相对路径,Codeup代码库可见性
https://codeup.teambition.com/namesapce/demo.git,namesapce/demo,10 
说明

其中代码库可见性 0 表示公开性为「私有」,10 表示公开性为「企业内公开」。若自定义时输入任意非 0 的数字将被自动转换为 10,即企业内公开。

使用时请将文件中的示例数据删除,替换成实际地址。

至此,您明确了迁移的代码库范围。

五、执行迁移

即将完成迁移,请您确认目前工作目录下2个配置文件(迁移配置文件、代码库范围文件)和存放代码库的文件夹(例如自定义的“repo”)是否已准备完毕:

image

通过以下命令启动执行迁移:

./codeup-cli import --run true 
 # 迁移过程中会展示迁移的细节,如果有问题会显示报错信息
说明
  • 如Git数据迁移失败,该库状态为迁移失败。

  • 若重复执行导入,历史已导入成功的代码库将提示已存在跳过执行,未导入成功的代码库可继续尝试导入。

  • GitHub仓库依据您当前的网络环境,可能存在克隆超时的情况,如遇超时失败,请检查确保本地网络环境连通性后再试。

工具执行完后,如果一切正常,您便可以前往Codeup企业查看已迁移的代码库信息,确认迁移无误。

迁移过程中遇到无法处理的问题,请添加钉钉群咨询技术支持:32027065。