Skip to main content

Azure DevOpsからGitHubへの移行の準備

タイムライン、移行されるデータ、組織の構造を理解して、移行を計画します。

移行する必要がある量を決定する

タイムラインを決定します。これによって、アプローチが大きく異なります。 タイムラインを決定するための最初の手順は、移行する必要があるもののインベントリを取得することです。

  • リポジトリの数
  • プルリクエストの数

メモ

移行の所要時間は、主にリポジトリ内の pull request の数に基づきます。 1,000 個のリポジトリを移行し、各リポジトリに平均で 100 個のプル要求がある場合は、移行が非常に迅速になる可能性があります。 100 個のリポジトリのみを移行したいが、リポジトリごとに平均で 75,000 個のプル要求がある場合、移行にははるかに時間がかかり、より多くの計画とテストが必要になります。

          ADO2GH extension of the GitHub CLI の `inventory-report` コマンドをお勧めします。 このコマンドは、Azure DevOps API に接続し、いくつかの CSV ファイルを作成します。 
          `repos.csv` には、プル要求の数など、リポジトリに関する情報が含まれています。

CSV ファイルを生成するには、次のコマンドを用い、YOUR_ADO_ORG 部分を Azure DevOps の組織名に置き換えてください。

Shell
gh ado2gh inventory-report --ado-org YOUR_ADO_ORG

移行する必要があるリポジトリのインベントリを取得したら、インベントリ データを目的のタイムラインと比較します。

  • 組織がより高度な変更に耐えられる場合、すべてのリポジトリを一度に移行して、移行作業を数日で完了できる可能性があります。
  • 同時に移行できないチームがある場合は、チームのタイムラインに合わせて移行をバッチ処理して調整し、移行作業を拡張することができます。

組織構造 GitHub 決定する

次に、 GitHubで作成する組織構造を計画します。 ADO と GitHub には、企業の作業を整理するさまざまな方法があります。

  • ADO: Organization > チームプロジェクト > リポジトリ
  •         GitHub: エンタープライズ > 組織 > リポジトリ
    
            GitHubに移行した後は、1 つのエンタープライズ アカウントと、その企業が所有する少数の組織のみを持つ必要があります。 ADO の各組織は、 GitHub上の 1 つの組織に対応している必要があります。
    

メモ

ADO でリポジトリをグループ化するために使用されるチーム プロジェクトの概念は、 GitHubには存在しません。 ADO の各チーム プロジェクトに対して GitHub に組織を作成することはお勧めしません。これにより、各組織内のグループ化されていないリポジトリが多数リストされる可能性があるためです。 ただし、チームを作成すると、リポジトリのグループへのアクセスを管理できます。

移行作業をバッチに分割する場合は、新しい構造を使用してそれらを特定できます。 ADO に複数の組織があり、各組織のリポジトリが適切なサイズのバッチである場合は、組織ごとのバッチ処理を検討します。

  1. 新しい Organization の構造を決めます。
  2. 移行作業を小さいバッチに分割する必要があるかどうかを決めます。
  3. そうする場合は、移行の分割方法を決めます。

リポジトリのアクセス許可の構成

          GitHubのアクセス許可は ADO とは動作が異なるため、GitHub Enterprise Importerは ADO からリポジトリのアクセス許可を移行しようとしません。

ADO2GH CLI を使用すると、 GitHub Enterprise Importer は ADO の各チーム プロジェクトに対して GitHub に 2 つのチームを作成します。 各チームには、チーム プロジェクトから作成されたすべてのリポジトリへの異なるレベルのアクセス権が付与されます。

チーム移行されたリポジトリへのアクセス
TEAM-PROJECT-管理者メンテナ
TEAM-PROJECTの管理者管理者

移行されたリポジトリへのアクセス権を付与するには、これらのチームにユーザーを追加します。 これは、GitHub で手動で行うことができます。または、移行中にチームを Azure Active Directory (AAD) グループにリンクすることを選択した場合は、AAD のグループ メンバーシップを管理します。 チーム メンバーシップの手動による管理について詳しくは、「チームに組織メンバーを追加する」を参照してください。