关于 update-chrome-binaries-test-region
用于更新 Remotion 测试版 Chrome 二进制文件和 AWS Lambda 层的仓库技能,涵盖版本变更、测试区域发布及 Docker 验证,再进行更大范围的推广。
主要功能
- 01发布五个 AWS Lambda 层
- 02更新托管层引用
- 03检查 Chrome 下载可用性
- 04修改 Chrome 版本文档
- 05运行 Docker 浏览器测试
适用场景
- 01在 eu-central-1 测试 Chrome 版本
- 02更改 URL 前验证 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 凭证导出到 shell 中。Lambda 客户端会检查AWS_ACCESS_KEY_ID,不会自行获取 SSO 或 Identity Center 凭证。 - 在
packages/lambda目录中运行bun src/admin/make-layer-public.ts --region=eu-central-1,发布全部 5 个层:fonts、chromium、emoji-apple、emoji-google、cjk。 eval和bun命令必须在同一次 shell 调用中运行,因为环境变量不会在不同的 shell 调用之间保留。- 确认输出为 5 个层分别打印了
LayerArn和Version,并且最后的 JSON 转储中已填入已发布的区域。
更新托管层
将脚本 stdout 中的 JSON 转储复制到 packages/lambda/src/shared/hosted-layers.ts。不要手动递增版本号。
脚本会在几行空行之后打印一个完整的 HostedLayers 对象,其中包含 AWS 为刚刚发布的每个层返回的确切 layerArn 和 version。将 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 归档,以及两种 Google 浏览器模式。更换提供方时,请对照归档布局检查BrowserFetcher.ts中的可执行文件路径。- 更改 URL 之前,使用
curl -sI检查新的硬编码 URL,以及遵循TESTED_VERSION的模板 URLchromium-headless-shell-linux-{arm64,x64}-<version>.zip?clearcache,以确认新的二进制文件存在。只有所有请求都返回 HTTP 200 时才继续;否则请让用户将缺失的构建上传到remotion.media。 packages/lambda/src/admin/make-layer-public.ts:传递给PublishLayerVersionCommand的许可证字符串Chromium <version>, compiled from source.。packages/docs/docs/lambda/runtime.mdx:在“Chrome”版本表格前添加一行,列出下一个 Remotion 发行版的版本。根据packages/core/package.json确定下一个版本,并将补丁版本号递增。packages/docs/docs/miscellaneous/chrome-headless-shell.mdx:在版本表格前添加一行,并更新“Version tracking”部分中的示例版本字符串。packages/docs/docs/renderer/ensure-browser.mdx:更新示例代码块中两处version: '<old>'。
Docker 验证
使用 ./run.sh 对 packages/dockerfiles/ 中的新 Chrome 二进制文件运行 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/,然后生成 local-cli-package.json,将每个 tarball 都设为直接依赖项和覆盖项。
如果要在 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+ 会提供这些 API。如果 html-in-canvas 渲染失败并显示 "HTML in Canvas is not supported",而 browser-test 通过,最可能的原因是 Chrome 版本不匹配。
在测试区域完成端到端验证之前,请勿继续向所有区域发布。