upgrade-browser について
Flutter 開発向けに、Web Engine とフレームワークテストの Chrome または Firefox を更新するスキルです。バージョン確認、CI 同期、ローカルテスト、任意の CIPD アップロードを案内します。
主な機能
- 01ブラウザーバージョンの確認
- 02Web Engine と CI のバージョン更新
- 03CI ビルダー設定の再生成
- 04Web Engine のローカルテスト実行
- 05CIPD アップロードの案内
活用シーン
- 01Flutter Web テストの Chrome 更新
- 02Web Engine の Firefox 更新
- 03ブラウザーパッケージのアップロード前の変更確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ flutter/ flutter --skill upgrade-browserインストール後、Claude Code で/upgrade-browserを入力して読み込まれたか確認します。
同梱ファイルscripts/fetch_versions.dart
詳細
ブラウザーのアップグレード
このスキルは、Flutter Web Engine と Framework のテストで使用する Chrome および Firefox のバージョンをアップグレードするプロセスを自動化します。
ワークフロー
1. 新しいバージョンの特定と確認
ファイルを更新する前に、使用するバージョンを見つけて、そのバージョンが存在することを確認してください。
- 最新の安定版を見つけるには:
dart scripts/fetch_versions.dart latest <chrome|firefox> - 特定のバージョンが存在することを確認するには:
このコマンドはdart scripts/fetch_versions.dart verify <chrome|firefox> <version>trueまたはfalseを返します。
確認ルール:
- デフォルトで必須: コマンドが
falseを返した場合は、先に進まないでください。 - 依頼があれば省略可能: ユーザーが確認を省略するよう明示的に依頼した場合(例:「確認せずにバージョン X にアップグレードして」)、この手順を省略してもかまいません。
- 確認に失敗した場合: 確認に失敗しても、ユーザーが続行を希望すると確認できた場合は、続行してもかまいません。
2. ローカルファイルの更新
ユーザーは、片方または両方の場所のアップグレードを依頼できます。また、場所ごとに異なるバージョンを指定することもできます。
Flutter Web Engine(engine/src/flutter/lib/web_ui/dev/package_lock.yaml)
chrome または firefox の version フィールドを更新します。
chrome:
version: 'NEW_VERSION'
firefox:
version: 'NEW_VERSION'
Framework のテスト(.ci.yaml)
chrome_and_driver のすべての出現箇所を新しいバージョンに更新します。
- {"dependency": "chrome_and_driver", "version": "version:NEW_VERSION"}
すべてのインスタンスが更新されるように、allow_multiple: true を指定して replace を使用します。注:現在、.ci.yaml では Chrome のみがこの方法で管理されています。
3. CI 設定の同期
ブラウザーのバージョンを更新した後、CI 設定を同期します。この手順では engine/src/flutter/ci/builders/linux_web_engine_test.json を更新します。
実行は一度だけにしてください。 実行が必要かどうかを確認するには、ファイルの更新日時を確認します。
ls -l engine/src/flutter/ci/builders/linux_web_engine_test.json
engine/src/flutter/lib/web_ui から、次を実行します。
dev/felt generate-builder-json
検証: コマンドの完了後に engine/src/flutter/ci/builders/linux_web_engine_test.json のタイムスタンプが新しくなっていることを確認します。
4. ローカルでの検証
CIPD にアップロードする前に、回帰がないことを確認するため、ローカルでテストを実行します。engine/src/flutter/lib/web_ui から、次を実行します。
dev/felt test
注:--browser <chrome|firefox> を使用すると、対象を限定できます。
5. CIPD へのアップロード(Package Roller)
これはバイナリを CIPD にアップロードする最終手順であり、一時的な特別権限が必要です。
- ユーザーに確認します。 必要な CIPD 権限があるか尋ねてください(不明な場合は Discord の #hackers-infra に問い合わせてください)。
- 確認できた場合は、
engine/src/flutter/lib/web_uiから次を実行します。
注:ユーザーが先にテストしたい場合は、dart dev/package_roller.dart--dry-runを使用してください。
例
-
ユーザー:「Chrome と Firefox を、すべての箇所で最新の安定版にアップグレードしてください。」
-
エージェント:
dart scripts/fetch_versions.dart latestを実行して、最新バージョンを取得します。engine/src/flutter/lib/web_ui/dev/package_lock.yamlと.ci.yamlを更新します。dev/felt generate-builder-jsonを実行して、CI 設定を同期します。- ローカルテストの実行を提案します。
- 最後に、CIPD 権限について確認します。
-
ユーザー:「Chrome をすべての箇所でバージョン 135.0.0.0 に更新してください。確認は省略してください。」
-
エージェント:
- ユーザーが依頼したため、
dart scripts/fetch_versions.dart verifyの実行を省略します。 package_lock.yamlと.ci.yamlを直接135.0.0.0に更新します。- 残りのワークフロー(同期、テスト、CIPD)を進めます。
- ユーザーが依頼したため、
-
ユーザー:「Web エンジンの Firefox をバージョン 130.0 に更新してください。」
-
エージェント:
dart scripts/fetch_versions.dart verify firefox 130.0を使用して、Firefox のバージョン130.0を確認します。- 確認に失敗した場合は、ユーザーに「Mozilla の公式リリース履歴で Firefox のバージョン 130.0 を確認できませんでした。これが正しいバージョン番号であることを確認していますか?」と伝えます。
- ユーザーが確認するか、バージョンの確認に成功した場合は、
package_lock.yamlを更新します。 - 残りのワークフロー(同期、テスト、CIPD)を進めます。