Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となりました: 2023-09-25. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise サーバーにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

GitHub Enterprise Server にデータを移行する

移行アーカイブを作成すると、ターゲットの GitHub Enterprise Server インスタンスにデータをインポートできます。 変更を恒久的にターゲットのインスタンスに適用する前に、潜在的なコンフリクトがないか変更をレビューできます。

インポートしたデータを GitHub Enterprise Server に適用する

データを GitHub Enterprise Server に移行するには、事前にデータを準備し、競合を解決する必要があります。 詳しくは、「GitHub Enterprise Server へのデータ移行の準備」を参照してください。

データを準備して競合を解決したら、インポートしたデータを GitHub Enterprise Server に適用できます。

  1. サイト管理者として、ターゲットの GitHub Enterprise Server インスタンスに SSH で接続します
ssh -p 122 admin@HOSTNAME
  1. ghe-migrator import コマンドを使用して、インポート プロセスを開始します。 必要なものは次のとおりです。

    $ ghe-migrator import /home/admin/MIGRATION-GUID.tar.gz -g MIGRATION-GUID -u USERNAME -p TOKEN
    
    > Starting GitHub::Migrator
    > Import 100% complete /
    
    • 移行ファイルをステージングする場所を指定するには、--staging-path=/full/staging/path を使用してコマンドを追加します。 既定値は /data/user/tmp です。

移行データのレビュー

既定では、ghe-migrator audit はすべてのレコードを返します。 また、以下の条件でレコードをフィルタリングすることもできます。

  • レコードのタイプ。
  • レコードの状態。

レコードの種類は、移行されたデータで見つかったものと一致します。

レコードタイプのフィルタ

レコード タイプフィルター名
ユーザーuser
組織organization
リポジトリrepository
Teamsteam
マイルストーンmilestone
プロジェクトボードproject
発行issue
Issueのコメントissue_comment
Pull Requestpull_request
プルリクエストのレビューpull_request_review
コミットのコメントcommit_comment
プルリクエストのレビューのコメントpull_request_review_comment
リリースrelease
プルリクエストあるいはIssueに対して行われたアクションissue_event
保護されたブランチprotected_branch

レコードの状態フィルタ

レコードの状態説明
exportレコードはエクスポートされます。
importレコードはインポートされます。
mapレコードはマップされます。
renameレコードの名前が変更されます。
mergeレコードはマージされます。
exportedレコードはエクスポートに成功しました。
importedレコードはインポートに成功しました。
mappedレコードはマップに成功しました。
renamedレコードの名前の変更に成功しました。
mergedレコードはマージに成功しました。
failed_exportレコードはエクスポートに失敗しました。
failed_importレコードはインポートに失敗しました。
failed_mapレコードはマップに失敗しました。
failed_renameレコードの名前の変更に失敗しました。
failed_mergeレコードはマージに失敗しました。

監査されたレコードのフィルタリング

ghe-migrator audit コマンドを使用すると、-m フラグを使用してレコードの種類に基づいてフィルター処理できます。 同様に、-s フラグを使用してインポート状態をフィルター処理できます。 次のようなコマンドです。

ghe-migrator audit -m RECORD_TYPE -s STATE -g MIGRATION-GUID

たとえば、インポートに成功したすべてのOrganizationとチームを見るには以下のようにします。

$ ghe-migrator audit -m organization,team -s mapped,renamed -g MIGRATION-GUID
> model_name,source_url,target_url,state
> organization,https://gh.source/octo-org/,https://ghe.target/octo-org/,renamed

失敗したすべてのインポートを監査することを強くお勧めします。 これを行うには、次のように入力します。

$ ghe-migrator audit -s failed_import,failed_map,failed_rename,failed_merge -g MIGRATION-GUID
> model_name,source_url,target_url,state
> user,https://gh.source/octocat,https://gh.target/octocat,failed
> repository,https://gh.source/octo-org/octo-project,https://ghe.target/octo-org/octo-project,failed

失敗したインポートに関する懸念があるなら、GitHub Enterprise サポートに連絡してください。

GitHub Enterprise Server でインポートを完了する

ターゲットインスタンスへの移行が適用され、その内容を確認したら、リポジトリのロックを解除して、ソースから削除します。 ソースデータを削除する前に、すべてが期待どおりに機能していることを確認するため2週間ほど待つことをおすすめします。

ターゲットインスタンス上でのリポジトリのアンロック

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

    ssh -p 122 admin@HOSTNAME
    
  2. ghe-migrator unlock コマンドを使用して、インポートされたすべてのリポジトリのロックを解除します。 移行GUIDが必要になります。

$ ghe-migrator unlock -g MIGRATION-GUID
> Unlocked octo-org/octo-project

警告: scheduleトリガーを使用してリポジトリに GitHub Actions ワークフローが含まれている場合、ワークフローはインポート後に自動的に実行されません。 スケジュールされたワークフローをもう一度開始するには、リポジトリにコミットをプッシュします。 詳しくは、「ワークフローをトリガーするイベント」を参照してください。

ソース上でのリポジトリのアンロック

GitHub.com で Organization からリポジトリのロックを解除する

GitHub.com Organization のリポジトリのロックを解除するには、DELETE 要求を移行ロック解除エンドポイントに送信します。 必要なものは次のとおりです。

  • 認証のためのアクセストークン
  • 移行の一意の id
  • アンロックするリポジトリの名前
curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" -X DELETE \
  -H "Accept: application/vnd.github.wyandotte-preview+json" \
  https://api.github.com/orgs/ORG-NAME/migrations/ID/repos/REPO_NAME/lock

GitHub.com で Organization からリポジトリを削除する

GitHub.com Organization のリポジトリのロックを解除した後、リポジトリ削除エンドポイントを使用して以前に移行したすべてのリポジトリを削除する必要があります。 認証のためのアクセストークンが必要になります。

curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" -X DELETE \
  https://api.github.com/repos/ORG-NAME/REPO_NAME

GitHub Enterprise Server インスタンスからリポジトリをアンロックする

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

    ssh -p 122 admin@HOSTNAME
    
  2. ghe-migrator unlock コマンドを使用して、インポートされたすべてのリポジトリのロックを解除します。 移行GUIDが必要になります。

$ ghe-migrator unlock -g MIGRATION-GUID
> Unlocked octo-org/octo-project