48 KiB
| read_when | summary | title | x-i18n | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Лінії релізів, контрольний список оператора, середовища валідації, іменування версій і періодичність | Політика випусків |
|
OpenClaw має три публічні канали випусків:
- стабільний: теговані випуски, які типово публікуються до npm
betaабо до npmlatestза явним запитом - бета: передрелізні теги, які публікуються до npm
beta - розробницький: рухома вершина
main
Назви версій
- Версія стабільного випуску:
YYYY.M.D- Git-тег:
vYYYY.M.D
- Git-тег:
- Версія корекційного стабільного випуску:
YYYY.M.D-N- Git-тег:
vYYYY.M.D-N
- Git-тег:
- Версія бета-передрелізу:
YYYY.M.D-beta.N- Git-тег:
vYYYY.M.D-beta.N
- Git-тег:
- Не додавайте початкові нулі до місяця або дня
latestозначає поточний просунутий стабільний npm-випускbetaозначає поточну ціль встановлення бета-версії- Стабільні й корекційні стабільні випуски типово публікуються до npm
beta; оператори випуску можуть явно вибратиlatestабо пізніше просунути перевірену бета-збірку - Кожен стабільний випуск OpenClaw постачається разом із npm-пакетом і застосунком macOS; бета-випуски зазвичай спершу перевіряють і публікують шлях npm/пакета, а збирання/підписування/нотаризацію застосунку для Mac лишають для стабільного випуску, якщо немає явного запиту
Періодичність випусків
- Випуски рухаються спершу через бета-канал
- Стабільний випуск з’являється лише після валідації останньої бета-версії
- Супровідники зазвичай готують випуски з гілки
release/YYYY.M.D, створеної з поточногоmain, щоб валідація випуску й виправлення не блокували нову розробку вmain - Якщо бета-тег уже було відправлено або опубліковано й він потребує виправлення, супровідники створюють
наступний тег
-beta.Nзамість видалення або повторного створення старого бета-тега - Докладна процедура випуску, схвалення, облікові дані та нотатки щодо відновлення доступні лише супровідникам
Контрольний список оператора випуску
Цей контрольний список описує публічну форму потоку випуску. Приватні облікові дані, підписування, нотаризація, відновлення dist-tag і деталі аварійного відкату залишаються в інструкції з випуску лише для супровідників.
- Почніть із поточного
main: підтягніть останні зміни, підтвердьте, що цільовий коміт відправлено, і переконайтеся, що поточний CI дляmainдостатньо зелений, щоб створювати від нього гілку. - Перепишіть верхній розділ
CHANGELOG.mdна основі реальної історії комітів за допомогою/changelog, залиште записи орієнтованими на користувачів, закомітьте його, відправте й ще раз виконайте rebase/pull перед створенням гілки. - Перегляньте записи сумісності випуску в
src/plugins/compat/registry.tsіsrc/commands/doctor/shared/deprecation-compat.ts. Видаляйте прострочену сумісність лише тоді, коли шлях оновлення лишається покритим, або зафіксуйте, чому її навмисно збережено. - Створіть
release/YYYY.M.Dз поточногоmain; не виконуйте звичайну роботу над випуском безпосередньо вmain. - Оновіть усі потрібні місця з версіями для запланованого тегу, виконайте
pnpm plugins:sync, щоб публіковні пакети Plugin мали спільну версію випуску й метадані сумісності, а потім запустіть локальну детерміновану попередню перевірку:pnpm check:test-types,pnpm check:architecture,pnpm build && pnpm ui:build,pnpm plugins:sync:checkіpnpm release:check. - Запустіть
OpenClaw NPM Releaseзpreflight_only=true. До існування тегу для валідаційної попередньої перевірки дозволено повний 40-символьний SHA гілки випуску. Збережіть успішнийpreflight_run_id. - Запустіть усі передрелізні тести через
Full Release Validationдля гілки випуску, тегу або повного SHA коміту. Це єдина ручна точка входу для чотирьох великих тестових середовищ випуску: Vitest, Docker, QA Lab і Package. - Якщо валідація не пройшла, виправте в гілці випуску й повторно запустіть найменший невдалий файл, канал, завдання workflow, профіль пакета, провайдера або allowlist моделей, який доводить виправлення. Повторно запускайте повну парасольку лише тоді, коли змінена поверхня робить попередні докази застарілими.
- Для бета-версії створіть тег
vYYYY.M.D-beta.N, а потім запустітьOpenClaw Release Publishз відповідної гілкиrelease/YYYY.M.D. Він перевіряєpnpm plugins:sync:check, спершу публікує всі публіковні пакети Plugin до npm, потім публікує той самий набір до ClawHub, а далі просуває підготовлений артефакт попередньої перевірки npm для OpenClaw з dist-tagbeta. Після публікації запустіть post-publish приймання пакета для опублікованого пакетаopenclaw@YYYY.M.D-beta.Nабоopenclaw@beta. Якщо відправлена або опублікована бета-версія потребує виправлення, створіть наступний-beta.N; не видаляйте й не переписуйте стару бета-версію. - Для стабільного випуску продовжуйте лише після того, як перевірена бета-версія або release candidate має
потрібні докази валідації. Публікація стабільної версії до npm також проходить через
OpenClaw Release Publish, повторно використовуючи успішний артефакт попередньої перевірки черезpreflight_run_id; готовність стабільного випуску для macOS також потребує запакованих.zip,.dmg,.dSYM.zipі оновленогоappcast.xmlуmain. - Після публікації запустіть npm post-publish verifier, за потреби окремий
опублікований-npm Telegram E2E, коли потрібен post-publish доказ каналу,
просування dist-tag за потреби, нотатки GitHub release/prerelease з
повного відповідного розділу
CHANGELOG.mdі кроки оголошення випуску.
Попередня перевірка випуску
- Запустіть
pnpm check:test-typesперед передрелізною перевіркою, щоб тестовий TypeScript залишався покритим поза швидшим локальним gatepnpm check - Запустіть
pnpm check:architectureперед передрелізною перевіркою, щоб ширші перевірки циклів імпорту та архітектурних меж були зеленими поза швидшим локальним gate - Запустіть
pnpm build && pnpm ui:buildпередpnpm release:check, щоб очікувані релізні артефактиdist/*і бандл Control UI існували для кроку валідації пакування - Запустіть
pnpm plugins:syncпісля bump версії в корені та перед тегуванням. Він оновлює версії пакетів publishable plugin, metadata сумісності OpenClaw peer/API, metadata збірки та заготовки changelog plugin, щоб вони відповідали core release version.pnpm plugins:sync:checkє немутуючим release guard; publish workflow завершується помилкою до будь-якої зміни registry, якщо цей крок було забуто. - Запустіть ручний workflow
Full Release Validationперед release approval, щоб запустити всі передрелізні test boxes з однієї точки входу. Він приймає branch, tag або повний commit SHA, dispatches manualCIі dispatchesOpenClaw Release Checksдля install smoke, package acceptance, Docker release-path suites, live/E2E, OpenWebUI, QA Lab parity, Matrix і Telegram lanes. Зrelease_profile=fullіrerun_group=allвін також запускає package Telegram E2E проти артефактуrelease-package-under-testз release checks. Надайтеnpm_telegram_package_specпісля публікації, коли той самий Telegram E2E має також підтвердити опублікований npm package. Надайтеevidence_package_spec, коли приватний evidence report має підтвердити, що валідація відповідає опублікованому npm package без примусового Telegram E2E. Приклад:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.D - Запустіть ручний workflow
Package Acceptance, коли вам потрібен side-channel proof для package candidate, поки release work триває. Використовуйтеsource=npmдляopenclaw@beta,openclaw@latestабо точної release version;source=ref, щоб запакувати trustedpackage_refbranch/tag/SHA з поточнимworkflow_refharness;source=urlдля HTTPS tarball з обов’язковим SHA-256; абоsource=artifactдля tarball, uploaded by another GitHub Actions run. Workflow resolves the candidate topackage-under-test, повторно використовує Docker E2E release scheduler проти цього tarball і може запускати Telegram QA проти того самого tarball зtelegram_mode=mock-openaiабоtelegram_mode=live-frontier. Коли selected Docker lanes включаютьpublished-upgrade-survivor, package artifact є candidate, аpublished_upgrade_survivor_baselineвибирає published baseline. Приклад: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-openaiТипові profiles:smoke: install/channel/agent, gateway network і config reload lanespackage: artifact-native package/update/plugin lanes без OpenWebUI або live ClawHubproduct: package profile плюс MCP channels, cron/subagent cleanup, OpenAI web search і OpenWebUIfull: Docker release-path chunks з OpenWebUIcustom: точний вибірdocker_lanesдля focused rerun
- Запустіть ручний workflow
CIнапряму, коли вам потрібне лише повне нормальне CI coverage для release candidate. Manual CI dispatches bypass changed scoping і примусово запускають Linux Node shards, bundled-plugin shards, channel contracts, Node 22 compatibility,check,check-additional, build smoke, docs checks, Python skills, Windows, macOS, Android і Control UI i18n lanes. Приклад:gh workflow run ci.yml --ref release/YYYY.M.D - Запустіть
pnpm qa:otel:smokeпід час валідації release telemetry. Він запускає QA-lab через локальний OTLP/HTTP receiver і перевіряє exported trace span names, bounded attributes і редагування content/identifier без потреби в Opik, Langfuse чи іншому external collector. - Запускайте
pnpm release:checkперед кожним tagged release - Запустіть
OpenClaw Release Publishдля mutating publish sequence після того, як tag існує. Dispatch it fromrelease/YYYY.M.D(абоmain, коли публікуєте main-reachable tag), передайте release tag і успішний OpenClaw npmpreflight_run_id, і залиште default plugin publish scopeall-publishable, якщо ви не запускаєте deliberate focused repair. Workflow serializes plugin npm publish, plugin ClawHub publish і OpenClaw npm publish, щоб core package не був опублікований перед своїми externalized plugins. - Release checks тепер виконуються в окремому ручному workflow:
OpenClaw Release Checks OpenClaw Release Checksтакож запускає QA Lab mock parity gate плюс fast live Matrix profile і Telegram QA lane перед release approval. Live lanes використовують environmentqa-live-shared; Telegram також використовує Convex CI credential leases. Запустіть ручний workflowQA-Lab - All Lanesзmatrix_profile=allіmatrix_shards=true, коли вам потрібен повний Matrix transport, media і E2EE inventory паралельно.- Cross-OS install і upgrade runtime validation є частиною public
OpenClaw Release ChecksіFull Release Validation, які напряму викликають reusable workflow.github/workflows/openclaw-cross-os-release-checks-reusable.yml - Цей split навмисний: тримайте real npm release path коротким, deterministic і artifact-focused, тоді як повільніші live checks залишаються у своєму окремому lane, щоб вони не затримували і не блокували publish
- Secret-bearing release checks слід dispatch through
Full Release Validationабо зmain/release workflow ref, щоб workflow logic і secrets залишалися контрольованими OpenClaw Release Checksприймає branch, tag або full commit SHA, якщо resolved commit reachable from an OpenClaw branch або release tagOpenClaw NPM Releasevalidation-only preflight також приймає поточний повний 40-character workflow-branch commit SHA без вимоги pushed tag- Цей SHA path є validation-only і не може бути promoted into a real publish
- У SHA mode workflow synthesizes
v<package.json version>лише для package metadata check; real publish усе ще вимагає real release tag - Обидва workflows тримають real publish і promotion path на GitHub-hosted runners, тоді як non-mutating validation path може використовувати більші Blacksmith Linux runners
- Цей workflow запускає
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheз використанням обох workflow secretsOPENAI_API_KEYіANTHROPIC_API_KEY - npm release preflight більше не чекає окремий release checks lane
- Запустіть
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(або відповідний beta/correction tag) перед approval - Після npm publish запустіть
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(або відповідну beta/correction version), щоб перевірити published registry install path у fresh temp prefix - Після beta publish запустіть
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-live, щоб перевірити installed-package onboarding, Telegram setup і real Telegram E2E проти published npm package за допомогою shared leased Telegram credential pool. Local maintainer one-offs можуть omit Convex vars і передавати триOPENCLAW_QA_TELEGRAM_*env credentials directly. - Maintainers можуть запускати ту саму post-publish check з GitHub Actions через
manual workflow
NPM Telegram Beta E2E. Він навмисно manual-only і не виконується на кожному merge. - Maintainer release automation тепер використовує preflight-then-promote:
- real npm publish must pass a successful npm
preflight_run_id - real npm publish має dispatch from the same
mainабоrelease/YYYY.M.Dbranch as the successful preflight run - stable npm releases default to
beta - stable npm publish can target
latestexplicitly via workflow input - token-based npm dist-tag mutation now lives in
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlfor security, becausenpm dist-tag addstill needsNPM_TOKENwhile the public repo keeps OIDC-only publish - public
macOS Releaseis validation-only; when a tag lives only on a release branch but the workflow is dispatched frommain, setpublic_release_branch=release/YYYY.M.D - real private mac publish must pass successful private mac
preflight_run_idandvalidate_run_id - real publish paths promote prepared artifacts instead of rebuilding them again
- real npm publish must pass a successful npm
- For stable correction releases like
YYYY.M.D-N, the post-publish verifier also checks the same temp-prefix upgrade path fromYYYY.M.DtoYYYY.M.D-Nso release corrections cannot silently leave older global installs on the base stable payload - npm release preflight fails closed unless the tarball includes both
dist/control-ui/index.htmland a non-emptydist/control-ui/assets/payload so we do not ship an empty browser dashboard again - Post-publish verification also checks that published plugin entrypoints and
package metadata are present in the installed registry layout. A release that
ships missing plugin runtime payloads fails the postpublish verifier and
cannot be promoted to
latest. pnpm test:install:smokealso enforces the npm packunpackedSizebudget on the candidate update tarball, so installer e2e catches accidental pack bloat before the release publish path- If the release work touched CI planning, extension timing manifests, or
extension test matrices, regenerate and review the planner-owned
plugin-prerelease-extension-shardmatrix outputs from.github/workflows/plugin-prerelease.ymlbefore approval so release notes do not describe a stale CI layout - Stable macOS release readiness also includes the updater surfaces:
- the GitHub release must end up with the packaged
.zip,.dmg, and.dSYM.zip appcast.xmlonmainmust point at the new stable zip after publish- the packaged app must keep a non-debug bundle id, a non-empty Sparkle feed
URL, and a
CFBundleVersionat or above the canonical Sparkle build floor for that release version
- the GitHub release must end up with the packaged
Release test boxes
Full Release Validation — це спосіб, яким operators запускають усі pre-release tests з
однієї точки входу. Для pinned commit proof на fast-moving branch використовуйте
helper, щоб кожен child workflow запускався з тимчасової branch, fixed at the target
SHA:
pnpm ci:full-release --sha <full-sha>
Helper pushes release-ci/<sha>-..., dispatches Full Release Validation
from that branch with ref=<sha>, verifies every child workflow headSha
matches the target, then deletes the temporary branch. Це запобігає випадковому
підтвердженню newer main child run.
Для release branch або tag validation запускайте його з trusted main workflow
ref і передавайте release branch або tag як 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
Робочий процес визначає цільовий ref, запускає ручний CI з
target_ref=<release-ref>, запускає OpenClaw Release Checks і запускає
окремий пакетний Telegram E2E, коли release_profile=full з
rerun_group=all або коли задано npm_telegram_package_spec. Далі OpenClaw Release Checks розгортається в install smoke, cross-OS release checks, live/E2E Docker
покриття release-path, Package Acceptance з Telegram package QA, QA Lab
parity, live Matrix і live Telegram. Повний запуск прийнятний лише тоді, коли
підсумок Full Release Validation
показує normal_ci і release_checks як успішні. У режимі full/all дочірній
npm_telegram також має бути успішним; поза full/all він пропускається,
якщо не було надано опублікований npm_telegram_package_spec. Фінальний
підсумок verifier містить таблиці найповільніших завдань для кожного дочірнього запуску, щоб release
manager міг бачити поточний критичний шлях без завантаження логів.
Див. повну release validation, щоб отримати
повну матрицю етапів, точні назви завдань workflow, відмінності між профілями stable і full,
артефакти та вказівники для сфокусованих повторних запусків.
Дочірні workflows запускаються з довіреного ref, який виконує Full Release Validation, зазвичай --ref main, навіть коли цільовий ref указує на
старішу release-гілку або tag. Окремого вхідного параметра workflow-ref для Full Release Validation
немає; вибирайте довірений harness, вибираючи ref запуску workflow.
Не використовуйте --ref main -f ref=<sha> для доказу точного commit на рухомій main;
raw commit SHA не можуть бути workflow dispatch refs, тому використовуйте
pnpm ci:full-release --sha <sha>, щоб створити закріплену тимчасову гілку.
Використовуйте release_profile, щоб вибрати ширину live/provider:
minimum: найшвидший release-critical OpenAI/core live і Docker pathstable: minimum плюс stable provider/backend покриття для схвалення releasefull: stable плюс широке advisory provider/media покриття
OpenClaw Release Checks використовує довірений workflow ref, щоб один раз визначити цільовий
ref як release-package-under-test, і повторно використовує цей артефакт як у
release-path Docker checks, так і в Package Acceptance. Це утримує всі
package-facing boxes на тих самих bytes і уникає повторних package builds.
Cross-OS OpenAI install smoke використовує OPENCLAW_CROSS_OS_OPENAI_MODEL, коли
задано repo/org variable, інакше openai/gpt-5.5, тому що цей lane
доводить package install, onboarding, Gateway startup і один live agent turn,
а не benchmark найповільнішої default model. Ширша live provider
matrix лишається місцем для model-specific coverage.
Використовуйте ці варіанти залежно від етапу release:
# 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
Не використовуйте повний umbrella як перший повторний запуск після сфокусованого виправлення. Якщо один box
падає, використовуйте невдалий дочірній workflow, job, Docker lane, package profile, model
provider або QA lane для наступного доказу. Запускайте повний umbrella знову лише тоді, коли
виправлення змінило спільну release orchestration або зробило попередні all-box докази
застарілими. Фінальний verifier umbrella повторно перевіряє записані child workflow run
ids, тому після успішного повторного запуску дочірнього workflow перезапустіть лише невдале
батьківське завдання Verify full validation.
Для обмеженого відновлення передайте rerun_group до umbrella. all є справжнім
release-candidate запуском, ci запускає лише звичайний дочірній CI, plugin-prerelease
запускає лише release-only plugin child, release-checks запускає кожен release
box, а вужчі release groups — це install-smoke, cross-os,
live-e2e, package, qa, qa-parity, qa-live і npm-telegram.
Сфокусовані повторні запуски npm-telegram потребують npm_telegram_package_spec; full/all runs
з release_profile=full використовують package artifact із release-checks.
Vitest
Vitest box — це ручний дочірній workflow CI. Manual CI навмисно
оминає changed scoping і примусово запускає звичайний test graph для release
candidate: Linux Node shards, bundled-plugin shards, channel contracts, Node 22
compatibility, check, check-additional, build smoke, docs checks, Python
Skills, Windows, macOS, Android і Control UI i18n.
Використовуйте цей box, щоб відповісти на питання «чи пройшло source tree повний звичайний test suite?» Це не те саме, що release-path product validation. Докази, які слід зберегти:
- підсумок
Full Release Validation, що показує URL запущеногоCI - зелений запуск
CIна точному цільовому SHA - назви невдалих або повільних shards із CI jobs під час розслідування regressions
- артефакти timing Vitest, як-от
.artifacts/vitest-shard-timings.json, коли запуск потребує performance analysis
Запускайте manual CI напряму лише тоді, коли release потребує deterministic normal CI, але не потребує Docker, QA Lab, live, cross-OS або package boxes:
gh workflow run ci.yml --ref main -f target_ref=release/YYYY.M.D
Docker
Docker box знаходиться в OpenClaw Release Checks через
openclaw-live-and-e2e-checks-reusable.yml, плюс release-mode
workflow install-smoke. Він перевіряє release candidate через packaged
Docker environments, а не лише source-level tests.
Release Docker coverage включає:
- повний install smoke з увімкненим повільним Bun global install smoke
- підготовку/повторне використання root Dockerfile smoke image за target SHA, з QR, root/gateway і installer/Bun smoke jobs, що працюють як окремі install-smoke shards
- repository E2E lanes
- release-path Docker chunks:
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-gіplugins-runtime-install-h - OpenWebUI coverage всередині chunk
plugins-runtime-services, коли це запитано - розділені bundled plugin install/uninstall lanes
від
bundled-plugin-install-uninstall-0доbundled-plugin-install-uninstall-23 - live/E2E provider suites і Docker live model coverage, коли release checks включають live suites
Використовуйте Docker artifacts перед повторним запуском. Release-path scheduler завантажує
.artifacts/docker-tests/ з lane logs, summary.json, failures.json,
phase timings, scheduler plan JSON і rerun commands. Для сфокусованого відновлення
використовуйте docker_lanes=<lane[,lane]> у reusable live/E2E workflow замість
повторного запуску всіх release chunks. Згенеровані rerun commands включають попередні
package_artifact_run_id і prepared Docker image inputs, коли вони доступні, щоб
невдалий lane міг повторно використати той самий tarball і GHCR images.
QA Lab
QA Lab box також є частиною OpenClaw Release Checks. Це agentic
behavior і channel-level release gate, окремий від Vitest і Docker
package mechanics.
Release QA Lab coverage включає:
- mock parity gate, що порівнює OpenAI candidate lane з Opus 4.6 baseline, використовуючи agentic parity pack
- fast live Matrix QA profile, що використовує environment
qa-live-shared - live Telegram QA lane, що використовує Convex CI credential leases
pnpm qa:otel:smoke, коли release telemetry потребує explicit local proof
Використовуйте цей box, щоб відповісти на питання «чи поводиться release правильно в QA scenarios і live channel flows?» Зберігайте artifact URLs для parity, Matrix і Telegram lanes під час схвалення release. Full Matrix coverage лишається доступним як ручний sharded QA-Lab run, а не default release-critical lane.
Package
Package box — це installable-product gate. Він спирається на
Package Acceptance і resolver
scripts/resolve-openclaw-package-candidate.mjs. Resolver нормалізує
candidate у tarball package-under-test, який споживає Docker E2E, перевіряє
package inventory, записує package version і SHA-256 та тримає
workflow harness ref окремо від package source ref.
Підтримувані candidate sources:
source=npm:openclaw@beta,openclaw@latestабо точна OpenClaw release versionsource=ref: pack довіренуpackage_refbranch, tag або повний commit SHA з вибранимworkflow_refharnesssource=url: завантажити HTTPS.tgzз обов’язковимpackage_sha256source=artifact: повторно використати.tgz, завантажений іншим GitHub Actions run
OpenClaw Release Checks запускає Package Acceptance з source=artifact,
prepared release package artifact, suite_profile=custom,
docker_lanes=doctor-switch update-channel-switch upgrade-survivor published-upgrade-survivor plugins-offline plugin-update,
published_upgrade_survivor_baselines=release-history,
published_upgrade_survivor_scenarios=reported-issues і
telegram_mode=mock-openai. Package Acceptance тримає migration, update, stale
plugin dependency cleanup, offline plugin fixtures, plugin update і Telegram
package QA на тому самому resolved tarball. Це GitHub-native
заміна для більшості package/update coverage, яке раніше вимагало
Parallels. Cross-OS release checks усе ще важливі для OS-specific onboarding,
installer і platform behavior, але package/update product validation має
віддавати перевагу Package Acceptance.
Канонічний checklist для update і plugin validation —
тестування оновлень і плагінів. Використовуйте його, коли
вирішуєте, який local, Docker, Package Acceptance або release-check lane доводить
plugin install/update, doctor cleanup або published-package migration change.
Exhaustive published update migration з кожного stable package 2026.4.23+ є
окремим ручним workflow Update Migration, а не частиною Full Release CI.
Legacy package-acceptance leniency навмисно обмежена в часі. Packages до
2026.4.25 включно можуть використовувати compatibility path для metadata gaps, уже опублікованих
до npm: private QA inventory entries, відсутні в tarball, відсутній
gateway install --wrapper, відсутні patch files у tarball-derived git
fixture, відсутній persisted update.channel, legacy plugin install-record
locations, відсутній marketplace install-record persistence і config metadata
migration під час plugins update. Опублікований package 2026.4.26 може попереджати
про local build metadata stamp files, які вже були shipped. Пізніші packages
мають задовольняти modern package contracts; ті самі gaps провалюють release
validation.
Використовуйте ширші Package Acceptance profiles, коли release question стосується фактичного installable package:
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
Поширені package profiles:
smoke: швидкі package install/channel/agent, gateway network і config reload lanespackage: install/update/plugin package contracts без live ClawHub; це release-check defaultproduct:packageплюс MCP channels, cron/subagent cleanup, OpenAI web search і OpenWebUIfull: Docker release-path chunks з OpenWebUIcustom: точний списокdocker_lanesдля сфокусованих повторних запусків
Для підтвердження кандидата пакета Telegram увімкніть telegram_mode=mock-openai або
telegram_mode=live-frontier у Package Acceptance. Workflow передає
розв’язаний tarball package-under-test у lane Telegram; окремий
workflow Telegram і далі приймає опубліковану npm-специфікацію для перевірок
після публікації.
Автоматизація публікації релізу
OpenClaw Release Publish є звичайною мутувальною точкою входу для публікації. Він
оркеструє workflows довіреного видавця в порядку, потрібному релізу:
- Отримати release tag і визначити його commit SHA.
- Перевірити, що tag доступний з
mainабоrelease/*. - Запустити
pnpm plugins:sync:check. - Запустити
Plugin NPM Releaseзpublish_scope=all-publishableіref=<release-sha>. - Запустити
Plugin ClawHub Releaseз тією самою областю дії та SHA. - Запустити
OpenClaw NPM Releaseз release tag, npm dist-tag і збереженимpreflight_run_id.
Приклад публікації 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
Stable-публікація до типового beta dist-tag:
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
Stable-просування безпосередньо до latest є явним:
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
Використовуйте нижчорівневі workflows Plugin NPM Release і Plugin ClawHub Release
лише для цільового виправлення або повторної публікації. Для виправлення вибраного plugin передайте
plugin_publish_scope=selected і plugins=@openclaw/name до
OpenClaw Release Publish, або запустіть дочірній workflow напряму, коли
пакет OpenClaw не має бути опублікований.
Вхідні параметри workflow NPM
OpenClaw NPM Release приймає такі вхідні параметри, контрольовані оператором:
tag: обов’язковий release tag, наприкладv2026.4.2,v2026.4.2-1абоv2026.4.2-beta.1; колиpreflight_only=true, це також може бути поточний повний 40-символьний commit SHA гілки workflow для preflight лише з валідацієюpreflight_only:trueлише для валідації/збирання/пакування,falseдля справжнього шляху публікаціїpreflight_run_id: обов’язковий на справжньому шляху публікації, щоб workflow повторно використав підготовлений tarball з успішного preflight-запускуnpm_dist_tag: цільовий npm tag для шляху публікації; типовоbeta
OpenClaw Release Publish приймає такі вхідні параметри, контрольовані оператором:
tag: обов’язковий release tag; має вже існуватиpreflight_run_id: id успішного preflight-запускуOpenClaw NPM Release; обов’язковий, колиpublish_openclaw_npm=truenpm_dist_tag: цільовий npm tag для пакета OpenClawplugin_publish_scope: типовоall-publishable; використовуйтеselectedлише для цільового виправленняplugins: розділені комами назви пакетів@openclaw/*, колиplugin_publish_scope=selectedpublish_openclaw_npm: типовоtrue; встановлюйтеfalseлише коли використовуєте workflow як оркестратор виправлення лише plugins
OpenClaw Release Checks приймає такі вхідні параметри, контрольовані оператором:
ref: гілка, tag або повний commit SHA для валідації. Перевірки з секретами вимагають, щоб розв’язаний commit був доступний з гілки OpenClaw або release tag.
Правила:
- Stable- та correction-теги можуть публікуватися або до
beta, або доlatest - Beta prerelease-теги можуть публікуватися лише до
beta - Для
OpenClaw NPM Releaseвхідний повний commit SHA дозволений лише колиpreflight_only=true OpenClaw Release ChecksіFull Release Validationзавжди призначені лише для валідації- Справжній шлях публікації має використовувати той самий
npm_dist_tag, що використовувався під час preflight; workflow перевіряє ці метадані перед продовженням публікації
Послідовність stable npm-релізу
Під час підготовки stable npm-релізу:
- Запустіть
OpenClaw NPM Releaseзpreflight_only=true- До появи tag можна використати поточний повний commit SHA гілки workflow для пробного запуску preflight workflow лише з валідацією
- Виберіть
npm_dist_tag=betaдля звичайного потоку beta-first абоlatestлише коли навмисно потрібна пряма stable-публікація - Запустіть
Full Release Validationна release-гілці, release tag або повному commit SHA, коли потрібно отримати звичайний CI плюс live prompt cache, Docker, QA Lab, Matrix і покриття Telegram з одного ручного workflow - Якщо навмисно потрібен лише детермінований звичайний граф тестів, запустіть
ручний workflow
CIна release ref - Збережіть успішний
preflight_run_id - Запустіть
OpenClaw Release Publishз тим самимtag, тим самимnpm_dist_tagі збереженимpreflight_run_id; він публікує винесені назовні plugins до npm і ClawHub перед просуванням npm-пакета OpenClaw - Якщо реліз потрапив на
beta, використайте приватний workflowopenclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlдля просування цієї stable-версії зbetaдоlatest - Якщо реліз навмисно опубліковано безпосередньо до
latest, аbetaмає негайно вказувати на ту саму stable-збірку, використайте той самий приватний workflow, щоб спрямувати обидва dist-tags на stable-версію, або дозвольте його запланованій самовідновлювальній синхронізації переміститиbetaпізніше
Мутація dist-tag розміщена в приватному repo з міркувань безпеки, оскільки вона досі
вимагає NPM_TOKEN, тоді як публічний repo зберігає публікацію лише через OIDC.
Це зберігає як шлях прямої публікації, так і шлях beta-first просування задокументованими та видимими для оператора.
Якщо maintainer має повернутися до локальної npm-автентифікації, запускайте будь-які
команди 1Password CLI (op) лише всередині окремої tmux-сесії. Не викликайте op
безпосередньо з основної оболонки агента; утримання цього всередині tmux робить prompts,
сповіщення та обробку OTP спостережуваними й запобігає повторним сповіщенням host.
Публічні посилання
.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
Maintainers використовують приватну документацію релізів у
openclaw/maintainers/release/README.md
для фактичного runbook.