バッチ アップグレードを使用すると、複数のリポジトリに一貫した最新化計画を同時に適用できます。 この記事では、エンタープライズ規模で複数のアプリケーションを効率的にアップグレードする方法について説明します。
バッチ アップグレードを使用すると、次のことができます。
- 同じアップグレード ターゲットを使用して複数のアプリケーションを同時にアップグレードします。
- アプリケーション間で同様のアップグレード パターンを使用して、一貫性のあるパターンを適用します。
- クラウド コーディング エージェントへの委任時に並列実行を活用します。
バッチ アップグレードには、次の利点があります。
一貫性のある実行:
- 標準化されたアプローチ: すべてのリポジトリに同じ最新化パターンを適用します。
- 変動性の低下: 同様のアプリケーションに対して一貫したアップグレード パスを確保します。
- 再利用可能な戦略: アプリケーション間で組織固有のスキルを使用します。
スケールと効率:
- 並列処理: クラウド コーディング エージェントを使用して、複数のリポジトリを同時に処理します。
- 自動化されたワークフロー: スケジュールされた最新化のために CI/CD パイプラインと統合します。
- 時間の節約: モダン化の合計時間を数週間から数時間に短縮します。
前提条件
- CLI を最新化します。
- 完了した バッチ評価 (推奨されますが、必須ではありません)。
- すべてのリポジトリは、同じプログラミング言語 (Java または .NET) を使用します。
- アップグレードするすべてのリポジトリへのアクセス。
- GitHub 認証が構成されました (
gh auth login)。
Important
バッチ アップグレード内のすべてのリポジトリは、同じプログラミング言語を使用する必要があります。 リポジトリが別の言語を使用している場合、バッチ アップグレードによってリポジトリが失敗としてマークされ、スキップされます。
リポジトリを構成する
バッチ アップグレードを有効にするには、アップグレードするすべてのリポジトリを一覧表示する .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"
}
]
リポジトリの構成
各エントリには次のものが必要です。
- name: リポジトリのフレンドリ名 (レポートとダッシュボードで使用)。
- url: Git クローン URL (HTTPS 形式)。
ヒント
アクセス権がある限り、さまざまな組織のリポジトリを含め、さまざまな認証方法を使用できます。
ファイルの場所
repos.json ファイルは.github/modernize/repos.jsonに配置する必要があります。
最新化エージェントは、バッチ操作の実行時にこのファイルを自動的に検出します。
実行モードを選択する
バッチ アップグレードでは、2 つの実行モードと 2 つの対話方法がサポートされています。
実行モード
ローカル実行
- 最適な方法: テスト、小さなリポジトリセット (1 から 5 個のリポジトリ)、またはローカル制御が必要な場合。
- しくみ: ローカル コンピューターでリポジトリを順番に処理します。
- セットアップが必要: 基本的な前提条件を超える必要はありません。
クラウド コーディング エージェントの委任
- エンタープライズ規模の運用、大規模なポートフォリオ (5 つ以上のリポジトリ)、または並列処理に最適です。
- しくみ: クラウドで並列実行するために GitHub クラウド コーディング エージェントにタスクを送信します。
- セットアップが必要: 各リポジトリの MCP サーバー構成 (セットアップ中に構成)。
ヒント
リポジトリを並列に処理することで、クラウド コーディング エージェントの委任によって、合計最新化時間を数時間から数分に短縮できます。
相互作用メソッド
対話型モード (TUI)
- メニューとプロンプトを使用したガイド付きエクスペリエンス。
- 初めてのユーザーやオプションを確認する場合に最適です。
- ローカル実行とクラウド実行の両方をサポートします。
非対話型モード (CLI/ヘッドレスモード)
- コマンドライン ベースで、完全に自動化されています。
- CI/CD パイプラインと自動化に最適です。
-
--delegate cloudフラグを使用したローカル実行とクラウド実行の両方をサポートします。
注
任意の実行モードを任意の対話方法と組み合わせることができます。 例えば次が挙げられます。
-
modernize(対話型、ローカル) -
modernize→クラウド コーディング エージェント (対話型、クラウド) を選択します -
modernize upgrade "Java 21"(非対話型、ローカル) -
modernize upgrade "Java 21" --delegate cloud(非対話型、クラウド)
バッチ アップグレードのしくみ
バッチ アップグレード ワークフロー:
- 言語検出: 最初のリポジトリからプロジェクト言語 (Java または .NET) を自動的に検出します。
- プランの作成: プロンプトに基づいてアップグレード プランを作成するか、最新の LTS バージョンを使用します。
- 実行: 各リポジトリにアップグレードを適用します。
- 検証: 各リポジトリの変更をビルドして検証します。
バッチ アップグレードの実行
リポジトリを構成し、実行モードを選択したら、バッチ アップグレードを開始します。
対話型モード (ローカルアップグレード)
モダン化エージェントを実行します。
modernizeエージェントは、
repos.jsonファイルを検出し、リポジトリの一覧を表示します。アップグレードするリポジトリを選択し、
Enterキーを押して選択内容を確認します。-
Ctrl+Aを押すをクリックして、すべてのリポジトリを選択します。 -
または、方向キーを使用 して移動し、
Enterを押して個々のリポジトリを選択します。
-
2 を選択 します。 メイン メニューからアップグレードします。
アップグレードを実行するには、1 を選択 します。ローカルにアップグレードします。
エージェントは自動的に次の手順を実行します。
- 要求に基づいてアップグレード プランを作成します。
- プランを各リポジトリに順番に適用します。
- 変更後に各リポジトリをビルドして検証します。
- 各リポジトリの進行状況と概要を表示します。
対話型モード (クラウド コーディング エージェントへの委任)
前提条件: MCP サーバーを構成する
アップグレードを実行する前に、各リポジトリで GitHub Copilot モダン化 MCP サーバーを構成します。
Java アプリケーションの場合は、リポジトリ設定の Cloud Coding Agent セクションに次の構成を追加します。
{
"mcpServers": {
"app-modernization": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"-y",
"@microsoft/github-copilot-app-modernization-mcp-server"
]
}
}
}
手順
モダン化エージェントを実行します。
modernizeエージェントは、
repos.jsonファイルを検出し、リポジトリの一覧を表示します。アップグレードするリポジトリを選択し、
Enterキーを押して選択内容を確認します。-
Ctrl+Aを押すをクリックして、すべてのリポジトリを選択します。 -
または、方向キーを使用 して移動し、
Enterを押して個々のリポジトリを選択します。
-
2 を選択 します。 メイン メニューからアップグレードします。
アップグレードを実行するには、2 を選択します 。クラウド コーディング エージェントに委任します。
エージェントは自動的に次の手順を実行します。
非対話型モード (CLI)
自動化と CI/CD 統合の場合は、 modernize upgrade コマンドを使用します。
ローカルにアップグレードする:
modernize upgrade "Java 21"
クラウド コーディング エージェントを使用したアップグレード:
modernize upgrade "Java 21" --delegate cloud
このコマンドは、 repos.json ファイルを自動的に検出し、すべてのリポジトリを処理します。
注
バッチ ヘッドレス実行とその他の CLI オプションについては、CLI コマンド リファレンスの 「マルチリポジトリ構成 」セクションを参照してください。
結果の確認
バッチ アップグレードが完了したら、次の手順を実行します。
ターミナルに表示される集計レポートを確認します。
個々のリポジトリの変更を確認します。
cd <repository-name> git status git diffアップグレードを成功させるために 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 モダン化フィードバック フォームを使用します。