53 KiB
| read_when | summary | title | x-i18n | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Лінії випуску, контрольний список оператора, середовища перевірки, іменування версій і періодичність | Політика релізів |
|
OpenClaw має чотири публічні канали релізів:
- stable: позначені тегами релізи, які типово публікуються в npm
beta, або в npmlatest, коли це явно запитано - alpha: prerelease-теги, які публікуються в npm
alpha - beta: prerelease-теги, які публікуються в npm
beta - dev: рухома вершина
main
Іменування версій
- Версія стабільного релізу:
YYYY.M.D- Git-тег:
vYYYY.M.D
- Git-тег:
- Версія коригувального стабільного релізу:
YYYY.M.D-N- Git-тег:
vYYYY.M.D-N
- Git-тег:
- Версія alpha prerelease:
YYYY.M.D-alpha.N- Git-тег:
vYYYY.M.D-alpha.N
- Git-тег:
- Версія beta prerelease:
YYYY.M.D-beta.N- Git-тег:
vYYYY.M.D-beta.N
- Git-тег:
- Не доповнюйте місяць або день нулями
latestозначає поточний просунутий стабільний npm-релізalphaозначає поточну ціль встановлення alphabetaозначає поточну ціль встановлення beta- Стабільні та коригувальні стабільні релізи типово публікуються в npm
beta; оператори релізу можуть явно вибратиlatestабо пізніше просунути перевірену beta-збірку - Кожен стабільний реліз OpenClaw постачає npm-пакет і застосунок macOS разом; beta-релізи зазвичай спершу перевіряють і публікують шлях npm/package, а збірку/підпис/нотаризацію застосунку mac залишають для stable, якщо це явно не запитано
Частота релізів
- Релізи рухаються спершу через beta
- Stable виходить лише після перевірки останньої beta
- Мейнтейнери зазвичай створюють релізи з гілки
release/YYYY.M.D, створеної з поточноїmain, щоб перевірка релізу й виправлення не блокували нову розробку вmain - Якщо beta-тег уже надіслано або опубліковано й потрібне виправлення, мейнтейнери створюють
наступний тег
-beta.Nзамість видалення або повторного створення старого beta-тега - Детальна процедура релізу, затвердження, облікові дані та нотатки з відновлення доступні лише мейнтейнерам
Чекліст оператора релізу
Цей чекліст описує публічну форму процесу релізу. Приватні облікові дані, підписування, нотаризація, відновлення dist-tag і деталі аварійного відкату залишаються в runbook релізу лише для мейнтейнерів.
- Почніть із поточної
main: отримайте найновіші зміни, підтвердьте, що цільовий коміт надіслано, і підтвердьте, що поточний CImainдостатньо зелений, щоб створювати від нього гілку. - Перепишіть верхній розділ
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 мали спільну версію релізу й метадані сумісності, потім запустіть локальний детермінований preflight: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 лише з метою перевірки. Збережіть успішнийpreflight_run_id. - Запустіть усі pre-release тести через
Full Release Validationдля гілки релізу, тега або повного SHA коміту. Це єдина ручна точка входу для чотирьох великих релізних тестових наборів: Vitest, Docker, QA Lab і Package. - Якщо перевірка не проходить, виправте це в гілці релізу й повторно запустіть найменший невдалий файл, канал, workflow job, профіль пакета, провайдера або allowlist моделі, який доводить виправлення. Повторно запускайте повну парасольку лише тоді, коли змінена поверхня робить попередні докази застарілими.
- Для alpha або beta позначте
vYYYY.M.D-alpha.NабоvYYYY.M.D-beta.N, потім запустітьOpenClaw Release Publishз відповідної гілкиrelease/YYYY.M.D. Він перевіряєpnpm plugins:sync:check, спершу публікує всі публіковні пакети Plugin в npm, другим кроком публікує той самий набір у ClawHub, а потім просуває підготовлений preflight-артефакт OpenClaw npm з відповідним dist-tag. Після публікації запустіть post-publish package acceptance для опублікованого пакетаopenclaw@YYYY.M.D-alpha.N,openclaw@alpha,openclaw@YYYY.M.D-beta.Nабоopenclaw@beta. Якщо надісланий або опублікований prerelease потребує виправлення, створіть наступний відповідний номер prerelease; не видаляйте й не переписуйте старий prerelease. - Для stable продовжуйте лише після того, як перевірена beta або release candidate має
потрібні докази перевірки. Публікація stable в npm також проходить через
OpenClaw Release Publish, повторно використовуючи успішний preflight-артефакт черезpreflight_run_id; готовність stable-релізу macOS також потребує упакованих.zip,.dmg,.dSYM.zipі оновленогоappcast.xmlуmain. - Після публікації запустіть npm post-publish verifier, необов'язковий standalone
published-npm Telegram E2E, коли потрібен post-publish доказ каналу,
просування dist-tag за потреби, нотатки GitHub release/prerelease з
повного відповідного розділу
CHANGELOG.mdі кроки оголошення релізу.
Release preflight
- Запустіть
pnpm check:test-typesперед передрелізною перевіркою, щоб тестовий TypeScript залишався покритим поза швидшим локальним шлюзомpnpm check - Запустіть
pnpm check:architectureперед передрелізною перевіркою, щоб ширші перевірки циклів імпорту та меж архітектури були зеленими поза швидшим локальним шлюзом - Запустіть
pnpm build && pnpm ui:buildпередpnpm release:check, щоб очікувані релізні артефактиdist/*і бандл Control UI існували для кроку перевірки пакування - Запустіть
pnpm plugins:syncпісля підвищення версії в корені й перед створенням тега. Він оновлює версії пакетів публіковних Plugin, метадані сумісності з OpenClaw peer/API, метадані збірки та заготовки журналів змін Plugin, щоб вони відповідали версії релізу ядра.pnpm plugins:sync:check— це немутуючий релізний запобіжник; workflow публікації завершується з помилкою перед будь-якою зміною реєстру, якщо цей крок було забуто. - Запустіть ручний workflow
Full Release Validationперед затвердженням релізу, щоб запустити всі передрелізні тестові бокси з однієї точки входу. Він приймає гілку, тег або повний SHA коміту, диспетчеризує ручнийCIі диспетчеризуєOpenClaw 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_acceptance_package_specпісля публікації, коли Package Acceptance має запускати свою матрицю package/update проти відвантаженого npm-пакета замість артефакту, зібраного з SHA. Надайтеevidence_package_spec, коли приватний звіт доказів має підтвердити, що валідація відповідає опублікованому npm-пакету без примусового Telegram E2E. Приклад:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.D - Запустіть ручний workflow
Package Acceptance, коли потрібен доказ через побічний канал для кандидата пакета, поки релізна робота триває. Використовуйтеsource=npmдляopenclaw@alpha,openclaw@beta,openclaw@latestабо точної релізної версії;source=ref, щоб запакувати довірену гілку/тег/SHApackage_refз поточним harnessworkflow_ref;source=urlдля HTTPS-тарболу з обов’язковим SHA-256; абоsource=artifactдля тарболу, завантаженого іншим запуском GitHub Actions. Workflow розв’язує кандидата вpackage-under-test, повторно використовує Docker E2E release scheduler проти цього тарболу й може запускати Telegram QA проти того самого тарболу зtelegram_mode=mock-openaiабоtelegram_mode=live-frontier. Коли вибрані Docker lanes містятьpublished-upgrade-survivor, артефакт пакета є кандидатом, аpublished_upgrade_survivor_baselineвибирає опублікований 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Поширені профілі:smoke: lanes для install/channel/agent, мережі Gateway і перезавантаження конфігураціїpackage: artifact-native lanes для package/update/plugin без OpenWebUI або live ClawHubproduct: профіль package плюс MCP-канали, очищення cron/subagent, вебпошук OpenAI і OpenWebUIfull: Docker release-path chunks з OpenWebUIcustom: точний вибірdocker_lanesдля сфокусованого повторного запуску
- Запустіть ручний workflow
CIнапряму, коли потрібне лише повне звичайне покриття CI для релізного кандидата. Ручні dispatch CI оминають changed scoping і примусово запускають Linux Node shards, bundled-plugin shards, channel contracts, сумісність із Node 22,check,check-additional, build smoke, перевірки документації, Python skills, Windows, macOS, Android і Control UI i18n lanes. Приклад:gh workflow run ci.yml --ref release/YYYY.M.D - Запустіть
pnpm qa:otel:smoke, коли перевіряєте релізну телеметрію. Він проганяє QA-lab через локальний OTLP/HTTP receiver і перевіряє експортовані назви trace span, обмежені атрибути та редагування вмісту/ідентифікаторів без потреби в Opik, Langfuse або іншому зовнішньому collector. - Запускайте
pnpm release:checkперед кожним релізом із тегом - Запустіть
OpenClaw Release Publishдля мутуючої послідовності публікації після того, як тег існує. Dispatch його зrelease/YYYY.M.D(абоmain, коли публікуєте тег, досяжний із main), передайте релізний тег і успішний OpenClaw npmpreflight_run_id, і залишайте типовий scope публікації Pluginall-publishable, якщо тільки ви навмисно не запускаєте сфокусоване виправлення. Workflow серіалізує npm-публікацію Plugin, публікацію Plugin у ClawHub і npm-публікацію OpenClaw, щоб core package не було опубліковано перед його зовнішніми Plugin. - Release checks тепер запускаються в окремому ручному workflow:
OpenClaw Release Checks OpenClaw Release Checksтакож запускає шлюз QA Lab mock parity плюс швидкий live Matrix profile і Telegram QA lane перед затвердженням релізу. Live lanes використовують середовищеqa-live-shared; Telegram також використовує leases облікових даних Convex CI. Запустіть ручний workflowQA-Lab - All Lanesзmatrix_profile=allіmatrix_shards=true, коли потрібен повний інвентар Matrix transport, media та E2EE паралельно.- Cross-OS install і upgrade runtime validation є частиною публічних
OpenClaw Release ChecksіFull Release Validation, які викликають reusable workflow.github/workflows/openclaw-cross-os-release-checks-reusable.ymlнапряму - Це розділення навмисне: тримайте справжній npm release path коротким, детермінованим і сфокусованим на артефактах, тоді як повільніші live checks залишаються у своїй окремій lane, щоб вони не затримували й не блокували публікацію
- Release checks, що містять секрети, слід dispatch через
Full Release Validationабо з workflow refmain/release, щоб логіка workflow і секрети залишалися контрольованими OpenClaw Release Checksприймає гілку, тег або повний SHA коміту, доки розв’язаний коміт досяжний із гілки OpenClaw або релізного тега- validation-only preflight
OpenClaw NPM Releaseтакож приймає поточний повний 40-символьний SHA коміту workflow-гілки без вимоги запушеного тега - Цей шлях SHA призначений лише для валідації й не може бути просунутий у справжню публікацію
- У режимі SHA workflow синтезує
v<package.json version>лише для перевірки метаданих пакета; справжня публікація все одно потребує справжнього релізного тега - Обидва workflow залишають справжній шлях публікації та promotion на GitHub-hosted runners, тоді як немутуючий шлях валідації може використовувати більші 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 більше не чекає на окрему lane release checks
- Запустіть
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(або відповідний beta/correction tag) перед затвердженням - Після npm publish запустіть
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(або відповідну beta/correction version), щоб перевірити опублікований шлях встановлення з реєстру у свіжому тимчасовому префіксі - Після 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щоб перевірити onboarding встановленого пакета, налаштування Telegram і реальний Telegram E2E проти опублікованого npm-пакета з використанням спільного leased Telegram credential pool. Разові локальні запуски maintainer можуть опустити Convex vars і передати три env credentialsOPENCLAW_QA_TELEGRAM_*напряму. - Maintainers можуть запускати ту саму post-publish check із GitHub Actions через
ручний workflow
NPM Telegram Beta E2E. Він навмисно лише ручний і не запускається під час кожного merge. - Maintainer release automation тепер використовує preflight-then-promote:
- справжній npm publish має пройти успішний npm
preflight_run_id - справжній npm publish має бути dispatch з тієї самої гілки
mainабоrelease/YYYY.M.D, що й успішний preflight run - stable npm releases типово використовують
beta - stable npm publish може явно таргетувати
latestчерез workflow input - token-based npm dist-tag mutation тепер живе в
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlз міркувань безпеки, боnpm dist-tag addдосі потребуєNPM_TOKEN, тоді як публічний repo зберігає OIDC-only publish - публічний
macOS Releaseпризначений лише для валідації; коли тег існує лише в release branch, але workflow dispatch зmain, задайтеpublic_release_branch=release/YYYY.M.D - справжній private mac publish має пройти успішні private mac
preflight_run_idіvalidate_run_id - справжні publish paths просувають підготовлені артефакти замість повторної їх збірки
- справжній npm publish має пройти успішний npm
- Для stable correction releases на кшталт
YYYY.M.D-Npost-publish verifier також перевіряє той самий temp-prefix upgrade path зYYYY.M.DдоYYYY.M.D-N, щоб release corrections не могли непомітно залишити старіші глобальні встановлення на базовому stable payload - npm release preflight fail closed, якщо тарбол не містить і
dist/control-ui/index.html, і непорожній payloaddist/control-ui/assets/, щоб ми знову не відвантажили порожню браузерну dashboard - Post-publish verification також перевіряє, що опубліковані entrypoints Plugin і
метадані пакета присутні в установленому layout реєстру. Реліз, який
відвантажує відсутні runtime payloads Plugin, провалює postpublish verifier і
не може бути просунутий до
latest. pnpm test:install:smokeтакож забезпечує бюджет npm packunpackedSizeдля candidate update tarball, тож installer e2e ловить випадкове роздуття пакета перед release publish path- Якщо релізна робота торкалася CI planning, extension timing manifests або
extension test matrices, регенеруйте та перегляньте planner-owned
matrix outputs
plugin-prerelease-extension-shardз.github/workflows/plugin-prerelease.ymlперед затвердженням, щоб release notes не описували застарілий CI layout - Готовність stable macOS release також включає updater surfaces:
- GitHub release має зрештою містити запаковані
.zip,.dmgі.dSYM.zip appcast.xmlуmainмає вказувати на новий stable zip після publish- запакований застосунок має зберігати non-debug bundle id, непорожній Sparkle feed
URL і
CFBundleVersionна рівні або вище канонічного Sparkle build floor для цієї релізної версії
- GitHub release має зрештою містити запаковані
Релізні тестові бокси
Full Release Validation — це спосіб, яким operators запускають усі передрелізні тести з
однієї точки входу. Для доказу pinned commit на швидкозмінній гілці використовуйте
helper, щоб кожен child workflow запускався з тимчасової гілки, зафіксованої на target
SHA:
pnpm ci:full-release --sha <full-sha>
Helper пушить release-ci/<sha>-..., dispatch Full Release Validation
з цієї гілки з ref=<sha>, перевіряє, що кожен child workflow headSha
відповідає target, а потім видаляє тимчасову гілку. Це запобігає випадковому
доведенню новішого child run main.
Для валідації release branch або tag запускайте його з довіреного workflow
ref main і передавайте 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, крос-ОС перевірки релізу, live/E2E Docker
покриття release-path, Package Acceptance з Telegram package QA, паритет QA Lab,
live Matrix і live Telegram. Повний запуск прийнятний лише тоді, коли у зведенні
Full Release Validation
показано успішні normal_ci і release_checks. У режимі full/all дочірній
npm_telegram також має бути успішним; поза full/all його пропускають, якщо не
було надано опублікований npm_telegram_package_spec. Підсумкове зведення
верифікатора містить таблиці найповільніших завдань для кожного дочірнього запуску,
щоб менеджер релізу міг бачити поточний критичний шлях без завантаження логів.
Див. Повна валідація релізу для повної
матриці етапів, точних назв завдань workflow, відмінностей між профілями stable і full,
артефактів і дескрипторів для сфокусованих повторних запусків.
Дочірні workflow запускаються з довіреного ref, який виконує Full Release Validation, зазвичай --ref main, навіть коли цільовий ref вказує на старішу
релізну гілку або тег. Окремого вхідного параметра workflow-ref для Full Release Validation
немає; вибирайте довірений harness, вибираючи ref запуску workflow.
Не використовуйте --ref main -f ref=<sha> для доказу точного коміту на рухомому main;
сирі SHA комітів не можуть бути ref для workflow dispatch, тому використовуйте
pnpm ci:full-release --sha <sha>, щоб створити закріплену тимчасову гілку.
Використовуйте release_profile, щоб вибрати ширину live/provider:
minimum: найшвидший критичний для релізу OpenAI/core live і Docker pathstable: minimum плюс stable provider/backend покриття для схвалення релізуfull: stable плюс широке консультативне покриття provider/media
OpenClaw Release Checks використовує довірений workflow ref, щоб один раз визначити цільовий
ref як release-package-under-test, і повторно використовує цей артефакт як у
release-path Docker перевірках, так і в Package Acceptance. Це утримує всі
package-facing boxes на тих самих байтах і уникає повторних збірок пакета.
Крос-ОС OpenAI install smoke використовує OPENCLAW_CROSS_OS_OPENAI_MODEL, коли задано
змінну repo/org, інакше openai/gpt-5.4, оскільки ця lane
доводить встановлення пакета, onboarding, запуск Gateway і один live agent turn,
а не бенчмарк найповільнішої моделі за замовчуванням. Ширша live provider
матриця лишається місцем для покриття, специфічного для моделей.
Використовуйте ці варіанти залежно від етапу релізу:
# 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, завдання, Docker lane, package profile, model
provider або QA lane для наступного доказу. Запускайте повний umbrella знову лише тоді, коли
виправлення змінило спільну оркестрацію релізу або зробило попередні all-box докази
застарілими. Підсумковий верифікатор umbrella повторно перевіряє записані ids запусків дочірніх workflow,
тому після успішного повторного запуску дочірнього workflow повторно запускайте лише невдале
батьківське завдання Verify full validation.
Для обмеженого відновлення передайте rerun_group в umbrella. all — це справжній
запуск release-candidate, ci запускає лише звичайний дочірній CI, plugin-prerelease
запускає лише дочірній plugin для релізу, 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 запуски
з release_profile=full використовують артефакт пакета release-checks.
Vitest
Vitest box — це дочірній workflow ручного CI. Ручний CI навмисно
оминає changed scoping і примусово запускає звичайний тестовий граф для 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, щоб відповісти: "чи пройшло дерево вихідного коду повний звичайний тестовий набір?" Це не те саме, що release-path product validation. Докази, які варто зберегти:
- зведення
Full Release Validation, яке показує URL запущеногоCI - зелений запуск
CIна точному цільовому SHA - назви невдалих або повільних shard із CI jobs під час розслідування регресій
- артефакти таймінгів Vitest, як-от
.artifacts/vitest-shard-timings.json, коли запуск потребує аналізу продуктивності
Запускайте ручний CI напряму лише тоді, коли реліз потребує детермінованого звичайного 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 за цільовим 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-0throughbundled-plugin-install-uninstall-23 - live/E2E provider suites і Docker live model coverage, коли release checks включають live suites
Використовуйте артефакти Docker перед повторним запуском. 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 і підготовлені Docker image inputs, коли доступно, тож
невдала lane може повторно використати той самий tarball і GHCR images.
QA Lab
QA Lab box також є частиною OpenClaw Release Checks. Це агентний
behavior і channel-level release gate, окремий від Vitest і механіки Docker
package.
Release QA Lab coverage включає:
- mock parity gate, що порівнює кандидатну OpenAI lane з Opus 4.6 baseline за допомогою agentic parity pack
- швидкий live Matrix QA profile із середовищем
qa-live-shared - live Telegram QA lane з Convex CI credential leases
pnpm qa:otel:smoke, коли release telemetry потребує явного локального доказу
Використовуйте цей box, щоб відповісти: "чи реліз поводиться коректно в QA scenarios і live channel flows?" Зберігайте URL артефактів для parity, Matrix і Telegram lanes під час схвалення релізу. Повне Matrix coverage лишається доступним як ручний sharded QA-Lab run, а не як release-critical lane за замовчуванням.
Пакет
Package box — це gate installable-product. Він підтримується
Package Acceptance і resolver
scripts/resolve-openclaw-package-candidate.mjs. Resolver нормалізує
кандидата в tarball package-under-test, який споживає Docker E2E, валідує
package inventory, записує package version і SHA-256 та тримає
workflow harness ref окремо від package source ref.
Підтримувані джерела кандидатів:
source=npm:openclaw@beta,openclaw@latestабо точна release version OpenClawsource=ref: пакує довірену гілкуpackage_ref, тег або повний SHA коміту з вибраним harnessworkflow_refsource=url: завантажує HTTPS.tgzз обов'язковимpackage_sha256source=artifact: повторно використовує.tgz, завантажений іншим запуском GitHub Actions
OpenClaw Release Checks запускає Package Acceptance з source=artifact,
підготовленим 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=all-since-2026.4.23,
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. Upgrade matrix покриває кожен stable npm-published baseline від 2026.4.23 до latest; використовуйте
Package Acceptance з source=npm для вже відвантаженого кандидата або
source=ref/source=artifact для SHA-backed local npm tarball перед
публікацією. Це GitHub-native
заміна більшості package/update coverage, яке раніше вимагало
Parallels. Cross-OS release checks усе ще важливі для OS-specific onboarding,
installer і platform behavior, але package/update product validation має
надавати перевагу Package Acceptance.
Канонічний чеклист для update і plugin validation:
Тестування оновлень і plugins. Використовуйте його, коли
вирішуєте, яка local, Docker, Package Acceptance або release-check lane доводить
plugin install/update, doctor cleanup або published-package migration change.
Вичерпна published update migration з кожного stable пакета 2026.4.23+ — це
окремий ручний workflow Update Migration, а не частина Full Release CI.
Legacy package-acceptance leniency навмисно обмежена в часі. Пакети до
2026.4.25 можуть використовувати compatibility path для metadata gaps, уже опублікованих
у npm: private QA inventory entries, яких немає в tarball, відсутній
gateway install --wrapper, відсутні patch files у tarball-derived git
fixture, відсутній збережений update.channel, legacy plugin install-record
locations, відсутня marketplace install-record persistence і config metadata
migration під час plugins update. Опублікований пакет 2026.4.26 може попереджати
про local build metadata stamp files, які вже були відвантажені. Пізніші пакети
мають задовольняти 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 є звичайною мутувальною точкою входу для публікації. Він
оркеструє workflow trusted-publisher у порядку, потрібному релізу:
- Взяти 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
Приклад публікації alpha:
gh workflow run openclaw-release-publish.yml \
--ref release/YYYY.M.D \
-f tag=vYYYY.M.D-alpha.N \
-f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \
-f npm_dist_tag=alpha
Стабільна публікація до стандартного 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
Стабільне просування безпосередньо до 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
Використовуйте нижчорівневі workflow 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-alpha.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: обов’язковий тег випуску; має вже існуватиpreflight_run_id: ідентифікатор успішного попереднього запускуOpenClaw NPM Release; обов’язковий, колиpublish_openclaw_npm=truenpm_dist_tag: цільовий тег npm для пакета OpenClawplugin_publish_scope: за замовчуваннямall-publishable; використовуйтеselectedлише для цільових робіт із виправленняplugins: розділені комами назви пакетів@openclaw/*, колиplugin_publish_scope=selectedpublish_openclaw_npm: за замовчуваннямtrue; установлюйтеfalseлише тоді, коли використовуєте робочий процес як оркестратор виправлення лише для Plugin
OpenClaw Release Checks приймає такі введення, керовані оператором:
ref: гілка, тег або повний SHA коміту для перевірки. Перевірки із секретами вимагають, щоб розв’язаний коміт був досяжний з гілки OpenClaw або тегу випуску.
Правила:
- Стабільні та коригувальні теги можуть публікуватися або в
beta, або вlatest - Альфа-теги попередніх випусків можуть публікуватися лише в
alpha - Бета-теги попередніх випусків можуть публікуватися лише в
beta - Для
OpenClaw NPM Releaseвведення повного SHA коміту дозволене лише колиpreflight_only=true OpenClaw Release ChecksіFull Release Validationзавжди призначені лише для перевірки- Реальний шлях публікації має використовувати той самий
npm_dist_tag, який використовувався під час попередньої перевірки; робочий процес перевіряє ці метадані перед продовженням публікації
Послідовність стабільного випуску npm
Під час підготовки стабільного випуску npm:
- Запустіть
OpenClaw NPM Releaseзpreflight_only=true- До створення тегу можна використати поточний повний SHA коміту гілки робочого процесу для dry run робочого процесу попередньої перевірки лише з валідацією
- Виберіть
npm_dist_tag=betaдля звичайного потоку beta-first абоlatestлише тоді, коли навмисно потрібна пряма стабільна публікація - Запустіть
Full Release Validationдля гілки випуску, тегу випуску або повного SHA коміту, коли потрібні звичайний CI плюс покриття live prompt cache, Docker, QA Lab, Matrix і Telegram з одного ручного робочого процесу - Якщо навмисно потрібен лише детермінований звичайний граф тестів, натомість запустіть
ручний робочий процес
CIна ref випуску - Збережіть успішний
preflight_run_id - Запустіть
OpenClaw Release Publishз тим самимtag, тим самимnpm_dist_tagі збереженимpreflight_run_id; він публікує зовнішні Plugin в npm і ClawHub перед просуванням npm-пакета OpenClaw - Якщо випуск потрапив у
beta, використайте приватний робочий процесopenclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml, щоб просунути цю стабільну версію зbetaдоlatest - Якщо випуск навмисно опубліковано безпосередньо в
latest, аbetaмає негайно вказувати на той самий стабільний білд, використайте той самий приватний робочий процес, щоб спрямувати обидва dist-tags на стабільну версію, або дозвольте його запланованій самовідновлювальній синхронізації переміститиbetaпізніше
Зміна dist-tag живе в приватному репозиторії з міркувань безпеки, оскільки вона все ще
потребує NPM_TOKEN, тоді як публічний репозиторій зберігає публікацію лише через OIDC.
Це робить як шлях прямої публікації, так і шлях просування beta-first задокументованими й видимими для оператора.
Якщо супровіднику потрібно повернутися до локальної автентифікації npm, запускайте будь-які команди 1Password
CLI (op) лише всередині виділеної сесії tmux. Не викликайте op
безпосередньо з основної оболонки агента; утримання цього всередині tmux робить запити,
сповіщення та обробку OTP спостережуваними й запобігає повторним сповіщенням хоста.
Публічні посилання
.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
Супровідники використовують приватну документацію випусків у
openclaw/maintainers/release/README.md
для фактичного runbook.