通用三方代碼平臺(tái)遷移
本文為您介紹使用Codeup-CLI工具對(duì)常見(jiàn)三方平臺(tái)如Github、Gitee、Coding 、Teambition等提供了代碼庫(kù) Git數(shù)據(jù)批量遷移服務(wù),削減企業(yè)遷移成本,最小化對(duì)業(yè)務(wù)的影響。
一、前提條件
操作前,請(qǐng)確認(rèn)工具已安裝并運(yùn)行正常,參見(jiàn)安裝本地遷移工具。
二、遷移準(zhǔn)備
本工具可以幫助您進(jìn)行三方代碼庫(kù)Git數(shù)據(jù)的批量遷移,包括源代碼、分支、提交、標(biāo)簽信息。
在正式遷移生產(chǎn)庫(kù)前,建議使用非正式庫(kù)進(jìn)行試遷移,保障配置正確后正式遷移。
在遷移操作時(shí)建議控制三方代碼庫(kù)的庫(kù)變更和寫(xiě)入行為,一旦倉(cāng)庫(kù)遷移成功后,重復(fù)遷移不會(huì)刷新變更的代碼數(shù)據(jù),即三方庫(kù)的新增內(nèi)容不會(huì)更新至Codeup。
三、定義遷移配置文件
開(kāi)始遷移前,請(qǐng)輸入以下命令,初始化本次遷移所需的配置文件:
./codeup-cli init
此時(shí)可以看到配置文件初始化成功的提示:
demo:workspace my$ ./codeup-cli init 【提示】 配置文件路徑:/Users/my/config.yaml 【成功】 初始化 config.yaml 成功,路徑地址為:/Users/my/config.yaml,請(qǐng)按照幫助文檔正確填寫(xiě)配置。
接著根據(jù)提示的路徑,打開(kāi)這個(gè) config.yaml 文件,開(kāi)始填寫(xiě)源和目標(biāo)平臺(tái)的配置參數(shù),用于代碼庫(kù)拉取和導(dǎo)入。
配置文件字段說(shuō)明,請(qǐng)?zhí)顚?xiě)必填的字段,其中 HTTP 或 SSH 克隆二選一填寫(xiě),不需要的字段請(qǐng)自行刪除:
source - 源平臺(tái)參數(shù)配置
是否必填
參數(shù)說(shuō)明
platform
必填
請(qǐng)?zhí)顚?xiě) "common"。
apiEndpoint
暫無(wú)
系統(tǒng)預(yù)留字段。
host
暫無(wú)
系統(tǒng)預(yù)留字段。
accessToken
暫無(wú)
系統(tǒng)預(yù)留字段。
username
如用HTTP克隆必填
三方平臺(tái)可用于HTTP克隆的用戶名。
password
如用HTTP克隆必填
三方平臺(tái)可用于HTTP克隆的密碼。
*注意GitHub需要用戶名/Token,已不支持使用登錄密碼。
accessKey
暫無(wú)
系統(tǒng)預(yù)留字段。
secretKey
暫無(wú)
系統(tǒng)預(yù)留字段。
orgID
暫無(wú)
系統(tǒng)預(yù)留字段。
localSSHKeyPath
如用SSH克隆必填
三方平臺(tái)已配置的 SSH key 對(duì)應(yīng)的本地私鑰 key 路徑,注意填寫(xiě)完整路徑,如 /Users/my/.ssh/id_rsa。
具體路徑請(qǐng)根據(jù)實(shí)際本機(jī)私鑰存放路徑填寫(xiě)。
asMember
暫無(wú)
系統(tǒng)預(yù)留字段。
target - 目標(biāo)平臺(tái)參數(shù)配置
是否必填
參數(shù)說(shuō)明
platform
必填
codeup (初始化已配置,請(qǐng)勿修改)。
apiEndpoint
必填
devops.cn-hangzhou.aliyuncs.com(初始化已配置,請(qǐng)勿修改)。
host
必填
codeup.aliyun.com(初始化已配置,請(qǐng)勿修改)。
accessToken
必填
阿里云主賬號(hào)在 Codeup 的個(gè)人訪問(wèn)令牌,需勾選授予權(quán)限 write:repo,參見(jiàn)個(gè)人訪問(wèn)令牌。
username
如用HTTP克隆必填
Codeup 可用于HTTP克隆的用戶名。
password
如用HTTP克隆必填
Codeup 可用于HTTP克隆的密碼。
accessKey
必填
阿里云的主賬號(hào)(同時(shí)需要作為Codeup目標(biāo)企業(yè)的擁有者)AK (AccessKey ID)參見(jiàn)如何獲取。
secretKey
必填
阿里云的主賬號(hào)(同時(shí)需要作為Codeup目標(biāo)企業(yè)的擁有者)SK(AccessKey Secret)參見(jiàn)如何獲取。
orgID
必填
期望遷移到的 Codeup 企業(yè)ID,可在云效企業(yè)管理后臺(tái)查看。
localSSHKeyPath
如用SSH克隆必填
Codeup 已配置的 SSH key 對(duì)應(yīng)的本地私鑰 key 路徑,注意需填寫(xiě)完整路徑,如 /Users/my/.ssh/id_rsa。
具體路徑請(qǐng)根據(jù)實(shí)際本機(jī)私鑰存放路徑填寫(xiě)。
以 SSH 方式為例,最簡(jiǎn)的配置文件內(nèi)容為:
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 指定步驟四里遷移庫(kù)范圍文件路徑; projectlistpath: projects.csv 、 # workdir 指定遷移的工作目錄路徑,遷移完成后將自動(dòng)清理目錄; workdir: /Users/my/workspace
四、定義遷移代碼庫(kù)范圍
您需要告知遷移工具要遷移的代碼庫(kù)列表范圍,需要一個(gè)配置文件。
可以通過(guò)以下命令,生成遷移庫(kù)范圍的配置文件,文件需要和步驟三中 projectlistpath
指定的路徑一致。
./codeup-cli import --gen project
命令執(zhí)行完成后會(huì)在當(dāng)前目錄下生成一個(gè)projects.csv的配置文件,打開(kāi)文件,其內(nèi)容格式是每一行都是[三方代碼庫(kù)全路徑],[Codeup代碼庫(kù)相對(duì)路徑],[Codeup代碼庫(kù)可見(jiàn)性],示例如下:
#GitHub代碼庫(kù)完整路徑,Codeup代碼庫(kù)相對(duì)路徑,Codeup代碼庫(kù)可見(jiàn)性
https://github.com/namesapce/demo.git,namesapce/demo,10
#Gitee代碼庫(kù)完整路徑,Codeup代碼庫(kù)相對(duì)路徑,Codeup代碼庫(kù)可見(jiàn)性
https://gitee.com/namesapce/demo.git,namesapce/demo,10
#Coding代碼庫(kù)完整路徑,Codeup代碼庫(kù)相對(duì)路徑,Codeup代碼庫(kù)可見(jiàn)性
https://e.coding.net/namesapce/demo.git,namesapce/demo,10
#Teambition代碼庫(kù)完整路徑,Codeup代碼庫(kù)相對(duì)路徑,Codeup代碼庫(kù)可見(jiàn)性
https://codeup.teambition.com/namesapce/demo.git,namesapce/demo,10
其中代碼庫(kù)可見(jiàn)性 0 表示公開(kāi)性為「私有」,10 表示公開(kāi)性為「企業(yè)內(nèi)公開(kāi)」。若自定義時(shí)輸入任意非 0 的數(shù)字將被自動(dòng)轉(zhuǎn)換為 10,即企業(yè)內(nèi)公開(kāi)。
使用時(shí)請(qǐng)將文件中的示例數(shù)據(jù)刪除,替換成實(shí)際地址。
至此,您明確了遷移的代碼庫(kù)范圍。
五、執(zhí)行遷移
即將完成遷移,請(qǐng)您確認(rèn)目前工作目錄下2個(gè)配置文件(遷移配置文件、代碼庫(kù)范圍文件)和存放代碼庫(kù)的文件夾(例如自定義的“repo”)是否已準(zhǔn)備完畢:
通過(guò)以下命令啟動(dòng)執(zhí)行遷移:
./codeup-cli import --run true
# 遷移過(guò)程中會(huì)展示遷移的細(xì)節(jié),如果有問(wèn)題會(huì)顯示報(bào)錯(cuò)信息
如Git數(shù)據(jù)遷移失敗,該庫(kù)狀態(tài)為遷移失敗。
若重復(fù)執(zhí)行導(dǎo)入,歷史已導(dǎo)入成功的代碼庫(kù)將提示已存在跳過(guò)執(zhí)行,未導(dǎo)入成功的代碼庫(kù)可繼續(xù)嘗試導(dǎo)入。
GitHub倉(cāng)庫(kù)依據(jù)您當(dāng)前的網(wǎng)絡(luò)環(huán)境,可能存在克隆超時(shí)的情況,如遇超時(shí)失敗,請(qǐng)檢查確保本地網(wǎng)絡(luò)環(huán)境連通性后再試。
工具執(zhí)行完后,如果一切正常,您便可以前往Codeup企業(yè)查看已遷移的代碼庫(kù)信息,確認(rèn)遷移無(wú)誤。
遷移過(guò)程中遇到無(wú)法處理的問(wèn)題,請(qǐng)?zhí)砑俞斸斎鹤稍兗夹g(shù)支持:32027065。