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. 01发布五个 AWS Lambda 层
  2. 02更新托管层引用
  3. 03检查 Chrome 下载可用性
  4. 04修改 Chrome 版本文档
  5. 05运行 Docker 浏览器测试

适用场景

  1. 01在 eu-central-1 测试 Chrome 版本
  2. 02更改 URL 前验证 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 凭证导出到 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 的模板 URL chromium-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:实验性的 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/,然后生成 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 版本不匹配。

在测试区域完成端到端验证之前,请勿继续向所有区域发布。

评论

支持 Markdown