Skip to main content

GitHub Enterprise Server から移行データをエクスポートする

プラットフォームの変更、およびトライアルインスタンスから本番インスタンスに移行するには、インスタンスを準備して、リポジトリをロックし、移行アーカイブを生成することで、GitHub Enterprise Server インスタンスから移行データをエクスポートできます。

GitHub Enterprise Server ソースインスタンスを準備する

  1. GitHub Enterprise Server ソースのサイト管理者であることを確認します。 これを行う最善の方法は、インスタンスに SSH 接続できることを確認することです。

  2. GitHub Enterprise Server ソースインスタンス上での repo および admin:org スコープを使用してアクセス トークンを生成する

  3. ダウンタイムを最小化するには、ソースインスタンスからエクスポートしたいリポジトリのリストを作成してください。 各行にそれぞれのリポジトリのURLをリストアップしたテキストファイルを使えば、複数のリポジトリをエクスポートに一度に追加できます。

GitHub Enterprise Server ソースリポジトリをエクスポートする

注: リポジトリをロックすると、リポジトリへのすべての書き込みアクセスができなくなります。 ロックされたリポジトリには、新しいTeamやコラボレータを関連づけることはできません。

トライアル実行をしているなら、リポジトリをロックする必要はありません。 使用中のリポジトリからデータを移行する場合、GitHub はリポジトリをロックすることを強くお勧めします。 詳しくは、「ghe-migrator について」を参照してください。

  1. お使いの GitHub Enterprise Server インスタンス に SSH で接続します。 インスタンスが複数のノードで構成されている場合は (高可用性や geo レプリケーションが構成されている場合など)、プライマリ ノードに SSH 接続します。 クラスターを使用する場合は、任意のノードに SSH 接続できます。 HOSTNAME をインスタンスのホスト名、またはノードのホスト名または IP アドレスに置き換えます。 詳しくは、「管理シェル (SSH) にアクセスする」を参照してください。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. エクスポート用のリポジトリを準備するには、リポジトリの URL を指定して ghe-migrator add コマンドを使用します。

    • リポジトリをロックしている場合は、このコマンドに --lock を追加します。 テスト実行を行っている場合は、--lock は必要ありません。

      ghe-migrator add https://HOSTNAME/USERNAME/REPO-NAME --lock
      
    • 添付ファイルを除外するには、このコマンドに --exclude_attachments を追加します。 添付ファイルは大きくなる場合があり、最終的なマイグレーションアーカイブを不必要に膨らませてしまう場合があります。

    • エクスポート用に一度に複数のリポジトリを準備するには、各リポジトリ URL を 1 行ずつ記載したテキスト ファイルを作成し、-i フラグとそのテキスト ファイルのパスを指定して ghe-migrator add コマンドを実行します。

      ghe-migrator add -i PATH/TO/YOUR/REPOSITORY_URL.txt
      
  3. 入力を求められたら、GitHub Enterprise Server ユーザ名を入力します:

    Enter username authorized for migration:  admin
    
  4. personal access tokenの入力を求められたら、「GitHub Enterprise Server ソース インスタンスを準備する」で作成したアクセス トークンを入力します。

    Enter personal access token:  **************
    
  5. ghe-migrator add が終了すると、このエクスポートを識別するために生成された一意の "移行 GUID" と、エクスポートに追加されたリソースのリストが出力されます。 後続の ghe-migrator add および ghe-migrator export の手順で生成された移行 GUID を使用して、ghe-migrator に同じエクスポートでの操作を続行するように指示します。

    > 101 models added to export
    > Migration GUID: EXAMPLE-MIGRATION-GUID
    > Number of records in this migration:
    > users                        |  5
    > organizations                |  1
    > repositories                 |  1
    > teams                        |  3
    > protected_branches           |  1
    > pull_request_reviews         |  1
    > milestones                   |  1
    > issues                       |  3
    > pull_requests                |  5
    > pull_request_review_comments |  4
    > commit_comments              |  2
    > issue_comments               | 10
    > issue_events                 | 63
    > releases                     |  3
    > attachments                  |  4
    > projects                     |  2
    

    既存の移行GUIDに対して新しいリポジトリを追加するたびに、既存のエクスポートが更新されます。 移行 GUID なしで ghe-migrator add を再度実行すると、新しいエクスポートが開始され、新しい移行 GUID が生成されます。 インポート用の移行の準備を開始するときに、エクスポート中に生成された移行 GUID を再利用しないでください。

  6. 同じエクスポートにさらにリポジトリを追加するには、-g フラグを指定して ghe-migrator add コマンドを使用します。 これで新しいリポジトリの URL とステップ 5 の移行 GUID を渡します。

    ghe-migrator add https://HOSTNAME/USERNAME/OTHER-REPO-NAME -g MIGRATION-GUID --lock
    
  7. リポジトリの追加が完了したら、-g フラグと手順 5 の移行 GUID を指定した ghe-migrator export コマンドを使用して移行アーカイブを生成します。

    $ ghe-migrator export -g MIGRATION-GUID
    > Archive saved to: /data/github/current/tmp/MIGRATION-GUID.tar.gz
    
    • 移行ファイルをステージングする場所を指定するには、--staging-path=/full/staging/path を使用してコマンドを追加します。 既定値は /data/user/tmp です。
  8. お使いの GitHub Enterprise Server インスタンス への接続を閉じます。

    $ exit
    > logout
    > Connection to HOSTNAME closed.
    
  9. scp コマンドを使用して、移行アーカイブをお使いのコンピューターにコピーします。 アーカイブファイルの名前には移行GUIDが含まれます。

    scp -P 122 admin@HOSTNAME:/data/github/current/tmp/MIGRATION-GUID.tar.gz ~/Desktop
    
  10. GitHub Enterprise Server インスタンスにインポートするためにアーカイブされた移行データを準備するには、「GitHub エンタープライズServer にデータを移行する」を参照してください。