Skip to content

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 精确重跑失败阶段,如 ciplugin-prereleaserelease-checksrelease_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 和常规 CIJob: 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=truerelease_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
包 TelegramJob: Run package Telegram E2E
子工作流: NPM Telegram Beta E2E
验证内容:rerun_group=allrelease_profile=full 时,基于父产物的 Telegram 包证明;或当 release_package_spec / npm_telegram_package_spec 设置时,基于已发布包的 Telegram 证明。
重跑方式: rerun_group=npm-telegram,需指定 release_package_specnpm_telegram_package_spec
Umbrella 验证器Job: Verify full validation
子工作流:
验证内容: 重新检查记录的子运行结论,并从子工作流追加最慢 job 表格。
重跑方式: 在重跑失败的子 job 成功后,仅重跑此 job。

对于 ref=mainrerun_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 组。
安装 smokeJob: Run install smoke
支撑工作流: Install Smoke
测试内容: 完整安装路径(复用根 Dockerfile smoke 镜像)、QR 包安装、root 和 gateway Docker smokes、安装程序 Docker 测试、Bun 全局安装 image-provider smoke,以及快速捆绑插件安装/卸载 E2E。
重跑方式: rerun_group=install-smoke
跨 OSJob: cross_os_release_checks
支撑工作流: OpenClaw Cross-OS Release Checks (Reusable)
测试内容: 在 Linux、Windows、macOS 上对选定的 provider 和 mode 进行全新安装和升级通道,使用候选 tarball 加上基线包。
重跑方式: rerun_group=cross-os
仓库和实时 E2EJob: Run repo/live E2E validation
支撑工作流: OpenClaw Live And E2E Checks (Reusable)
测试内容: 仓库 E2E、实时缓存、OpenAI websocket 流、原生实时 provider 和插件分片,以及由 release_profile 选择的 Docker 支持的实时模型/后端/网关 harness。
运行条件: run_release_soak=truerelease_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=truerelease_profile=full 或聚焦的 rerun_group=live-e2e
重跑方式: rerun_group=live-e2e
Package AcceptanceJob: 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 laneRun QA Lab parity report
支撑工作流: 直接 job
测试内容: 候选和基线 agentic 对比包,然后生成对比报告。
重跑方式: rerun_group=qa-parityrerun_group=qa
QA 实时 MatrixJob: Run QA Lab live Matrix lane
支撑工作流: 直接 job
测试内容:qa-live-shared 环境中快速运行实时 Matrix QA profile。
重跑方式: rerun_group=qa-livererun_group=qa
QA 实时 TelegramJob: Run QA Lab live Telegram lane
支撑工作流: 直接 job
测试内容: 使用 Convex CI 凭据租约进行实时 Telegram QA。
重跑方式: rerun_group=qa-livererun_group=qa
发布验证器Job: Verify release checks
支撑工作流:
测试内容: 所选 rerun group 的必要发布检查 job。
重跑方式: 在聚焦的子 job 通过后重跑此 job。

Docker 发布路径分块

live_suite_filter 为空时,Docker 发布路径阶段运行以下分块:

分块覆盖范围
core核心 Docker 发布路径 smoke 通道。
package-update-openaiOpenAI 包安装/更新行为、Codex 按需安装、Codex 插件实时对话以及 Chat Completions 工具调用。
package-update-anthropicAnthropic 包安装和更新行为。
package-update-core不依赖 provider 的包和更新行为。
plugins-runtime-plugins插件运行时通道,练习插件行为。
plugins-runtime-services服务支持和实时插件运行时通道;如请求则包含 OpenWebUI。
plugins-runtime-install-aplugins-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-smokenative-live-src-gateway-profiles-opencode-go-smokefull 使用更广泛的 Anthropic 和 OpenCode Go 模型分片。聚焦重跑仍可使用聚合的 native-live-src-gateway-profiles-anthropicnative-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 发布路径验证。
packagePackage Acceptance。
qaQA 对比加 QA 实时通道。
qa-parity仅 QA 对比通道和报告。
qa-live仅 QA 实时 Matrix 和 Telegram。
npm-telegram已发布包的 Telegram E2E;需要 release_package_specnpm_telegram_package_spec

当某个实时套件失败时,在 rerun_group=live-e2e 上使用 live_suite_filter。有效过滤器 id 定义在可复用 live/E2E 工作流中,包括 docker-live-modelslive-gateway-dockerlive-gateway-anthropic-dockerlive-gateway-google-dockerlive-gateway-minimax-dockerlive-gateway-advisory-dockerlive-cli-backend-dockerlive-acp-bind-dockerlive-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-upgradewindowspackaged-fresh。跨 OS 摘要包含已升级包通道的每个阶段计时,长时间运行的命令会打印心跳行,以便在 job 超时之前看到卡住的 Windows 更新。

QA 发布检查通道是咨询性的,除了标准运行时工具覆盖门控。标准层级中 OpenClaw 动态工具漂移会阻塞发布检查验证器;其他 QA 仅失败作为警告报告。当需要新 QA 证据时,重跑 rerun_group=qaqa-parityqa-live

需要保留的证据

保留 Full Release Validation 摘要作为发布级别的索引。它链接子运行 ID 并包含最慢 job 表格。对于失败,先检查子工作流,然后重跑上面最小的匹配句柄。

有用的产物:

  • 来自 Full Release Validation 父工作流和 OpenClaw Release Checksrelease-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。具体重跑命令会出现在发布产物中。