メモ
Enterprise Live Migrations は パブリック プレビュー であり、変更される可能性があります。
ヒント
このガイドに従うと、使用に関する詳細な情報については 、AUTOTITLE を参照できます。 エラーが発生した場合は、 GitHub Enterprise Server から GHE.com へのライブ マイグレーションのトラブルシューティング を参照してください。
前提条件
移行の準備ができていることを確認します。 「GitHub Enterprise Server から GHE.com へのライブ マイグレーションの準備」を参照してください。
1. アクセス トークンを作成する
移行のソースと移行先の両方について、 personal access token (classic) で認証する必要があります。 詳しい手順については、「個人用アクセス トークンを管理する」を参照してください。
次の手順で必要になるので、両方のトークンを書き留めます。
-
次のスコープを使用して、personal access token (classic) で GitHub Enterprise Server を作成します。
repoadmin:orgadmin:repo_hookadmin:org_hook
-
次のスコープを使用して、personal access token (classic) にGHE.comを作成します。
repoworkflowadmin:orgadmin:repo_hookadmin:enterprise
-
GHE.comでターゲット組織にシングル サインオンが適用されている場合は、GHE.com トークンを承認します。
2. 構成 GitHub Enterprise Server
移行を実行する前に、 GitHub Enterprise Server インスタンスで何らかの構成を設定する必要があります。 これらの構成値は、すべての ELM 移行に適用されます。 GitHub Enterprise Serverの開発者は、新しい構成を適用するときに短いダウンタイムが発生する可能性があります。
-
SSH 経由で GitHub Enterprise Server 管理シェルにアクセスします。 「管理シェル (SSH) にアクセスする」を参照してください。
-
`ghe-config`を使用して、次の構成変数を設定します。例えば:
ghe-config app.elm-exporter.enabled trueVariable これを [...] に設定します。 app.elm-exporter.enabledtrueapp.elm.internal-webhooks-enabledtrueapp.elm-exporter.webhooks-loopback-address-enabledtruesecrets.elm-exporter.migration-target-url移行先企業の API URL (例: https://api.octocorp.ghe.com)。 URL の末尾に末尾のスラッシュを含 めないでください 。secrets.elm-exporter.migration-target-tokenGHE.com用に作成したアクセス トークン。 ||
secrets.elm-exporter.source-token| GitHub Enterprise Server用に作成したアクセス トークン。 | |secrets.elm-exporter.source-user| GitHub Enterprise Server トークンに関連付けられているユーザー名 (例:ghe-admin)。 | -
まだ移行が有効で、インスタンスで BLOB ストレージが構成 されていない 場合は、今すぐ構成できます。 既存の設定は、管理コンソールの [移行] セクション (
HOSTNAME/setup/settings) で確認できます。次の既定値を使用できます。これにより、予期しない機能は発生しません。
Shell ghe-config app.migrations.enabled true
ghe-config app.migrations.enabled trueShell ghe-config secrets.migrations.blob-storage-type local-storage
ghe-config secrets.migrations.blob-storage-type local-storage -
構成を適用します。
Shell ghe-config-apply
ghe-config-apply
3. 必要な環境変数を設定する
構成が適用され、移行を開始する前に、必要な環境変数を設定します。 例えば次が挙げられます。
export API_URL='http://localhost:1738'
重要
API_URLとMIGRATION_MANAGER_HMAC_KEYの値を逐語的にコピーします。 その他の変数は、環境に固有です。
| Variable | 必須の値 |
|---|---|
| API_URL | http://localhost:1738 |
| MIGRATION_MANAGER_HMAC_KEY | $(ghe-config secrets.elm-exporter.elm-exporter-hmac-keys) |
| MIGRATION_TARGET_URL | 移行先企業の API URL (例: https://api.octocorp.ghe.com)。 URL の末尾に末尾のスラッシュを含 めないでください 。 |
| MIGRATION_TARGET_TOKEN | のpersonal access token (classic)GHE.com |
これらの値は、任意の elm コマンドで CLI フラグとして指定することもできます。これは、変数よりも優先されます。 たとえば、 --api-url http://localhost:1738と指定します。
4. 移行を作成する
ソース リポジトリとターゲット リポジトリの詳細を指定して、新しい移行を作成します。
--pat-name は静的な値として system-pat に設定する必要があります。 その他の値は、環境に固有のプレースホルダーです。
メモ
target-orgは新規でも既存でもかまいません。 ターゲット組織がまだ存在しない場合は、移行中に作成されます。 ただし、移行元組織の設定は移行されません。
elm migration create \ --source-org EXISTING-GHES-ORG \ --source-repo EXISTING-GHES-REPO \ --target-org GHEC-ORG \ --target-repo NEW-GHEC-REPO \ --target-api GHEC-API-URL \ --pat-name system-pat
elm migration create \
--source-org EXISTING-GHES-ORG \
--source-repo EXISTING-GHES-REPO \
--target-org GHEC-ORG \
--target-repo NEW-GHEC-REPO \
--target-api GHEC-API-URL \
--pat-name system-pat
例えば次が挙げられます。
elm migration create \
--source-org my-ghes-org \
--source-repo my-ghes-repo \
--target-org my-dr-org \
--target-repo my-dr-repo \
--target-api $MIGRATION_TARGET_URL \
--pat-name system-pat
省略可能なフラグ:
--start: 移行をすぐに開始する準備ができた場合。--target-visibility: 移行されたリポジトリは、既定で 内部 可視性を使用して作成されますが、privateを指定できます。
移行 ID を保存する
次のような応答が表示されます。
{
"migrationId": "2b5c9eae-b5da-4306-ab04-2a29cc2b7cb9",
"expiresAt": "2026-02-11T21:49:33.619162159Z"
}
次のコマンドに必要な migrationId を変数としてエクスポートします。 例えば次が挙げられます。
export MIGRATION_ID='2b5c9eae-b5da-4306-ab04-2a29cc2b7cb9'
5. 移行を開始する
まだ移行を開始していない場合は、先ほど保存した移行 ID を使用して移行を開始します。
elm migration start --migration-id $MIGRATION_ID
elm migration start --migration-id $MIGRATION_ID
これにより、バックフィルとライブ更新プロセスが起動します。 ELM は現在、ソース リポジトリからデータを収集し、サポートされている Webhook イベントをリッスンしています。
6. 移行を監視する
移行が開始されると、 GHE.comに新しいリポジトリが表示されます。 移行中は、開発者がソース リポジトリで作業を続ける際に、リポジトリにデータの初期読み込みが入力され、更新プログラムが受信されます。
次のコマンドを定期的に実行して、移行の状態を監視します。 ソースとターゲットの状態の内訳と、移行中のライブ データに関する情報が表示されます。
elm migration status --migration-id $MIGRATION_ID
elm migration status --migration-id $MIGRATION_ID
応答で最も重要なインジケーターは、 combinedState オブジェクトの状態です。 状態が COMBINED_STATUS_READY_FOR_CUTOVERに達すると、次の手順に進む準備が整います。 ただし、個々のリソースの移行に失敗した場合は、 displayMessage でアラートが表示されます。調査が必要な場合があります。
例えば次が挙げられます。
"combinedState": {
"status": "COMBINED_STATUS_READY_FOR_CUTOVER",
"displayMessage": "Ready for cutover (1 resources failed)",
"repositories": [
{
"repositoryNwo": "new-test-org/my-new-repo",
"phase": "REPOSITORY_PHASE_READY_FOR_CUTOVER",
"displayStatus": "Ready for cutover (1 failed)"
}
],
"readyForCutover": true,
"cutoverBlockers": []
},
ヒント:
- 複数の移行を実行している場合は、すべての移行の状態を
elm migration listで確認できます。 このコマンドは、既定で進行中の移行を示しますが、--statusでフィルター処理することもできます。 - 注意が必要なエラー状態が発生した場合は、 GitHub Enterprise Server から GHE.com へのライブ マイグレーションのトラブルシューティング を参照してください。
7. 移行を完了する
カットオーバーに向けて移行準備ができたら、移行を完了できます。 カットオーバー プロセスによってソース リポジトリがロックされ、管理者がロックを解除しない限り、開発者は 完全に使用できなくなります 。
elm migration cutover-to-destination --migration-id $MIGRATION_ID
elm migration cutover-to-destination --migration-id $MIGRATION_ID
引き続き移行を監視します。 応答の上部に MIGRATION_STATUS_COMPLETED の状態が表示されると、移行は完了しますが、 GitHub Enterprise Serverからユーザーにアクセス権を付与するためのフォローアップ タスクがいくつかあります。
次のステップ
ユーザーに新しいリポジトリへのアクセス権を付与し、ユーザー アカウントを使用してアクティビティを調整します。 「GitHub Enterprise Server から GHE.com へのライブ マイグレーションの完了」を参照してください。