43 KiB
| read_when | summary | title | x-i18n | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Canales de lanzamiento, lista de comprobación del operador, cajas de validación, nomenclatura de versiones y cadencia | Política de lanzamiento |
|
OpenClaw tiene tres canales públicos de lanzamiento:
- stable: lanzamientos etiquetados que se publican en npm
betade forma predeterminada, o en npmlatestcuando se solicita explícitamente - beta: etiquetas de versión preliminar que se publican en npm
beta - dev: la cabecera móvil de
main
Nomenclatura de versiones
- Versión de lanzamiento estable:
YYYY.M.D- Etiqueta de Git:
vYYYY.M.D
- Etiqueta de Git:
- Versión de lanzamiento de corrección estable:
YYYY.M.D-N- Etiqueta de Git:
vYYYY.M.D-N
- Etiqueta de Git:
- Versión preliminar beta:
YYYY.M.D-beta.N- Etiqueta de Git:
vYYYY.M.D-beta.N
- Etiqueta de Git:
- No rellene con ceros el mes ni el día
latestsignifica el lanzamiento estable actual de npm promocionadobetasignifica el destino de instalación beta actual- Los lanzamientos estables y de corrección estable se publican en npm
betade forma predeterminada; los operadores de lanzamiento pueden apuntar explícitamente alatest, o promocionar más tarde una compilación beta evaluada - Cada lanzamiento estable de OpenClaw distribuye juntos el paquete npm y la aplicación macOS; los lanzamientos beta normalmente validan y publican primero la ruta npm/paquete, con la compilación/firma/notarización de la aplicación Mac reservada para estable salvo que se solicite explícitamente
Cadencia de lanzamientos
- Los lanzamientos avanzan primero por beta
- Estable viene solo después de que se valide la beta más reciente
- Los mantenedores normalmente cortan los lanzamientos desde una rama
release/YYYY.M.Dcreada a partir demainactual, para que la validación y las correcciones del lanzamiento no bloqueen el nuevo desarrollo enmain - Si se ha enviado o publicado una etiqueta beta y necesita una corrección, los mantenedores cortan
la siguiente etiqueta
-beta.Nen lugar de eliminar o recrear la etiqueta beta antigua - El procedimiento detallado de lanzamiento, las aprobaciones, las credenciales y las notas de recuperación son solo para mantenedores
Lista de comprobación del operador de lanzamiento
Esta lista de comprobación es la forma pública del flujo de lanzamiento. Las credenciales privadas, la firma, la notarización, la recuperación de dist-tag y los detalles de reversión de emergencia permanecen en el manual de lanzamiento solo para mantenedores.
- Comience desde
mainactual: haga pull de lo más reciente, confirme que el commit objetivo se haya enviado, y confirme que la CI demainactual esté suficientemente verde para crear una rama desde ella. - Reescriba la sección superior de
CHANGELOG.mddesde el historial real de commits con/changelog, mantenga las entradas orientadas al usuario, confírmela, envíela, y haga rebase/pull una vez más antes de crear la rama. - Revise los registros de compatibilidad de lanzamiento en
src/plugins/compat/registry.tsysrc/commands/doctor/shared/deprecation-compat.ts. Elimine compatibilidad caducada solo cuando la ruta de actualización siga cubierta, o registre por qué se mantiene intencionalmente. - Cree
release/YYYY.M.Ddesdemainactual; no realice el trabajo normal de lanzamiento directamente enmain. - Actualice cada ubicación de versión requerida para la etiqueta prevista, ejecute
pnpm plugins:syncpara que los paquetes Plugin publicables compartan la versión de lanzamiento y los metadatos de compatibilidad, y luego ejecute la verificación previa determinista local:pnpm check:test-types,pnpm check:architecture,pnpm build && pnpm ui:build,pnpm plugins:sync:check, ypnpm release:check. - Ejecute
OpenClaw NPM Releaseconpreflight_only=true. Antes de que exista una etiqueta, se permite un SHA completo de rama de lanzamiento de 40 caracteres solo para la validación de verificación previa. Guarde elpreflight_run_idexitoso. - Inicie todas las pruebas previas al lanzamiento con
Full Release Validationpara la rama de lanzamiento, la etiqueta o el SHA de commit completo. Este es el único punto de entrada manual para las cuatro grandes cajas de prueba de lanzamiento: Vitest, Docker, QA Lab y Package. - Si la validación falla, corríjalo en la rama de lanzamiento y vuelva a ejecutar el archivo, canal, trabajo de workflow, perfil de paquete, proveedor o allowlist de modelos fallido más pequeño que demuestre la corrección. Vuelva a ejecutar el paraguas completo solo cuando la superficie cambiada vuelva obsoleta la evidencia anterior.
- Para beta, etiquete
vYYYY.M.D-beta.N, luego ejecuteOpenClaw Release Publishdesde la ramarelease/YYYY.M.Dcorrespondiente. Verificapnpm plugins:sync:check, publica primero en npm todos los paquetes Plugin publicables, publica el mismo conjunto en ClawHub en segundo lugar, y luego promociona el artefacto de verificación previa npm de OpenClaw preparado con el dist-tag correspondiente. Después de publicar, ejecute la aceptación de paquete posterior a la publicación contra el paquete publicadoopenclaw@YYYY.M.D-beta.Noopenclaw@beta. Si una versión preliminar enviada o publicada necesita una corrección, corte el siguiente número de versión preliminar correspondiente; no elimine ni reescriba la versión preliminar antigua. - Para estable, continúe solo después de que la beta evaluada o el candidato de lanzamiento tenga la
evidencia de validación requerida. La publicación npm estable también pasa por
OpenClaw Release Publish, reutilizando el artefacto de verificación previa exitoso mediantepreflight_run_id; la preparación del lanzamiento estable de macOS también requiere el.zip,.dmg,.dSYM.zipempaquetados yappcast.xmlactualizado enmain. - Después de publicar, ejecute el verificador npm posterior a la publicación, el E2E de Telegram
publicado-npm independiente opcional cuando necesite prueba de canal posterior a la publicación,
la promoción de dist-tag cuando sea necesaria, las notas de lanzamiento/versión preliminar de GitHub desde la
sección completa correspondiente de
CHANGELOG.md, y los pasos de anuncio del lanzamiento.
Verificación previa del lanzamiento
- Ejecuta
pnpm check:test-typesantes de la verificación previa de lanzamiento para que el TypeScript de pruebas siga cubierto fuera de la puerta local más rápida depnpm check - Ejecuta
pnpm check:architectureantes de la verificación previa de lanzamiento para que las comprobaciones más amplias de ciclos de importación y límites de arquitectura estén en verde fuera de la puerta local más rápida - Ejecuta
pnpm build && pnpm ui:buildantes depnpm release:checkpara que los artefactos de lanzamientodist/*esperados y el paquete de Control UI existan para el paso de validación del paquete - Ejecuta
pnpm plugins:syncdespués del incremento de versión raíz y antes de etiquetar. Actualiza las versiones de paquetes de plugins publicables, los metadatos de compatibilidad de pares/API de OpenClaw, los metadatos de compilación y los stubs de changelog de plugins para que coincidan con la versión de lanzamiento del núcleo.pnpm plugins:sync:checkes la guarda de lanzamiento no mutante; el flujo de publicación falla antes de cualquier mutación del registro si este paso se olvidó. - Ejecuta el workflow manual
Full Release Validationantes de la aprobación del lanzamiento para iniciar todas las cajas de prueba previas al lanzamiento desde un único punto de entrada. Acepta una rama, etiqueta o SHA de commit completo, despachaCImanual y despachaOpenClaw Release Checkspara smoke de instalación, aceptación de paquetes, suites de ruta de lanzamiento de Docker, live/E2E, OpenWebUI, paridad de QA Lab, Matrix y carriles de Telegram. Conrelease_profile=fullyrerun_group=all, también ejecuta el E2E de Telegram de paquete contra el artefactorelease-package-under-testde las comprobaciones de lanzamiento. Proporcionanpm_telegram_package_specdespués de publicar cuando el mismo E2E de Telegram también deba probar el paquete npm publicado. Proporcionapackage_acceptance_package_specdespués de publicar cuando Package Acceptance deba ejecutar su matriz de paquete/actualización contra el paquete npm enviado en lugar del artefacto construido desde el SHA. Proporcionaevidence_package_speccuando el informe privado de evidencia deba demostrar que la validación coincide con un paquete npm publicado sin forzar el E2E de Telegram. Ejemplo:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.D - Ejecuta el workflow manual
Package Acceptancecuando quieras una prueba por canal lateral para un candidato de paquete mientras continúa el trabajo de lanzamiento. Usasource=npmparaopenclaw@beta,openclaw@latesto una versión de lanzamiento exacta;source=refpara empaquetar una rama/etiqueta/SHApackage_refde confianza con el arnésworkflow_refactual;source=urlpara un tarball HTTPS con un SHA-256 obligatorio; osource=artifactpara un tarball subido por otra ejecución de GitHub Actions. El workflow resuelve el candidato enpackage-under-test, reutiliza el programador de lanzamiento Docker E2E contra ese tarball y puede ejecutar QA de Telegram contra el mismo tarball contelegram_mode=mock-openaiotelegram_mode=live-frontier. Cuando los carriles de Docker seleccionados incluyenpublished-upgrade-survivor, el artefacto de paquete es el candidato ypublished_upgrade_survivor_baselineselecciona la línea base publicada. Ejemplo:gh workflow run package-acceptance.yml --ref main -f workflow_ref=main -f source=npm -f package_spec=openclaw@beta -f suite_profile=product -f published_upgrade_survivor_baseline=openclaw@2026.4.26 -f telegram_mode=mock-openaiPerfiles comunes:smoke: carriles de instalación/canal/agente, red de Gateway y recarga de configuraciónpackage: carriles de paquete/actualización/plugin nativos del artefacto sin OpenWebUI ni ClawHub liveproduct: perfil de paquete más canales MCP, limpieza de cron/subagente, búsqueda web de OpenAI y OpenWebUIfull: fragmentos de ruta de lanzamiento de Docker con OpenWebUIcustom: selección exacta dedocker_lanespara una repetición enfocada
- Ejecuta directamente el workflow manual
CIcuando solo necesites cobertura completa de CI normal para el candidato de lanzamiento. Los despachos manuales de CI omiten el alcance por cambios y fuerzan los shards de Linux Node, los shards de plugins agrupados, contratos de canal, compatibilidad con Node 22,check,check-additional, smoke de compilación, comprobaciones de docs, Skills de Python, Windows, macOS, Android y carriles de i18n de Control UI. Ejemplo:gh workflow run ci.yml --ref release/YYYY.M.D - Ejecuta
pnpm qa:otel:smokeal validar la telemetría de lanzamiento. Ejercita QA-lab mediante un receptor OTLP/HTTP local y verifica los nombres de spans de trazas exportados, los atributos acotados y la redacción de contenido/identificadores sin requerir Opik, Langfuse u otro recolector externo. - Ejecuta
pnpm release:checkantes de cada lanzamiento etiquetado - Ejecuta
OpenClaw Release Publishpara la secuencia de publicación mutante después de que exista la etiqueta. Despáchalo desderelease/YYYY.M.D(omainal publicar una etiqueta alcanzable desde main), pasa la etiqueta de lanzamiento y elpreflight_run_idcorrecto de npm de OpenClaw, y conserva el alcance de publicación de plugins predeterminadoall-publishablesalvo que estés ejecutando deliberadamente una reparación enfocada. El workflow serializa la publicación npm de plugins, la publicación de plugins en ClawHub y la publicación npm de OpenClaw para que el paquete del núcleo no se publique antes que sus plugins externalizados. - Las comprobaciones de lanzamiento ahora se ejecutan en un workflow manual separado:
OpenClaw Release Checks OpenClaw Release Checkstambién ejecuta el carril de paridad mock de QA Lab más el perfil rápido de Matrix live y el carril de QA de Telegram antes de la aprobación del lanzamiento. Los carriles live usan el entornoqa-live-shared; Telegram también usa leases de credenciales de Convex CI. Ejecuta el workflow manualQA-Lab - All Lanesconmatrix_profile=allymatrix_shards=truecuando quieras el inventario completo de transporte, medios y E2EE de Matrix en paralelo.- La validación en tiempo de ejecución de instalación y actualización entre sistemas operativos forma parte de
OpenClaw Release ChecksyFull Release Validationpúblicos, que llaman directamente al workflow reutilizable.github/workflows/openclaw-cross-os-release-checks-reusable.yml - Esta separación es intencional: mantener la ruta real de lanzamiento npm corta, determinista y centrada en artefactos, mientras las comprobaciones live más lentas permanecen en su propio carril para que no demoren ni bloqueen la publicación
- Las comprobaciones de lanzamiento con secretos deben despacharse mediante
Full Release Validationo desde la referencia de workflowmain/release para que la lógica del workflow y los secretos permanezcan controlados OpenClaw Release Checksacepta una rama, etiqueta o SHA de commit completo siempre que el commit resuelto sea alcanzable desde una rama de OpenClaw o una etiqueta de lanzamiento- La verificación previa solo de validación de
OpenClaw NPM Releasetambién acepta el SHA completo de 40 caracteres del commit actual de la rama del workflow sin requerir una etiqueta enviada - Esa ruta SHA es solo de validación y no puede promoverse a una publicación real
- En modo SHA, el workflow sintetiza
v<package.json version>solo para la comprobación de metadatos del paquete; la publicación real sigue requiriendo una etiqueta de lanzamiento real - Ambos workflows mantienen la ruta real de publicación y promoción en runners alojados por GitHub, mientras que la ruta de validación no mutante puede usar los runners Linux más grandes de Blacksmith
- Ese workflow ejecuta
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheusando los secretos de workflowOPENAI_API_KEYyANTHROPIC_API_KEY - La verificación previa de lanzamiento npm ya no espera al carril separado de comprobaciones de lanzamiento
- Ejecuta
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(o la etiqueta beta/corrección correspondiente) antes de la aprobación - Después de publicar en npm, ejecuta
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(o la versión beta/corrección correspondiente) para verificar la ruta de instalación del registro publicado en un prefijo temporal nuevo - Después de una publicación beta, ejecuta
OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC=openclaw@YYYY.M.D-beta.N OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=ci pnpm test:docker:npm-telegram-livepara verificar el onboarding de paquete instalado, la configuración de Telegram y el E2E real de Telegram contra el paquete npm publicado usando el pool compartido de credenciales alquiladas de Telegram. Las ejecuciones puntuales locales de mantenedores pueden omitir las variables de Convex y pasar directamente las tres credenciales de entornoOPENCLAW_QA_TELEGRAM_*. - Los mantenedores pueden ejecutar la misma comprobación posterior a la publicación desde GitHub Actions mediante el
workflow manual
NPM Telegram Beta E2E. Es intencionalmente solo manual y no se ejecuta en cada merge. - La automatización de lanzamiento de mantenedores ahora usa verificación previa y luego promoción:
- la publicación npm real debe pasar un
preflight_run_idnpm correcto - la publicación npm real debe despacharse desde la misma rama
mainorelease/YYYY.M.Dque la ejecución correcta de verificación previa - los lanzamientos npm estables apuntan a
betade forma predeterminada - la publicación npm estable puede apuntar explícitamente a
latestmediante la entrada del workflow - la mutación de dist-tag de npm basada en token ahora vive en
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlpor seguridad, porquenpm dist-tag addaún necesitaNPM_TOKENmientras el repo público mantiene publicación solo con OIDC macOS Releasepúblico es solo de validación; cuando una etiqueta existe solo en una rama de lanzamiento pero el workflow se despacha desdemain, establecepublic_release_branch=release/YYYY.M.D- la publicación privada real de mac debe pasar un
preflight_run_idyvalidate_run_idprivados de mac correctos - las rutas de publicación reales promueven artefactos preparados en lugar de reconstruirlos de nuevo
- la publicación npm real debe pasar un
- Para lanzamientos estables de corrección como
YYYY.M.D-N, el verificador posterior a la publicación también comprueba la misma ruta de actualización con prefijo temporal deYYYY.M.DaYYYY.M.D-Npara que las correcciones de lanzamiento no puedan dejar silenciosamente instalaciones globales antiguas en el payload estable base - La verificación previa de lanzamiento npm falla de forma cerrada salvo que el tarball incluya tanto
dist/control-ui/index.htmlcomo un payload no vacíodist/control-ui/assets/para no volver a enviar un dashboard de navegador vacío - La verificación posterior a la publicación también comprueba que los entrypoints de plugins publicados y
los metadatos de paquetes estén presentes en el diseño del registro instalado. Un lanzamiento que
envía payloads de runtime de plugins faltantes falla el verificador posterior a la publicación y
no puede promoverse a
latest. pnpm test:install:smoketambién aplica el presupuestounpackedSizedel paquete npm en el tarball de actualización candidato, para que el e2e del instalador detecte bloat accidental del paquete antes de la ruta de publicación del lanzamiento- Si el trabajo de lanzamiento tocó la planificación de CI, manifiestos de tiempos de extensiones o
matrices de pruebas de extensiones, regenera y revisa las salidas de matriz
plugin-prerelease-extension-shardpropiedad del planificador desde.github/workflows/plugin-prerelease.ymlantes de la aprobación para que las notas de lanzamiento no describan un diseño de CI obsoleto - La preparación del lanzamiento estable de macOS también incluye las superficies del actualizador:
- el lanzamiento de GitHub debe terminar con los
.zip,.dmgy.dSYM.zipempaquetados appcast.xmlenmaindebe apuntar al nuevo zip estable después de publicar- la app empaquetada debe conservar un id de bundle no debug, una URL de feed de Sparkle
no vacía y un
CFBundleVersionigual o superior al piso canónico de compilación de Sparkle para esa versión de lanzamiento
- el lanzamiento de GitHub debe terminar con los
Cajas de prueba de lanzamiento
Full Release Validation es la forma en que los operadores inician todas las pruebas previas al lanzamiento desde
un único punto de entrada. Para una prueba de commit fijado en una rama de movimiento rápido, usa el
helper para que cada workflow hijo se ejecute desde una rama temporal fijada al SHA
objetivo:
pnpm ci:full-release --sha <full-sha>
El helper envía release-ci/<sha>-..., despacha Full Release Validation
desde esa rama con ref=<sha>, verifica que cada headSha de workflow hijo
coincida con el objetivo y luego elimina la rama temporal. Esto evita probar por accidente una
ejecución hija más nueva de main.
Para la validación de una rama o etiqueta de lanzamiento, ejecútala desde la referencia de workflow main
de confianza y pasa la rama o etiqueta de lanzamiento como ref:
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 evidence_package_spec=openclaw@YYYY.M.D-beta.N
El flujo de trabajo resuelve la ref de destino, despacha manualmente CI con
target_ref=<release-ref>, despacha OpenClaw Release Checks y despacha el E2E
independiente del paquete de Telegram cuando release_profile=full con
rerun_group=all o cuando npm_telegram_package_spec está definido. Luego,
OpenClaw Release Checks despliega smoke de instalación, comprobaciones de lanzamiento entre
sistemas operativos, cobertura live/E2E Docker de la ruta de lanzamiento,
Package Acceptance con QA del paquete de Telegram, paridad de QA Lab, Matrix
live y Telegram live. Una ejecución completa solo es aceptable cuando el resumen
de Full Release Validation muestra normal_ci y release_checks como
correctos. En modo full/all, el hijo npm_telegram también debe ser correcto;
fuera de full/all se omite salvo que se haya proporcionado un
npm_telegram_package_spec publicado. El resumen final del verificador incluye
tablas de trabajos más lentos para cada ejecución hija, de modo que el
responsable del lanzamiento pueda ver la ruta crítica actual sin descargar
registros.
Consulta validación completa del lanzamiento para ver la
matriz de etapas completa, los nombres exactos de los trabajos del flujo de
trabajo, las diferencias entre los perfiles stable y full, los artefactos y los
identificadores de reejecución focalizada.
Los flujos de trabajo hijos se despachan desde la ref de confianza que ejecuta
Full Release Validation, normalmente --ref main, incluso cuando la ref de destino apunta
a una rama o etiqueta de lanzamiento anterior. No hay una entrada independiente
de ref de flujo de trabajo para Full Release Validation; elige el arnés de
confianza eligiendo la ref de ejecución del flujo de trabajo.
No uses --ref main -f ref=<sha> para prueba de commit exacto en un main móvil;
los SHA de commit sin procesar no pueden ser refs de despacho de flujo de trabajo, así que usa
pnpm ci:full-release --sha <sha> para crear la rama temporal fijada.
Usa release_profile para seleccionar la amplitud live/de proveedor:
minimum: ruta Docker y OpenAI/core live más rápida y crítica para el lanzamientostable: minimum más cobertura de proveedor/backend stable para aprobación del lanzamientofull: stable más cobertura amplia de proveedor/medios consultiva
OpenClaw Release Checks usa la ref de flujo de trabajo de confianza para resolver
la ref de destino una vez como release-package-under-test y reutiliza ese
artefacto tanto en las comprobaciones Docker de la ruta de lanzamiento como en
Package Acceptance. Esto mantiene todas las cajas orientadas a paquetes en los
mismos bytes y evita compilaciones repetidas del paquete.
El smoke de instalación de OpenAI entre sistemas operativos usa OPENCLAW_CROSS_OS_OPENAI_MODEL cuando la
variable de repo/org está definida; de lo contrario, openai/gpt-5.4, porque esta línea está
probando la instalación del paquete, el onboarding, el arranque del Gateway y un
turno live de agente, no comparando el modelo predeterminado más lento. La matriz
más amplia de proveedores live sigue siendo el lugar para la cobertura específica de modelos.
Usa estas variantes según la etapa del lanzamiento:
# Validate an unpublished release candidate branch.
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
# Validate an exact pushed commit.
gh workflow run full-release-validation.yml \
--ref main \
-f ref=<40-char-sha> \
-f provider=openai \
-f mode=both
# After publishing a beta, add published-package Telegram E2E.
gh workflow run full-release-validation.yml \
--ref main \
-f ref=release/YYYY.M.D \
-f provider=openai \
-f mode=both \
-f release_profile=full \
-f evidence_package_spec=openclaw@YYYY.M.D-beta.N \
-f npm_telegram_package_spec=openclaw@YYYY.M.D-beta.N \
-f npm_telegram_provider_mode=mock-openai
No uses el paraguas completo como primera reejecución después de una corrección
focalizada. Si falla una caja, usa el flujo de trabajo hijo, trabajo, línea
Docker, perfil de paquete, proveedor de modelo o línea QA fallidos para la
siguiente prueba. Ejecuta de nuevo el paraguas completo solo cuando la corrección
haya cambiado la orquestación compartida del lanzamiento o haya vuelto obsoleta
la evidencia previa de todas las cajas. El verificador final del paraguas vuelve
a comprobar los ids registrados de las ejecuciones de flujos de trabajo hijos, así que después de que un
flujo de trabajo hijo se reejecute correctamente, reejecuta solo el trabajo padre
Verify full validation fallido.
Para recuperación acotada, pasa rerun_group al paraguas. all es la ejecución
real del candidato de lanzamiento, ci ejecuta solo el hijo de CI normal,
plugin-prerelease ejecuta solo el hijo de plugin exclusivo del lanzamiento,
release-checks ejecuta todas las cajas de lanzamiento, y los grupos de
lanzamiento más estrechos son install-smoke, cross-os, live-e2e,
package, qa, qa-parity, qa-live y npm-telegram.
Las reejecuciones focalizadas de npm-telegram requieren npm_telegram_package_spec; las ejecuciones
full/all con release_profile=full usan el artefacto de paquete de release-checks.
Vitest
La caja de Vitest es el flujo de trabajo hijo manual CI. La CI manual omite
intencionadamente el alcance por cambios y fuerza el grafo de pruebas normal
para el candidato de lanzamiento: fragmentos de Linux Node, fragmentos de Plugins
incluidos, contratos de canales, compatibilidad con Node 22, check,
check-additional, smoke de compilación, comprobaciones de documentación, Skills
de Python, Windows, macOS, Android y i18n de Control UI.
Usa esta caja para responder "¿el árbol de código fuente pasó la suite normal completa de pruebas?". No es lo mismo que la validación de producto en ruta de lanzamiento. Evidencia que conservar:
- resumen de
Full Release Validationque muestre la URL de la ejecuciónCIdespachada - ejecución
CIverde en el SHA de destino exacto - nombres de fragmentos fallidos o lentos de los trabajos de CI al investigar regresiones
- artefactos de temporización de Vitest, como
.artifacts/vitest-shard-timings.json, cuando una ejecución necesite análisis de rendimiento
Ejecuta la CI manual directamente solo cuando el lanzamiento necesite CI normal determinista, pero no las cajas Docker, QA Lab, live, entre sistemas operativos o de paquetes:
gh workflow run ci.yml --ref main -f target_ref=release/YYYY.M.D
Docker
La caja Docker vive en OpenClaw Release Checks mediante
openclaw-live-and-e2e-checks-reusable.yml, además del flujo de trabajo
install-smoke en modo de lanzamiento. Valida el candidato de lanzamiento
mediante entornos Docker empaquetados, no solo pruebas a nivel de fuente.
La cobertura Docker de lanzamiento incluye:
- smoke de instalación completo con el smoke de instalación global lenta de Bun habilitado
- preparación/reutilización de imagen de smoke del Dockerfile raíz por SHA de destino, con trabajos de QR, raíz/Gateway e instalador/Bun ejecutándose como fragmentos install-smoke separados
- líneas E2E del repositorio
- fragmentos Docker de ruta de lanzamiento:
core,package-update-openai,package-update-anthropic,package-update-core,plugins-runtime-plugins,plugins-runtime-services,plugins-runtime-install-a,plugins-runtime-install-b,plugins-runtime-install-c,plugins-runtime-install-d,plugins-runtime-install-e,plugins-runtime-install-f,plugins-runtime-install-gyplugins-runtime-install-h - cobertura de OpenWebUI dentro del fragmento
plugins-runtime-servicescuando se solicite - líneas divididas de instalación/desinstalación de Plugins incluidos
bundled-plugin-install-uninstall-0hastabundled-plugin-install-uninstall-23 - suites de proveedores live/E2E y cobertura Docker de modelos live cuando las comprobaciones de lanzamiento incluyan suites live
Usa los artefactos Docker antes de reejecutar. El planificador de ruta de
lanzamiento sube .artifacts/docker-tests/ con registros de línea,
summary.json, failures.json, tiempos de fase, JSON del plan del planificador
y comandos de reejecución. Para recuperación focalizada, usa
docker_lanes=<lane[,lane]> en el flujo de trabajo reutilizable live/E2E en vez de
reejecutar todos los fragmentos de lanzamiento. Los comandos de reejecución
generados incluyen package_artifact_run_id previo y entradas de imagen Docker
preparada cuando están disponibles, de modo que una línea fallida pueda reutilizar
el mismo tarball y las imágenes GHCR.
QA Lab
La caja QA Lab también forma parte de OpenClaw Release Checks. Es la puerta de
lanzamiento de comportamiento agéntico y a nivel de canal, separada de la mecánica
de paquetes de Vitest y Docker.
La cobertura de QA Lab de lanzamiento incluye:
- línea de paridad mock que compara la línea candidata OpenAI con la línea base Opus 4.6 usando el paquete de paridad agéntica
- perfil rápido de QA Matrix live usando el entorno
qa-live-shared - línea QA de Telegram live usando leases de credenciales CI de Convex
pnpm qa:otel:smokecuando la telemetría de lanzamiento necesita prueba local explícita
Usa esta caja para responder "¿el lanzamiento se comporta correctamente en escenarios QA y flujos de canales live?". Conserva las URLs de artefactos para las líneas de paridad, Matrix y Telegram al aprobar el lanzamiento. La cobertura completa de Matrix sigue disponible como una ejecución manual fragmentada de QA-Lab, no como la línea crítica de lanzamiento predeterminada.
Paquete
La caja Package es la puerta de producto instalable. Está respaldada por
Package Acceptance y el resolutor
scripts/resolve-openclaw-package-candidate.mjs. El resolutor normaliza un
candidato en el tarball package-under-test consumido por Docker E2E, valida el
inventario del paquete, registra la versión del paquete y el SHA-256, y mantiene
la ref del arnés del flujo de trabajo separada de la ref fuente del paquete.
Fuentes de candidatos admitidas:
source=npm:openclaw@beta,openclaw@latesto una versión exacta de lanzamiento de OpenClawsource=ref: empaqueta una rama, etiqueta o SHA de commit completo depackage_refde confianza con el arnésworkflow_refseleccionadosource=url: descarga un.tgzHTTPS conpackage_sha256requeridosource=artifact: reutiliza un.tgzsubido por otra ejecución de GitHub Actions
OpenClaw Release Checks ejecuta Package Acceptance con source=artifact, el
artefacto de paquete de lanzamiento preparado, suite_profile=custom,
docker_lanes=doctor-switch update-channel-switch upgrade-survivor published-upgrade-survivor plugins-offline plugin-update,
published_upgrade_survivor_baselines=all-since-2026.4.23,
published_upgrade_survivor_scenarios=reported-issues y
telegram_mode=mock-openai. Package Acceptance mantiene migración, actualización,
limpieza de dependencias de Plugins obsoletas, fixtures de Plugins offline,
actualización de Plugins y QA del paquete de Telegram contra el mismo tarball
resuelto. La matriz de actualización cubre cada línea base stable publicada en npm desde 2026.4.23 hasta latest; usa
Package Acceptance con source=npm para un candidato ya enviado, o
source=ref/source=artifact para un tarball npm local respaldado por SHA antes
de publicar. Es el reemplazo nativo de GitHub para la mayor parte de la cobertura
de paquetes/actualizaciones que antes requería Parallels. Las comprobaciones de
lanzamiento entre sistemas operativos siguen siendo importantes para onboarding,
instalador y comportamiento de plataforma específicos del sistema operativo, pero
la validación de producto de paquetes/actualizaciones debe preferir Package Acceptance.
La lista canónica para validación de actualizaciones y Plugins es
probar actualizaciones y Plugins. Úsala al
decidir qué línea local, Docker, Package Acceptance o release-check prueba un
cambio de instalación/actualización de Plugin, limpieza de doctor o migración de
paquete publicado. La migración exhaustiva de actualización publicada desde cada
paquete stable 2026.4.23+ es un flujo de trabajo manual separado Update Migration,
no parte de Full Release CI.
La tolerancia heredada de package-acceptance está intencionadamente limitada en el tiempo. Los paquetes hasta
2026.4.25 pueden usar la ruta de compatibilidad para vacíos de metadatos ya publicados
en npm: entradas privadas de inventario QA ausentes del tarball, falta de
gateway install --wrapper, archivos de parche ausentes en el fixture git
derivado del tarball, falta de persistencia de update.channel, ubicaciones
heredadas de registro de instalación de Plugins, falta de persistencia de
registro de instalación de marketplace y migración de metadatos de configuración
durante plugins update. El paquete publicado 2026.4.26 puede advertir sobre
archivos de marca de metadatos de compilación local que ya se enviaron. Los paquetes
posteriores deben satisfacer los contratos de paquete modernos; esos mismos vacíos
fallan la validación de lanzamiento.
Usa perfiles más amplios de Package Acceptance cuando la pregunta del lanzamiento sea sobre un paquete realmente instalable:
gh workflow run package-acceptance.yml \
--ref main \
-f workflow_ref=main \
-f source=npm \
-f package_spec=openclaw@beta \
-f suite_profile=product \
-f published_upgrade_survivor_baseline=openclaw@2026.4.26
Perfiles de paquete comunes:
smoke: líneas rápidas de instalación de paquete/canal/agente, red de Gateway y recarga de configuraciónpackage: contratos de paquete de instalación/actualización/Plugin sin ClawHub live; este es el valor predeterminado de release-checkproduct:packagemás canales MCP, limpieza de cron/subagente, búsqueda web de OpenAI y OpenWebUIfull: fragmentos Docker de ruta de lanzamiento con OpenWebUIcustom: lista exacta dedocker_lanespara reejecuciones focalizadas
Para la prueba de Telegram de candidato de paquete, habilita telegram_mode=mock-openai o
telegram_mode=live-frontier en Package Acceptance. El flujo de trabajo pasa el
tarball package-under-test resuelto al carril de Telegram; el flujo de trabajo
independiente de Telegram aún acepta una especificación npm publicada para comprobaciones posteriores a la publicación.
Automatización de publicación de lanzamientos
OpenClaw Release Publish es el punto de entrada mutante normal de publicación. Orquesta
los flujos de trabajo de publicador de confianza en el orden que necesita el lanzamiento:
- Extrae la etiqueta de lanzamiento y resuelve su SHA de commit.
- Verifica que la etiqueta sea alcanzable desde
mainorelease/*. - Ejecuta
pnpm plugins:sync:check. - Activa
Plugin NPM Releaseconpublish_scope=all-publishableyref=<release-sha>. - Activa
Plugin ClawHub Releasecon el mismo alcance y SHA. - Activa
OpenClaw NPM Releasecon la etiqueta de lanzamiento, el dist-tag de npm y elpreflight_run_idguardado.
Ejemplo de publicación beta:
gh workflow run openclaw-release-publish.yml \
--ref release/YYYY.M.D \
-f tag=vYYYY.M.D-beta.N \
-f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \
-f npm_dist_tag=beta
Publicación estable al dist-tag beta predeterminado:
gh workflow run openclaw-release-publish.yml \
--ref release/YYYY.M.D \
-f tag=vYYYY.M.D \
-f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \
-f npm_dist_tag=beta
La promoción estable directamente a latest es explícita:
gh workflow run openclaw-release-publish.yml \
--ref release/YYYY.M.D \
-f tag=vYYYY.M.D \
-f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \
-f npm_dist_tag=latest
Usa los flujos de trabajo de nivel inferior Plugin NPM Release y Plugin ClawHub Release
solo para trabajos enfocados de reparación o republicación. Para una reparación de plugin seleccionado, pasa
plugin_publish_scope=selected y plugins=@openclaw/name a
OpenClaw Release Publish, o activa el flujo de trabajo hijo directamente cuando el
paquete de OpenClaw no deba publicarse.
Entradas del flujo de trabajo NPM
OpenClaw NPM Release acepta estas entradas controladas por el operador:
tag: etiqueta de lanzamiento requerida, comov2026.4.2,v2026.4.2-1ov2026.4.2-beta.1; cuandopreflight_only=true, también puede ser el SHA de commit completo de 40 caracteres de la rama del flujo de trabajo actual para una comprobación previa solo de validaciónpreflight_only:truesolo para validación/compilación/paquete,falsepara la ruta de publicación realpreflight_run_id: requerido en la ruta de publicación real para que el flujo de trabajo reutilice el tarball preparado de la ejecución de comprobación previa correctanpm_dist_tag: etiqueta de destino de npm para la ruta de publicación; el valor predeterminado esbeta
OpenClaw Release Publish acepta estas entradas controladas por el operador:
tag: etiqueta de lanzamiento requerida; ya debe existirpreflight_run_id: id de ejecución de comprobación previa correcta deOpenClaw NPM Release; requerido cuandopublish_openclaw_npm=truenpm_dist_tag: etiqueta de destino de npm para el paquete OpenClawplugin_publish_scope: el valor predeterminado esall-publishable; usaselectedsolo para trabajos enfocados de reparaciónplugins: nombres de paquetes@openclaw/*separados por comas cuandoplugin_publish_scope=selectedpublish_openclaw_npm: el valor predeterminado estrue; establecefalsesolo cuando uses el flujo de trabajo como orquestador de reparación solo para plugins
OpenClaw Release Checks acepta estas entradas controladas por el operador:
ref: rama, etiqueta o SHA de commit completo para validar. Las comprobaciones que contienen secretos requieren que el commit resuelto sea alcanzable desde una rama de OpenClaw o una etiqueta de lanzamiento.
Reglas:
- Las etiquetas estables y de corrección pueden publicarse en
betaolatest - Las etiquetas de prelanzamiento beta solo pueden publicarse en
beta - Para
OpenClaw NPM Release, la entrada de SHA de commit completo solo se permite cuandopreflight_only=true OpenClaw Release ChecksyFull Release Validationson siempre solo de validación- La ruta de publicación real debe usar el mismo
npm_dist_tagusado durante la comprobación previa; el flujo de trabajo verifica esos metadatos antes de que la publicación continúe
Secuencia de lanzamiento estable de npm
Al preparar un lanzamiento estable de npm:
- Ejecuta
OpenClaw NPM Releaseconpreflight_only=true- Antes de que exista una etiqueta, puedes usar el SHA de commit completo de la rama del flujo de trabajo actual para una ejecución de prueba solo de validación del flujo de trabajo de comprobación previa
- Elige
npm_dist_tag=betapara el flujo normal beta primero, olatestsolo cuando quieras intencionalmente una publicación estable directa - Ejecuta
Full Release Validationen la rama de lanzamiento, la etiqueta de lanzamiento o el SHA de commit completo cuando quieras CI normal más cobertura de caché de prompts en vivo, Docker, QA Lab, Matrix y Telegram desde un único flujo de trabajo manual - Si intencionalmente solo necesitas el grafo de pruebas normal determinista, ejecuta el
flujo de trabajo manual
CIen la ref de lanzamiento en su lugar - Guarda el
preflight_run_idcorrecto - Ejecuta
OpenClaw Release Publishcon la mismatag, el mismonpm_dist_tagy elpreflight_run_idguardado; publica los plugins externalizados en npm y ClawHub antes de promover el paquete npm de OpenClaw - Si el lanzamiento quedó en
beta, usa el flujo de trabajo privadoopenclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlpara promover esa versión estable debetaalatest - Si el lanzamiento se publicó intencionalmente directamente en
latestybetadebe seguir de inmediato la misma compilación estable, usa ese mismo flujo de trabajo privado para apuntar ambos dist-tags a la versión estable, o deja que su sincronización programada de autorreparación muevabetamás tarde
La mutación de dist-tag vive en el repositorio privado por seguridad porque aún
requiere NPM_TOKEN, mientras que el repositorio público mantiene publicación solo con OIDC.
Eso mantiene tanto la ruta de publicación directa como la ruta de promoción beta primero documentadas y visibles para el operador.
Si un maintainer debe recurrir a autenticación npm local, ejecuta cualquier comando de la CLI
de 1Password (op) solo dentro de una sesión tmux dedicada. No llames a op
directamente desde la shell principal del agente; mantenerlo dentro de tmux hace que los prompts,
las alertas y el manejo de OTP sean observables y evita alertas repetidas del host.
Referencias públicas
.github/workflows/full-release-validation.yml.github/workflows/package-acceptance.yml.github/workflows/openclaw-npm-release.yml.github/workflows/openclaw-release-checks.yml.github/workflows/openclaw-cross-os-release-checks-reusable.ymlscripts/resolve-openclaw-package-candidate.mjsscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
Los maintainers usan la documentación privada de lanzamientos en
openclaw/maintainers/release/README.md
para el runbook real.