mcpField
U
update-chrome-binaries-test-region

update-chrome-binaries-test-region

github.com/remotion-devクラウド・DevOps68.6k568 回インストール今日更新
リポジトリ

update-chrome-binaries-test-region について

Remotion のテスト対象 Chrome バイナリと AWS Lambda レイヤーを更新するリポジトリ用スキルです。バージョン変更、テストリージョンへの公開、Docker 検証を行ってから展開します。

主な機能

  1. 015 つの AWS Lambda レイヤーを公開
  2. 02ホスト済みレイヤー参照を更新
  3. 03Chrome ダウンロードの可用性を確認
  4. 04Chrome バージョンの文書を更新
  5. 05Docker ブラウザーテストを実行

活用シーン

  1. 01eu-central-1 で Chrome バージョンをテスト
  2. 02URL 変更前に Chrome アーカイブを検証
  3. 03ブラウザーと HTML-in-canvas の Docker テストを実行
  4. 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 に続くテンプレート URL chromium-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:実験的な WICG drawElementImage() および 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 のバージョンの不一致です。

テスト対象リージョンのエンドツーエンド検証が完了するまでは、すべてのリージョンへの公開に進まないでください。

コメント