Appearance
Full Release Validation 是 OpenClaw 发布前的手动入口点,通过子工作流实现阶段可重跑,无需重启整个流程。运行 gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.D -f provider=openai -f mode=both -f release_profile=stable 启动;用 rerun_group 精确重跑失败阶段,如 ci、plugin-prerelease、release-checks。release_profile=stable 默认跳过 exhaustlive/Docker soak 测试,需设置 run_release_soak=true 或使用 full profile 启用。发布检查子工作流(OpenClaw Release Checks)包含 Install Smoke、Cross-OS、Live/E2E、Docker release-path 等阶段,每个阶段有独立的重跑分组。
OpenClaw Full Release Validation:阶段、重跑与证据
Full Release Validation 是发布前的总入口。它是预发布证据的唯一手动起点,但大部分工作由子工作流完成,所以单个失败的任务可以单独重跑,不必重启整个发布流程。
从受信任的工作流 ref(通常是 main)运行它,并传入发布分支、标签或完整 commit SHA 作为 ref:
bash
gh workflow run full-release-validation.yml \
--ref main \
-f ref=release/YYYY.M.D \
-f provider=openai \
-f mode=both \
-f release_profile=stable子工作流使用受信任的工作流 ref 作为测试框架(harness),使用输入的 ref 作为待测候选。这样即使验证旧的发布分支或标签,也能使用最新的验证逻辑。
默认 release_profile=stable 只运行阻塞发布的测试通道,跳过 exhaustlive/Docker soak 测试。传 run_release_soak=true 可以在 stable 运行中包含 soak 通道。release_profile=full 始终启用 soak 通道,因此全面咨询 profile 不会静默丢失覆盖。
Package Acceptance 通常从解析出的 ref 构建候选 tarball,包括用 pnpm ci:full-release 派发的完整 SHA 运行。beta 发布后,传 release_package_spec=openclaw@YYYY.M.D-beta.N 可以复用已发布的 npm 包进行发布检查、Package Acceptance、跨 OS、发布路径 Docker 和包 Telegram 测试。仅在 Package Acceptance 需要故意验证不同包时才使用 package_acceptance_package_spec。Codex 插件实时包通道遵循相同逻辑:已发布的 release_package_spec 值派生 codex_plugin_spec=npm:@openclaw/codex@<version>;SHA/artifcat 运行从所选 ref 打包 extensions/codex;操作员可以设置 codex_plugin_spec 直接指定 npm:、npm-pack: 或 git: 插件源。该通道授予该插件所需的明确 Codex CLI 安装权限,然后运行 Codex CLI 预检和同会话的 OpenAI agent 对话。
顶级阶段
| 阶段 | 详情 |
|---|---|
| 目标解析 | Job: Resolve target ref子工作流: 无 验证内容: 解析发布分支、标签或完整 commit SHA,并记录所选输入。 重跑方式: 如果此 job 失败,需重跑整个 umbrella。 |
| Vitest 和常规 CI | Job: Run normal full CI子工作流: CI验证内容: 对目标 ref 手动执行完整 CI 图,包括 Linux Node 通道、捆绑插件分片、插件和渠道契约分片、Node 22 兼容性、 check-*、check-additional-*、构建产物的 smoke 检查、文档检查、Python skills、Windows、macOS、Control UI 国际化以及 Android(通过 umbrella)。重跑方式: rerun_group=ci。 |
| 插件预发布 | Job: Run plugin prerelease validation子工作流: Plugin Prerelease验证内容: 仅发布时的插件静态检查、agentic 插件覆盖、完整扩展批次分片、插件预发布 Docker 通道,以及一个非阻塞的 plugin-inspector-advisory 产物用于兼容性排查。重跑方式: rerun_group=plugin-prerelease。 |
| 发布检查 | Job: Run release/live/Docker/QA validation子工作流: OpenClaw Release Checks验证内容: 安装 smoke、跨 OS 包检查、Package Acceptance、QA Lab 对比、实时 Matrix 和实时 Telegram。如果 run_release_soak=true 或 release_profile=full,还会运行 exhaustlive/E2E 套件和 Docker 发布路径块。重跑方式: rerun_group=release-checks 或更窄的 release-checks handle。 |
| 包产物 | Job: Prepare release package artifact子工作流: 无 验证内容: 尽早创建 release-package-under-test tarball,以便面向包的检查无需等待 OpenClaw Release Checks。重跑方式: 重跑整个 umbrella,或为已发布包的重跑提供 release_package_spec。 |
| 包 Telegram | Job: Run package Telegram E2E子工作流: NPM Telegram Beta E2E验证内容: 当 rerun_group=all 且 release_profile=full 时,基于父产物的 Telegram 包证明;或当 release_package_spec / npm_telegram_package_spec 设置时,基于已发布包的 Telegram 证明。重跑方式: rerun_group=npm-telegram,需指定 release_package_spec 或 npm_telegram_package_spec。 |
| Umbrella 验证器 | Job: Verify full validation子工作流: 无 验证内容: 重新检查记录的子运行结论,并从子工作流追加最慢 job 表格。 重跑方式: 在重跑失败的子 job 成功后,仅重跑此 job。 |
对于 ref=main 且 rerun_group=all,较新的 umbrella 会取代旧的。当父工作流被取消时,其监控器会取消它已派发的任何子工作流。发布分支和标签验证运行默认不会互相取消。
发布检查阶段
OpenClaw Release Checks 是最大的子工作流。它解析一次目标,并准备一个共享的 release-package-under-test 产物,供包或 Docker 相关阶段使用。
| 阶段 | 详情 |
|---|---|
| 发布目标 | Job: Resolve target ref支撑工作流: 无 测试内容: 所选 ref、可选的预期 SHA、profile、rerun group 和聚焦的 live suite 过滤器。 重跑方式: rerun_group=release-checks。 |
| 包产物 | Job: Prepare release package artifact支撑工作流: 无 测试内容: 打包或解析一个候选 tarball,上传 release-package-under-test 供下游面向包的检查使用。重跑方式: 重跑受影响的包、跨 OS 或 live/E2E 组。 |
| 安装 smoke | Job: Run install smoke支撑工作流: Install Smoke测试内容: 完整安装路径(复用根 Dockerfile smoke 镜像)、QR 包安装、root 和 gateway Docker smokes、安装程序 Docker 测试、Bun 全局安装 image-provider smoke,以及快速捆绑插件安装/卸载 E2E。 重跑方式: rerun_group=install-smoke。 |
| 跨 OS | Job: cross_os_release_checks支撑工作流: OpenClaw Cross-OS Release Checks (Reusable)测试内容: 在 Linux、Windows、macOS 上对选定的 provider 和 mode 进行全新安装和升级通道,使用候选 tarball 加上基线包。 重跑方式: rerun_group=cross-os。 |
| 仓库和实时 E2E | Job: Run repo/live E2E validation支撑工作流: OpenClaw Live And E2E Checks (Reusable)测试内容: 仓库 E2E、实时缓存、OpenAI websocket 流、原生实时 provider 和插件分片,以及由 release_profile 选择的 Docker 支持的实时模型/后端/网关 harness。运行条件: run_release_soak=true、release_profile=full 或聚焦的 rerun_group=live-e2e。重跑方式: rerun_group=live-e2e,可选 live_suite_filter。 |
| Docker 发布路径 | Job: Run Docker release-path validation支撑工作流: OpenClaw Live And E2E Checks (Reusable)测试内容: 针对共享包产物的发布路径 Docker 块。 运行条件: run_release_soak=true、release_profile=full 或聚焦的 rerun_group=live-e2e。重跑方式: rerun_group=live-e2e。 |
| Package Acceptance | Job: Run package acceptance支撑工作流: Package Acceptance测试内容: 离线插件包 fixtures、插件更新、mock-OpenAI Telegram 包验收,以及针对相同 tarball 的已发布升级幸存检查。阻塞性发布检查使用默认的最新已发布基线;soak 检查扩展到 2026.4.23 之后的所有 stable npm 发布以及报告问题的 fixtures。重跑方式: rerun_group=package。 |
| QA 对比 | Job: Run QA Lab parity lane 和 Run QA Lab parity report支撑工作流: 直接 job 测试内容: 候选和基线 agentic 对比包,然后生成对比报告。 重跑方式: rerun_group=qa-parity 或 rerun_group=qa。 |
| QA 实时 Matrix | Job: Run QA Lab live Matrix lane支撑工作流: 直接 job 测试内容: 在 qa-live-shared 环境中快速运行实时 Matrix QA profile。重跑方式: rerun_group=qa-live 或 rerun_group=qa。 |
| QA 实时 Telegram | Job: Run QA Lab live Telegram lane支撑工作流: 直接 job 测试内容: 使用 Convex CI 凭据租约进行实时 Telegram QA。 重跑方式: rerun_group=qa-live 或 rerun_group=qa。 |
| 发布验证器 | Job: Verify release checks支撑工作流: 无 测试内容: 所选 rerun group 的必要发布检查 job。 重跑方式: 在聚焦的子 job 通过后重跑此 job。 |
Docker 发布路径分块
当 live_suite_filter 为空时,Docker 发布路径阶段运行以下分块:
| 分块 | 覆盖范围 |
|---|---|
core | 核心 Docker 发布路径 smoke 通道。 |
package-update-openai | OpenAI 包安装/更新行为、Codex 按需安装、Codex 插件实时对话以及 Chat Completions 工具调用。 |
package-update-anthropic | Anthropic 包安装和更新行为。 |
package-update-core | 不依赖 provider 的包和更新行为。 |
plugins-runtime-plugins | 插件运行时通道,练习插件行为。 |
plugins-runtime-services | 服务支持和实时插件运行时通道;如请求则包含 OpenWebUI。 |
plugins-runtime-install-a 至 plugins-runtime-install-h | 为并行发布验证拆分的插件安装/运行时批次。 |
当只有一个 Docker 通道失败时,可在可复用 live/E2E 工作流上使用 docker_lanes=<lane[,lane]> 进行精确定位。发布产物包含每个通道的重跑命令,当可用时会重用包产物和镜像输入。
发布 profiles
release_profile 主要控制发布检查内的实时/provider 广度。它不会移除普通完整 CI、Plugin Prerelease、Install Smoke、Package Acceptance 或 QA Lab。对于 stable,exhaustive 仓库/实时 E2E 和 Docker 发布路径块属于 soak 覆盖,仅在 run_release_soak=true 时运行。full 强制开启 soak 覆盖,并在 rerun_group=all 时使 umbrella 运行针对父发布包产物的包 Telegram E2E,因此完整的预发布候选不会静默跳过该 Telegram 包通道。
| Profile | 预期用途 | 包含的实时/provider 覆盖范围 |
|---|---|---|
minimum | 最快的发布关键 smoke。 | OpenAI/core 实时路径、Docker 实时模型(OpenAI)、原生 gateway 核心、原生 OpenAI gateway profile、原生 OpenAI 插件、以及 Docker 实时 gateway OpenAI。 |
stable | 默认发布批准 profile。 | minimum 加上 Anthropic smoke、Google、MiniMax、后端、原生实时测试 harness、Docker 实时 CLI 后端、Docker ACP bind、Docker Codex harness、以及 OpenCode Go smoke 分片。 |
full | 全面咨询扫描。 | stable 加上咨询 provider、插件实时分片和媒体实时分片。 |
仅 full 模式增加的内容
这些套件被 stable 跳过,由 full 包含:
| 区域 | 仅 full 的覆盖范围 |
|---|---|
| Docker 实时模型 | OpenCode Go、OpenRouter、xAI、Z.ai 和 Fireworks。 |
| Docker 实时 gateway | 咨询 provider 分为 DeepSeek/Fireworks、OpenCode Go/OpenRouter、以及 xAI/Z.ai 分片。 |
| 原生 gateway provider profiles | 完整 Anthropic Opus 和 Sonnet/Haiku 分片、Fireworks、DeepSeek、完整 OpenCode Go 模型分片、OpenRouter、xAI 和 Z.ai。 |
| 原生插件实时分片 | 插件 A-K、L-N、O-Z 其他、Moonshot 和 xAI。 |
| 原生媒体实时分片 | 音频、Google 音乐、MiniMax 音乐以及视频组 A-D。 |
stable 包含 native-live-src-gateway-profiles-anthropic-smoke 和 native-live-src-gateway-profiles-opencode-go-smoke;full 使用更广泛的 Anthropic 和 OpenCode Go 模型分片。聚焦重跑仍可使用聚合的 native-live-src-gateway-profiles-anthropic 或 native-live-src-gateway-profiles-opencode-go 句柄。
聚焦重跑
使用 rerun_group 避免重复不相关的发布任务:
| Handle | 范围 |
|---|---|
all | 所有 Full Release Validation 阶段。 |
ci | 仅手动完整 CI 子工作流。 |
plugin-prerelease | 仅 Plugin Prerelease 子工作流。 |
release-checks | 所有 OpenClaw Release Checks 阶段。 |
install-smoke | 通过发布检查的 Install Smoke。 |
cross-os | 跨 OS 发布检查。 |
live-e2e | 仓库/实时 E2E 和 Docker 发布路径验证。 |
package | Package Acceptance。 |
qa | QA 对比加 QA 实时通道。 |
qa-parity | 仅 QA 对比通道和报告。 |
qa-live | 仅 QA 实时 Matrix 和 Telegram。 |
npm-telegram | 已发布包的 Telegram E2E;需要 release_package_spec 或 npm_telegram_package_spec。 |
当某个实时套件失败时,在 rerun_group=live-e2e 上使用 live_suite_filter。有效过滤器 id 定义在可复用 live/E2E 工作流中,包括 docker-live-models、live-gateway-docker、live-gateway-anthropic-docker、live-gateway-google-docker、live-gateway-minimax-docker、live-gateway-advisory-docker、live-cli-backend-docker、live-acp-bind-docker 和 live-codex-harness-docker。
live-gateway-advisory-docker 句柄是其三个 provider 分片的聚合重跑句柄,因此它仍会派发到所有咨询 Docker gateway job。
当某个跨 OS 通道失败时,在 rerun_group=cross-os 上使用 cross_os_suite_filter。过滤器接受 OS id、套件 id 或 OS/套件对,例如 windows/packaged-upgrade、windows 或 packaged-fresh。跨 OS 摘要包含已升级包通道的每个阶段计时,长时间运行的命令会打印心跳行,以便在 job 超时之前看到卡住的 Windows 更新。
QA 发布检查通道是咨询性的,除了标准运行时工具覆盖门控。标准层级中 OpenClaw 动态工具漂移会阻塞发布检查验证器;其他 QA 仅失败作为警告报告。当需要新 QA 证据时,重跑 rerun_group=qa、qa-parity 或 qa-live。
需要保留的证据
保留 Full Release Validation 摘要作为发布级别的索引。它链接子运行 ID 并包含最慢 job 表格。对于失败,先检查子工作流,然后重跑上面最小的匹配句柄。
有用的产物:
- 来自 Full Release Validation 父工作流和
OpenClaw Release Checks的release-package-under-test - Docker 发布路径产物,位于
.artifacts/docker-tests/ - Package Acceptance 的
package-under-test和 Docker 验收产物 - 每个 OS 和套件的跨 OS 发布检查产物
- QA 对比、Matrix 和 Telegram 产物
工作流文件
.github/workflows/full-release-validation.yml.github/workflows/openclaw-release-checks.yml.github/workflows/openclaw-live-and-e2e-checks-reusable.yml.github/workflows/plugin-prerelease.yml.github/workflows/install-smoke.yml.github/workflows/openclaw-cross-os-release-checks-reusable.yml.github/workflows/package-acceptance.yml
常见问题
怎么只重跑 Full Release Validation 中失败的 Install Smoke 阶段?
使用 rerun_group=install-smoke 重跑 umbrella。例如:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.D -f provider=openai -f mode=both -f release_profile=stable -f rerun_group=install-smoke。这将只触发 Install Smoke 阶段的子工作流,不会重新运行完整 CI 或其他检查。
release_profile=stable 和 release_profile=full 有什么区别?
stable 是默认 profile,运行发布阻塞的必要测试通道,跳过 exhaustlive 和 Docker soak 测试。full 启用所有 soak 测试,包括更多 provider (如 DeepSeek、Fireworks、xAI、Z.ai)、插件实时分片和媒体实时分片,同时还会对父发布包产物运行包 Telegram E2E(当 rerun_group=all 时)。如果要进行更全面的发布前验证,使用 full;日常发布批准使用 stable。
Docker release-path chunks 失败了怎么精确重跑?
使用 docker_lanes 参数在可复用 live/E2E 工作流上指定失败的分块名称。例如,如果 package-update-openai 分块失败,可以在重跑 umbrella 时设置:gh workflow run ... -f rerun_group=live-e2e -f live_suite_filter=docker-live-models 然后进一步在 openclaw-live-and-e2e-checks-reusable.yml 工作流上手动运行 docker_lanes=package-update-openai。具体重跑命令会出现在发布产物中。