Codeup-CLI ツールを使用して、GitHub、Gitee、Coding などのサードパーティのコードリポジトリから Codeup へ Git データをバッチ移行します。これにより、移行コストを削減し、ビジネスへの影響を最小限に抑えることができます。
前提条件
開始する前に、Codeup-CLI ツールが正しくインストールされ、実行されていることを確認してください。詳細については、「移行ツールのインストール」をご参照ください。
事前準備
Codeup-CLI ツールは、ソースコード、ブランチ、コミット、タグなどの Git データをサードパーティのコードリポジトリからバッチ移行します。
本番リポジトリを移行する前に、非本番リポジトリでテスト移行を実行し、設定が正しいことを確認してください。
移行中は、移行元のサードパーティコードリポジトリへの書き込みアクセスを制限してください。リポジトリが正常に移行された後、移行を再実行しても、ソースリポジトリからの新しいコミットは同期されません。
ステップ 1. 設定ファイルの定義
設定ファイルでは、移行元、移行先、および移行範囲を指定します。HTTP クローンまたは SSH クローンのいずれかの認証情報を提供するだけでよく、両方を提供する必要はありません。
ソースパラメーター | 必須 | 説明 |
platform | 必須 | 値を "common" に設定します。 |
username | HTTP クローンを使用する場合に必須 | サードパーティプラットフォームでの HTTP クローン用のユーザー名です。 |
password | HTTP クローンを使用する場合に必須 | サードパーティプラットフォームでの HTTP クローン用のパスワードです。 注:GitHub の場合、認証には個人アクセストークンを使用する必要があります。パスワードベースの認証はサポートされなくなりました。 |
localSSHKeyPath | SSH クローンを使用する場合に必須 | サードパーティプラットフォームで設定された SSH キーに対応するローカルプライベートキーへのフルパスです。例: |
ターゲットパラメーター | 必須 | 説明 |
host | 必須 | Alibaba Cloud DevOps のドメイン名です。例: |
accessKey | 必須 | コードリポジトリおよびコードグループの 読み取り/書き込み権限を持つ 有効な個人アクセストークンです。詳細については、「個人アクセストークンの取得」をご参照ください。 |
username | HTTP クローンに必須 | Codeup での HTTP クローン用のユーザー名です。 中央サイトの場合、ユーザー名は で設定します。リージョンサイトの場合、ユーザー名は で確認します。 |
password | HTTP クローンに必須 | Codeup での HTTP クローン用のパスワードです。 中央サイトの場合、パスワードは で設定します。リージョンサイトの場合、 で設定します。パスワードを設定できない場合は、代わりに [個人アクセストークン] を使用できます。 |
localSSHKeyPath | SSH クローンに必須 | Codeup で設定された SSH キーに対応するローカルプライベートキーへのフルパスです。例: |
次のコードは、SSH 認証を使用する簡略化された config.yaml ファイルの例を示しています。
# 必須。設定ファイルのバージョンです。"v2" に設定します。
version: "v2"
import:
source:
platform: "common"
localSSHKeyPath: "/Users/****/.ssh/id_rsa"
target:
# Alibaba Cloud DevOps のドメイン名。
host: "https://***.devops.alibabacloudcs.com"
# 個人アクセストークン。このトークンには、コードリポジトリおよびコードグループの読み取り/書き込み権限が必要です。
accessKey: "pt-******03GFpdmIedUgug****_******-3734-484a-9b4b-248569f78c9d"
localSSHKeyPath: "/Users/****/.ssh/id_rsa"
# ステップ 2 で定義する移行範囲ファイルのパス。
projectListPath: "/Users/****/workspace/projects.csv"
# 移行用の作業ディレクトリ。移行完了後、このディレクトリは自動的にクリアされます。
workDir: "/Users/****/workspace" ステップ 2. 移行範囲の定義
移行するコードリポジトリのリストを指定するファイルを作成します。
次のコマンドを実行して、移行範囲のテンプレートファイルを生成します。このファイルのパスは、ステップ 1 の projectListPath で指定したパスと一致させる必要があります。
./codeup-cli import --gen projectこのコマンドを実行すると、現在のディレクトリに projects.csv ファイルが生成されます。このファイルの各行は、移行するリポジトリを指定するもので、「ソースリポジトリの完全な URL,Codeup でのターゲットリポジトリの相対パス,リポジトリの可視性」という形式に従います。以下に例を示します。
# <ソースリポジトリの完全な URL>,,<リポジトリの可視性>
https://github.com/namesapce/demo.git,namesapce/demo,10
# <ソースリポジトリの完全な URL>,,<リポジトリの可視性>
https://gitee.com/namesapce/demo.git,namesapce/demo,10
# <ソースリポジトリの完全な URL>,,<リポジトリの可視性>
https://e.coding.net/namesapce/demo.git,namesapce/demo,10
リポジトリの可視性について、0 は プライベート を示し、10 は 組織内公開 を示します。その他の値はすべて、デフォルトで 10 (組織内公開) になります。
移行を実行する前に、ファイルからサンプルエントリを削除し、実際のリポジトリ情報に置き換えてください。
ステップ 3. 移行の実行
作業ディレクトリに設定ファイルと移行範囲ファイルを準備した後、次のコマンドを実行して移行を開始してください。
./codeup-cli import --run true --config=./config.yaml
# 出力には、移行の進捗状況とエラーが表示されます。リポジトリの移行が失敗した場合、ツールのステータスは「失敗」になります。
インポートコマンドを再度実行すると、ツールは正常に移行されたリポジトリをスキップし、失敗したリポジトリのみを再試行します。
ネットワークの問題により、GitHub からの移行がタイムアウトすることがあります。タイムアウトエラーが発生した場合は、ネットワーク接続を確認して再試行してください。
ツールが終了したら、Codeup 組織で移行されたリポジトリを表示して、移行が成功したことを確認してください。
解決できない問題については、DingTalk サポートグループ (ID: 32027065) にご参加ください。