バッチ アップグレードを使用すると、複数のリポジトリに一貫した最新化計画を同時に適用できます。 この記事では、エンタープライズ規模で複数のアプリケーションを効率的にアップグレードする方法について説明します。
バッチ アップグレードを使用すると、次のことができます。
- 同じアップグレード ターゲットを使用して複数のアプリケーションを同時にアップグレードします。
- アプリケーション間で同様のアップグレード パターンを使用して、一貫性のあるパターンを適用します。
- クラウド コーディング エージェントへの委任時に並列実行を活用します。
バッチ アップグレードには、次の利点があります。
一貫性のある実行:
- 標準化されたアプローチ: すべてのリポジトリに同じ最新化パターンを適用します。
- 変動性の低下: 同様のアプリケーションに対して一貫したアップグレード パスを確保します。
- 再利用可能な戦略: アプリケーション間で組織固有のスキルを使用します。
スケールと効率:
- 並列処理: クラウド コーディング エージェントを使用して、複数のリポジトリを同時に処理します。
- 自動化されたワークフロー: スケジュールされた最新化のために 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(非対話型、クラウド)
バッチ アップグレードのしくみ
バッチ アップグレード ワークフロー:
- Language 検出: 最初のリポジトリからプロジェクト言語 (Javaまたは.NET) を自動的に検出します。
- プランの作成: プロンプトに基づいてアップグレード プランを作成するか、最新の LTS バージョンを使用します。
- 実行: 各リポジトリにアップグレードを適用します。
- 検証: 各リポジトリの変更をビルドして検証します。
バッチ アップグレードの実行
リポジトリを構成し、実行モードを選択したら、バッチ アップグレードを開始します。
対話型モード (ローカルアップグレード)
モダン化エージェントを実行します。
modernizeメイン メニューから [アップグレード ] を選択します。
ターゲット リポジトリを指定する方法を選択します。
repos.json使用するには、[構成ファイルから] を選択します。ヒント
[ 手動入力 ] を選択してローカル パスまたはリモート Git URL を直接入力することも、 現在のフォルダー を選択して現在のディレクトリ内のプロジェクトをアップグレードすることもできます。
repos.jsonファイルが既定の場所で検出されると、エージェントによって自動的に入力されます。 それ以外の場合は、構成ファイルへのパスを入力し、Enter キーを押 します。既定では、すべてのリポジトリが選択されています。 スキップするリポジトリの選択を解除し、 Enter キーを押して選択を確定します。
- 方向キーを使用して 移動し、 Space キーを押して個々のリポジトリを切り替えます。
実行モードを選択します。 [ ローカルにアップグレード] を選択します。
アップグレード 先のプロンプト (
Java 21や.NET 10など) を入力するか、Enter キーを押して既定値 (最新の LTS バージョン) を受け入れます。エージェントは自動的に次の手順を実行します。
- 要求に基づいてアップグレード プランを作成します。
- プランを各リポジトリに順番に適用します。
- 変更後に各リポジトリをビルドして検証します。
- 各リポジトリの進行状況と概要を表示します。
対話型モード (クラウド コーディング エージェントへの委任)
前提条件: MCP サーバーを構成する
アップグレードを実行する前に、各リポジトリで GitHub Copilot モダン化 MCP サーバーを構成します。
アプリケーションをJavaするには、リポジトリ設定の [クラウド コーディング エージェント] セクションに次の構成を追加します。
{
"mcpServers": {
"app-modernization": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"-y",
"@microsoft/github-copilot-app-modernization-mcp-server"
]
}
}
}
手順
モダン化エージェントを実行します。
modernizeメイン メニューから [アップグレード ] を選択します。
ターゲット リポジトリを指定する方法を選択します。 構成ファイルから選択します。
repos.jsonファイルが既定の場所で検出されると、エージェントによって自動的に入力されます。 それ以外の場合は、構成ファイルへのパスを入力し、Enter キーを押 します。既定では、すべてのリポジトリが選択されています。 スキップするリポジトリの選択を解除し、 Enter キーを押して選択を確定します。 方向キーを使用して移動し、 Space キーを押して個々のリポジトリを切り替えます。
実行モードを選択します。 [ クラウド エージェントへの委任] を選択します。
アップグレード先のプロンプト (
Java 21など) を入力するか、Enter キーを押して既定値をそのまま使用します。エージェントは自動的に次の手順を実行します。
非対話型モード (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 コマンド リファレンスの 「マルチリポジトリ構成 」セクションを参照してください。
結果の確認
バッチ アップグレードが完了したら、次の手順を実行します。
ターミナルに表示される集計レポートを確認します。
個々のリポジトリの変更を確認します。
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正しく設定されていることを確認します。
次のステップ
バッチ アップグレードを完了すると、次のことができます。
改善を続ける:
- バッチ評価を実行 する - 改善点を確認し、新しい機会を特定するために再評価します。
- 組織固有のパターンのカスタム スキルを作成する - 再利用のために成功したパターンをキャプチャします。
参考資料:
フィードバックの提供
私たちはあなたの入力を大切にしています! バッチ アップグレードまたはモダン化エージェントに関するフィードバックがある場合は、