GitHub Copilotモダン化エージェントを使用したバッチ アップグレード

バッチ アップグレードを使用すると、複数のリポジトリに一貫した最新化計画を同時に適用できます。 この記事では、エンタープライズ規模で複数のアプリケーションを効率的にアップグレードする方法について説明します。

バッチ アップグレードを使用すると、次のことができます。

  • 同じアップグレード ターゲットを使用して複数のアプリケーションを同時にアップグレードします。
  • アプリケーション間で同様のアップグレード パターンを使用して、一貫性のあるパターンを適用します。
  • クラウド コーディング エージェントへの委任時に並列実行を活用します。

バッチ アップグレードには、次の利点があります。

  • 一貫性のある実行:

    • 標準化されたアプローチ: すべてのリポジトリに同じ最新化パターンを適用します。
    • 変動性の低下: 同様のアプリケーションに対して一貫したアップグレード パスを確保します。
    • 再利用可能な戦略: アプリケーション間で組織固有のスキルを使用します。
  • スケールと効率:

    • 並列処理: クラウド コーディング エージェントを使用して、複数のリポジトリを同時に処理します。
    • 自動化されたワークフロー: スケジュールされた最新化のために CI/CD パイプラインと統合します。
    • 時間の節約: モダン化の合計時間を数週間から数時間に短縮します。

前提条件

  • CLI を最新化します
  • 完了した バッチ評価 (推奨されますが、必須ではありません)。
  • すべてのリポジトリは、同じプログラミング言語 (Javaまたは.NET) を使用します。
  • アップグレードするすべてのリポジトリへのアクセス。
  • GitHub認証が構成されている (gh auth login)。

Important

バッチ アップグレード内のすべてのリポジトリは、同じプログラミング言語を使用する必要があります。 リポジトリが別の言語を使用している場合、バッチ アップグレードによってリポジトリが失敗としてマークされ、スキップされます。

リポジトリを構成する

モダン化エージェントでは、アップグレードするリポジトリを指定する複数の方法がサポートされています。

  • 現在のフォルダー: 現在の作業ディレクトリ内のプロジェクトをアップグレードします。
  • 手動入力: ローカル ディレクトリ パスまたはリモート Git URL を直接入力します。
  • リポジトリ構成ファイル: すべてのリポジトリを一覧表示する JSON 構成ファイルを使用します。

リポジトリ構成ファイル

多数のリポジトリでバッチ操作を行う場合は、すべてのリポジトリを一覧表示する JSON 構成ファイルを作成します。 たとえば、作業ディレクトリの .github/modernize/repos.json に作成するか、カスタム パスを指定します。

ヒント

サンプル リポジトリの場合は、最初にそれらをフォークし、クラウド コーディング エージェントにジョブを委任するための管理者アクセス許可があることを確認します。

単純な形式 (リポジトリの配列):

[
  {
    "name": "PhotoAlbum-Java",
    "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git"
  },
  {
    "name": "ZavaSocialFrontEnd",
    "url": "https://github.com/Azure-Samples/ZavaSocialFrontEnd"
  }
]

フル フォーマット (ブランチ パスとローカル パスを含む):

{
  "repos": [
    {
      "name": "PhotoAlbum-Java",
      "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
      "branch": "main"
    },
    {
      "name": "local-project",
      "path": "/absolute/path/to/project"
    }
  ]
}

各リポジトリ エントリは、次のフィールドをサポートしています。

フィールド 説明 必須
name リポジトリのフレンドリ名 (レポートとダッシュボードで使用)。 はい
url HTTPS または SSH 形式の Git クローン URL。 urlまたはpath
path 絶対ローカル ディレクトリ パス。 urlまたはpath
branch 複製後にチェックアウトする分岐。 いいえ
description 人間が判読できる説明。 いいえ

ヒント

アクセス権がある限り、さまざまな組織のリポジトリを含め、さまざまな認証方法を使用できます。

モダン化エージェントは、対話型モードで構成ファイルから選択すると、repos.json.github/modernize/repos.jsonファイルを自動的に検出します。 カスタム パスを指定することもできます。

実行モードを選択する

バッチ アップグレードでは、2 つの実行モードと 2 つの対話方法がサポートされています。

実行モード

ローカル実行

  • 最適な方法: テスト、小さなリポジトリセット (1 から 5 個のリポジトリ)、またはローカル制御が必要な場合。
  • しくみ: ローカル コンピューターでリポジトリを順番に処理します。
  • セットアップが必要: 基本的な前提条件を超える必要はありません。
  • サポート: Git URL とローカル パス リポジトリの両方。

クラウド コーディング エージェントの委任

  • エンタープライズ規模の運用、大規模なポートフォリオ (5 つ以上のリポジトリ)、または並列処理に最適です。
  • しくみ: クラウドでの並列実行のために、GitHubクラウド コーディング エージェントにタスクを送信します。
  • セットアップが必要: 各リポジトリの MCP サーバー構成 (セットアップ中に構成)。
  • Supports: GitHub (github.com) URL を持つリポジトリのみ。 ローカル パスとGitHub以外のプロバイダーはサポートされていません。

Important

クラウド コーディング エージェントの委任では、リポジトリに GitHub (github.com) リポジトリ URL が必要です。 ローカル パスで指定されたリポジトリ、またはGitHub以外のプロバイダー (GitLab、Azure DevOps) でホストされているリポジトリは、クラウドの委任中にスキップされます。 これらのリポジトリに対してローカル実行を使用します。

ヒント

リポジトリを並列に処理することで、クラウド コーディング エージェントの委任によって、合計最新化時間を数時間から数分に短縮できます。

相互作用メソッド

対話型モード (TUI)

  • メニューとプロンプトを使用したガイド付きエクスペリエンス。
  • 初めてのユーザーやオプションを確認する場合に最適です。
  • ローカル実行とクラウド実行の両方をサポートします。

非対話型モード (CLI/ヘッドレスモード)

  • コマンドライン ベースで、完全に自動化されています。
  • CI/CD パイプラインと自動化に最適です。
  • --delegate cloud フラグを使用したローカル実行とクラウド実行の両方をサポートします。

任意の実行モードを任意の対話方法と組み合わせることができます。 例えば次が挙げられます。

  • modernize →アップグレード (対話型、ローカル) を選択します
  • modernize → Upgrade → Delegate to Cloud Agents (対話型、クラウド) を選択
  • modernize upgrade "Java 21" --source ./repos.json (非対話型、ローカル)
  • modernize upgrade "Java 21" --source ./repos.json --delegate cloud (非対話型、クラウド)

バッチ アップグレードのしくみ

バッチ アップグレード ワークフロー:

  1. Language 検出: 最初のリポジトリからプロジェクト言語 (Javaまたは.NET) を自動的に検出します。
  2. プランの作成: プロンプトに基づいてアップグレード プランを作成するか、最新の LTS バージョンを使用します。
  3. 実行: 各リポジトリにアップグレードを適用します。
  4. 検証: 各リポジトリの変更をビルドして検証します。

バッチ アップグレードの実行

リポジトリを構成し、実行モードを選択したら、バッチ アップグレードを開始します。

対話型モード (ローカルアップグレード)

  1. モダン化エージェントを実行します。

    modernize
    
  2. メイン メニューから [アップグレード ] を選択します。

    ターミナルの [アップグレード] オプションが表示されたメイン メニューを示すモダン化 CLI のスクリーンショット。

  3. ターゲット リポジトリを指定する方法を選択します。 repos.json使用するには、[構成ファイルから] を選択します。

    ターミナルでのソースの種類の選択を示すモダン化 CLI のスクリーンショット。

    ヒント

    [ 手動入力 ] を選択してローカル パスまたはリモート Git URL を直接入力することも、 現在のフォルダー を選択して現在のディレクトリ内のプロジェクトをアップグレードすることもできます。

  4. repos.json ファイルが既定の場所で検出されると、エージェントによって自動的に入力されます。 それ以外の場合は、構成ファイルへのパスを入力し、Enter キーを押 します

  5. 既定では、すべてのリポジトリが選択されています。 スキップするリポジトリの選択を解除し、 Enter キーを押して選択を確定します。

    • 方向キーを使用して 移動し、 Space キーを押して個々のリポジトリを切り替えます。

    ターミナルの [リポジトリの選択] リストを示すモダン化 CLI のスクリーンショット。

  6. 実行モードを選択します。 [ ローカルにアップグレード] を選択します

    ターミナルの [ローカルにアップグレード] メニュー オプションを示すモダン化 CLI のスクリーンショット。

  7. アップグレード 先のプロンプト (Java 21.NET 10 など) を入力するか、Enter キーを押して既定値 (最新の LTS バージョン) を受け入れます。

  8. エージェントは自動的に次の手順を実行します。

    • 要求に基づいてアップグレード プランを作成します。
    • プランを各リポジトリに順番に適用します。
    • 変更後に各リポジトリをビルドして検証します。
    • 各リポジトリの進行状況と概要を表示します。

    ターミナルの各リポジトリのアップグレードの進行状況を示す Modernize CLI のスクリーンショット。

対話型モード (クラウド コーディング エージェントへの委任)

前提条件: MCP サーバーを構成する

アップグレードを実行する前に、各リポジトリで GitHub Copilot モダン化 MCP サーバーを構成します。

アプリケーションをJavaするには、リポジトリ設定の [クラウド コーディング エージェント] セクションに次の構成を追加します。

{
  "mcpServers": {
    "app-modernization": {
      "type": "local",
      "command": "npx",
      "tools": [
        "*"
      ],
      "args": [
        "-y",
        "@microsoft/github-copilot-app-modernization-mcp-server"
      ]
    }
  }
}

MCP 構成セクションが強調表示されているリポジトリの [コーディング エージェントの設定] ウィンドウを示すGitHubのスクリーンショット。

手順

  1. モダン化エージェントを実行します。

    modernize
    
  2. メイン メニューから [アップグレード ] を選択します。

    ターミナルの [アップグレード] オプションが表示されたメイン メニューを示すモダン化 CLI のスクリーンショット。

  3. ターゲット リポジトリを指定する方法を選択します。 構成ファイルから選択します。

    ターミナルでのソースの種類の選択を示すモダン化 CLI のスクリーンショット。

  4. repos.json ファイルが既定の場所で検出されると、エージェントによって自動的に入力されます。 それ以外の場合は、構成ファイルへのパスを入力し、Enter キーを押 します

  5. 既定では、すべてのリポジトリが選択されています。 スキップするリポジトリの選択を解除し、 Enter キーを押して選択を確定します。 方向キーを使用して移動し、 Space キーを押して個々のリポジトリを切り替えます。

    ターミナルのリポジトリの一覧を示すモダン化 CLI のスクリーンショット。

  6. 実行モードを選択します。 [ クラウド エージェントへの委任] を選択します。

    ターミナルの [クラウド コーディング エージェントへの委任] メニュー オプションを示す最新化 CLI のスクリーンショット。

  7. アップグレード先のプロンプト (Java 21 など) を入力するか、Enter キーを押して既定値をそのまま使用します。

  8. エージェントは自動的に次の手順を実行します。

    • 各リポジトリのアップグレード 計画を作成します。

    • 各リポジトリのクラウド コーディング エージェント ジョブを送信します。

    • クラウド内でジョブを個別に並列で実行します。

    • 各リポジトリのジョブ ID と PR URL を表示します。

      ターミナルでクラウド コーディング エージェントにアップグレードを委任する進行状況を示す最新化 CLI のスクリーンショット。

    • タスクを AgentHQ に委任して並列実行します。

      AgentHQに委任されたアップグレード タスクを示すAgentsペインを含むGitHubのスクリーンショット

    • 個々のタスクの進行状況をリアルタイムで追跡します。

      個々のクラウド コーディング エージェントのアップグレード タスクの進行状況を追跡する [エージェント] ウィンドウを示すGitHubのスクリーンショット。

    • 完了した各タスクのアップグレードの概要を表示します。

      個々のクラウド コーディング エージェント タスクのアップグレードの概要を示すGitHubのスクリーンショット。

非対話型モード (CLI)

自動化と CI/CD 統合の場合は、 modernize upgrade コマンドを使用します。

リポジトリ構成ファイルを使用してローカルにアップグレードする:

modernize upgrade "Java 21" --source .github/modernize/repos.json

ソースを直接指定して、複数のリポジトリをアップグレードします。

modernize upgrade "Java 21" --source https://github.com/org/repo1 --source https://github.com/org/repo2

クラウド コーディング エージェントを使用したアップグレード:

modernize upgrade "Java 21" --source .github/modernize/repos.json --delegate cloud

バッチ ヘッドレス実行とその他の CLI オプションについては、CLI コマンド リファレンスの 「マルチリポジトリ構成 」セクションを参照してください。

結果の確認

バッチ アップグレードが完了したら、次の手順を実行します。

  1. ターミナルに表示される集計レポートを確認します。

  2. 個々のリポジトリの変更を確認します。

    cd <repository-name>
    git status
    git diff
    
  3. アップグレードを成功させるために pull request を作成します。

    cd <repository-name>
    gh pr create --title "Upgrade to Java 21" --body "Automated upgrade by modernization agent"
    

バッチ アップグレードのトラブルシューティング

一般的な問題

リポジトリ アクセス エラー:

  • gh auth status を使用して GitHub 認証を確認します。
  • repos.json内のすべてのリポジトリにアクセスできることを確認します。

言語の不一致エラー:

  • repos.json内のすべてのリポジトリで同じ言語 (Java または .NET) が使用されていることを確認します。
  • 異なる言語に対して個別のバッチ操作を作成します。

複製の失敗:

  • repos.json内のリポジトリ URL が正しくアクセス可能であることを確認します。
  • すべてのリポジトリに対する適切なアクセス許可があることを確認します。
  • ネットワーク接続と VPN の設定を確認します。

アップグレード後のビルド エラー:

  • 集計されたレポートでビルド エラー メッセージを確認します。
  • 他の依存関係を更新する必要があるかどうかを確認します。
  • サード パーティ製ライブラリと新しいバージョンの互換性を確認します。

個々のリポジトリのエラー:

  • 個々のリポジトリが失敗した場合でも、バッチ 処理は続行されます。
  • 集計されたレポートを確認して、失敗したリポジトリを特定します。
  • エラー ログで特定のエラー メッセージを確認します。
  • 失敗したリポジトリを個別に再試行します。

クラウド コーディング エージェントのエラー:

  • GitHub Actionsアクセス許可とクォータ制限を確認します。
  • .NET Framework の場合は、ランナー構成Windows正しく設定されていることを確認します。

次のステップ

バッチ アップグレードを完了すると、次のことができます。

改善を続ける:

参考資料:

フィードバックの提供

私たちはあなたの入力を大切にしています! バッチ アップグレードまたはモダン化エージェントに関するフィードバックがある場合は、 github-copilot-appmod リポジトリGitHub Copilotモダン化フィードバック フォームを使用します。