Skip to main content

Enterprise Server 3.21 は、現在リリース候補として使用できます。

Enterprise Live Migrations を使用したリポジトリの移行

ダウンタイムを最小限に抑えて、 GitHub Enterprise Server から GHE.com に移行します。

この機能を使用できるユーザーについて

Site administrators on GitHub Enterprise Server who are also enterprise owners on GHE.com.

ELM を使用するには、サポートされている GitHub Enterprise Server パッチ リリースにアップグレードします。

最小バージョン: 3.20.23.19.63.18.93.17.15

メモ

Enterprise Live Migrations は パブリック プレビュー であり、変更される可能性があります。

ヒント

このガイドに従うと、使用に関する詳細な情報については 、AUTOTITLE を参照できます。 エラーが発生した場合は、 GitHub Enterprise Server から GHE.com へのライブ マイグレーションのトラブルシューティング を参照してください。

前提条件

移行の準備ができていることを確認します。 「GitHub Enterprise Server から GHE.com へのライブ マイグレーションの準備」を参照してください。

1. アクセス トークンを作成する

移行のソースと移行先の両方について、 personal access token (classic) で認証する必要があります。 詳しい手順については、「個人用アクセス トークンを管理する」を参照してください。

次の手順で必要になるので、両方のトークンを書き留めます

  1. 次のスコープを使用して、personal access token (classic) で GitHub Enterprise Server を作成します。

    • repo
    • admin:org
    • admin:repo_hook
    • admin:org_hook
  2. 次のスコープを使用して、personal access token (classic) にGHE.comを作成します。

    • repo
    • workflow
    • admin:org
    • admin:repo_hook
    • admin:enterprise
  3.        GHE.comでターゲット組織にシングル サインオンが適用されている場合は、GHE.com トークンを承認します。
    

2. 構成 GitHub Enterprise Server

移行を実行する前に、 GitHub Enterprise Server インスタンスで何らかの構成を設定する必要があります。 これらの構成値は、すべての ELM 移行に適用されます。 GitHub Enterprise Serverの開発者は、新しい構成を適用するときに短いダウンタイムが発生する可能性があります。

  1. SSH 経由で GitHub Enterprise Server 管理シェルにアクセスします。 「管理シェル (SSH) にアクセスする」を参照してください。

  2.        `ghe-config`を使用して、次の構成変数を設定します。
    

    例えば: ghe-config app.elm-exporter.enabled true

    Variableこれを [...] に設定します。
    app.elm-exporter.enabledtrue
    app.elm.internal-webhooks-enabledtrue
    app.elm-exporter.webhooks-loopback-address-enabledtrue
    secrets.elm-exporter.migration-target-url移行先企業の API URL (例: https://api.octocorp.ghe.com)。 URL の末尾に末尾のスラッシュを含 めないでください
    secrets.elm-exporter.migration-target-token
           GHE.com用に作成したアクセス トークン。 |
    

    | secrets.elm-exporter.source-token | GitHub Enterprise Server用に作成したアクセス トークン。 | | secrets.elm-exporter.source-user | GitHub Enterprise Server トークンに関連付けられているユーザー名 (例: ghe-admin)。 |

  3. まだ移行が有効で、インスタンスで BLOB ストレージが構成 されていない 場合は、今すぐ構成できます。 既存の設定は、管理コンソールの [移行] セクション (HOSTNAME/setup/settings) で確認できます。

    次の既定値を使用できます。これにより、予期しない機能は発生しません。

    Shell
    ghe-config app.migrations.enabled true
    
    Shell
    ghe-config secrets.migrations.blob-storage-type local-storage
    
  4. 構成を適用します。

    Shell
    ghe-config-apply
    

3. 必要な環境変数を設定する

構成が適用され、移行を開始する前に、必要な環境変数を設定します。 例えば次が挙げられます。

export API_URL='http://localhost:1738'

重要

API_URLMIGRATION_MANAGER_HMAC_KEYの値を逐語的にコピーします。 その他の変数は、環境に固有です。

Variable必須の値
API_URLhttp://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は新規でも既存でもかまいません。 ターゲット組織がまだ存在しない場合は、移行中に作成されます。 ただし、移行元組織の設定は移行されません。

Shell
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 を使用して移行を開始します。

Shell
elm migration start --migration-id $MIGRATION_ID

これにより、バックフィルとライブ更新プロセスが起動します。 ELM は現在、ソース リポジトリからデータを収集し、サポートされている Webhook イベントをリッスンしています。

6. 移行を監視する

移行が開始されると、 GHE.comに新しいリポジトリが表示されます。 移行中は、開発者がソース リポジトリで作業を続ける際に、リポジトリにデータの初期読み込みが入力され、更新プログラムが受信されます。

次のコマンドを定期的に実行して、移行の状態を監視します。 ソースとターゲットの状態の内訳と、移行中のライブ データに関する情報が表示されます。

Shell
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":  []
  },

ヒント:

7. 移行を完了する

カットオーバーに向けて移行準備ができたら、移行を完了できます。 カットオーバー プロセスによってソース リポジトリがロックされ、管理者がロックを解除しない限り、開発者は 完全に使用できなくなります

Shell
elm migration cutover-to-destination --migration-id $MIGRATION_ID

引き続き移行を監視します。 応答の上部に MIGRATION_STATUS_COMPLETED の状態が表示されると、移行は完了しますが、 GitHub Enterprise Serverからユーザーにアクセス権を付与するためのフォローアップ タスクがいくつかあります。

次のステップ

ユーザーに新しいリポジトリへのアクセス権を付与し、ユーザー アカウントを使用してアクティビティを調整します。 「GitHub Enterprise Server から GHE.com へのライブ マイグレーションの完了」を参照してください。