update-chrome-binaries-test-region について
Remotion のテスト対象 Chrome バイナリと AWS Lambda レイヤーを更新するリポジトリ用スキルです。バージョン変更、テストリージョンへの公開、Docker 検証を行ってから展開します。
主な機能
- 015 つの AWS Lambda レイヤーを公開
- 02ホスト済みレイヤー参照を更新
- 03Chrome ダウンロードの可用性を確認
- 04Chrome バージョンの文書を更新
- 05Docker ブラウザーテストを実行
活用シーン
- 01eu-central-1 で Chrome バージョンをテスト
- 02URL 変更前に Chrome アーカイブを検証
- 03ブラウザーと HTML-in-canvas の Docker テストを実行
- 04レイヤーと文書の更新を準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ remotion-dev/ remotion --skill update-chrome-binaries-test-regionインストール後、Claude Code で/update-chrome-binaries-test-regionを入力して読み込まれたか確認します。
詳細
Chrome バイナリのテストリージョンを更新する
AWS のセットアップ
aws sts get-caller-identityを実行して、AWS CLI がアカウント678892195805にログインしていることを確認します。ログインしていない場合は、ユーザーにログインを依頼してください。eval "$(aws configure export-credentials --format env)"を実行して、AWS 認証情報をシェルにエクスポートします。Lambda クライアントはAWS_ACCESS_KEY_IDを確認するため、SSO や Identity Center の認証情報を自動的には取得しません。packages/lambdaからbun src/admin/make-layer-public.ts --region=eu-central-1を実行して、fonts、chromium、emoji-apple、emoji-google、cjk の 5 つのレイヤーをすべて公開します。evalとbunコマンドは、環境変数がシェル呼び出し間で保持されないため、同じシェル呼び出し内で実行する必要があります。- 5 つのレイヤーそれぞれについて
LayerArnとVersionが出力され、公開リージョンが反映された最終的な JSON ダンプが表示されることを確認します。
ホストされているレイヤーを更新する
スクリプトの標準出力にある JSON ダンプをコピーして、packages/lambda/src/shared/hosted-layers.ts を更新します。バージョン番号を手動で増やさないでください。
スクリプトは、数行の空行の後に、公開したすべてのレイヤーについて AWS が返した正確な layerArn と version を示す完全な HostedLayers オブジェクトを出力します。hosted-layers.ts の対応するリージョンのエントリーを、これらの値に置き換えます。
テストフェーズ(--region=eu-central-1)では、更新するのは eu-central-1 のみです。ロールアウトまで、他のリージョンは意図的に古いバージョンのままにします。スクリプトを --skip=<region> 付きで実行した場合は、スキップしたリージョンを変更しないでください。
Chrome の参照を更新する
ユーザーから指定された Chrome バージョン(例:157.0.8080.0)を使用します。デフォルトのダウンロードでは、Playwright のリビジョンは使用されなくなりました。Google の Chrome for Testing ダウンロードメタデータで、サポートされているすべてのプラットフォームで同じ Chrome バージョンを利用できることを確認します。完全一致するバージョンがない場合は、最も近いバージョンを選び、バージョン/キャッシュマーカーが正確であることを確認します。Linux ARM64 では、数値を明示した Playwright リビジョンの上書きも引き続きサポートされます。
更新する項目:
packages/renderer/src/browser/get-chrome-download-url.ts:TESTED_VERSION。Remotion と Google CDN の URL は、Amazon Linux のビルドと Linux ARM64 のフォールバックを含め、このバージョンを使用します。Linux x64/ARM64、macOS x64/ARM64、Windows x64 について、Remotion の 5 つのアーカイブすべてと、Google の 2 つのブラウザモードを確認します。プロバイダーを変更する場合は、BrowserFetcher.tsの実行可能ファイルのパスとアーカイブの構成を照合してください。- URL を変更する前に、新しいハードコードされた URL と、
TESTED_VERSIONに続くテンプレート URLchromium-headless-shell-linux-{arm64,x64}-<version>.zip?clearcacheに対してcurl -sIを実行し、新しいバイナリが存在することを確認します。すべてが HTTP 200 を返した場合のみ続行してください。そうでない場合は、不足しているビルドをremotion.mediaにアップロードするようユーザーに依頼してください。 packages/lambda/src/admin/make-layer-public.ts:PublishLayerVersionCommandに渡すライセンス文字列Chromium <version>, compiled from source.。packages/docs/docs/lambda/runtime.mdx:次の Remotion リリース用に、「Chrome」バージョン表の先頭に新しい行を追加します。packages/core/package.jsonから次のバージョンを特定し、パッチバージョンを 1 増やします。packages/docs/docs/miscellaneous/chrome-headless-shell.mdx:バージョン表の先頭に新しい行を追加し、「Version tracking」セクションの例のバージョン文字列を更新します。packages/docs/docs/renderer/ensure-browser.mdx:コード例のversion: '<old>'という記述を 2 か所とも更新します。
Docker の検証
新しい Chrome バイナリに対して、packages/dockerfiles/ で ./run.sh を実行し、Docker のマトリックステストを実施します。最初に Docker Desktop が起動していることを確認してください。
テストでは次をレンダリングします。
browser-test:Three.js、WebGL、コーデックのスモークテスト。html-in-canvas:実験的な WICGdrawElementImage()およびcanvas.requestPaint()API。
出力先は packages/dockerfiles/out/<platform>.mp4 と packages/dockerfiles/out/<platform>-html-in-canvas.mp4 です。
Dockerfile では、公開済みのバージョンではなく、ローカルワークスペースでビルドした @remotion/cli と推移的依存関係をインストールします。@remotion/renderer のソース変更は、公開前に反映されます。run.sh は pack-cli.ts を実行します。これは @remotion/cli の推移的な workspace:* 依存関係をたどり、各パッケージに対して bun pm pack を実行して packages/dockerfiles/tarballs/ に配置し、すべての tarball を直接の依存関係と override として含む local-cli-package.json を生成します。
Docker のテストマトリックスに新しいコンポジションを追加する場合は、packages/example/src/BrowserTestRoot.tsx に登録し、run.sh に対応する RUN remotion render /usr/app/bundle <id> /usr/app/<filename>.mp4 の行と、docker cp による抽出処理を追加してください。
packages/core/src/HtmlInCanvas.tsx にある <HtmlInCanvas> の実行時チェックでは、ctx.drawElementImage、canvas.requestPaint、canvas.captureElementImage、transferControlToOffscreen が必要です。これらは、--enable-features=CanvasDrawElement を指定すると Chrome 149 以降で使用できます。browser-test は成功する一方で html-in-canvas のレンダリングが "HTML in Canvas is not supported" というエラーで失敗する場合、最も可能性が高い原因は Chrome のバージョンの不一致です。
テスト対象リージョンのエンドツーエンド検証が完了するまでは、すべてのリージョンへの公開に進まないでください。