Release and CI
Политика выпусков
OpenClaw в настоящее время предоставляет три пользовательских канала обновлений:
- stable: существующий канал продвигаемых выпусков, который до завершения отдельного этапа по CLI/каналам по-прежнему разрешается через npm
latest - beta: теги предварительных выпусков, публикуемые в npm
beta - dev: перемещающаяся вершина
main
Кроме того, операторы выпуска могут публиковать основной пакет за последний завершённый месяц
в npm extended-stable, начиная с патча 33. Обычная финальная линия
текущего месяца остаётся в npm latest; это разделение публикаций на стороне
оператора само по себе не меняет разрешение каналов обновления CLI.
Альфа-сборки Tideclaw относятся к отдельной внутренней ветке предварительных выпусков (dist-tag npm alpha), описанной в разделах Входные параметры рабочего процесса NPM и Тестовые среды выпуска.
Именование версий
- Версия ежемесячного расширенно стабильного выпуска npm:
YYYY.M.PATCH, сPATCH >= 33, тег gitvYYYY.M.PATCH - Версия ежедневного/обычного финального выпуска:
YYYY.M.PATCH, сPATCH < 33, тег gitvYYYY.M.PATCH - Версия обычного корректирующего резервного выпуска:
YYYY.M.PATCH-N, тег gitvYYYY.M.PATCH-N - Версия предварительного бета-выпуска:
YYYY.M.PATCH-beta.N, тег gitvYYYY.M.PATCH-beta.N - Версия предварительного альфа-выпуска:
YYYY.M.PATCH-alpha.N, тег gitvYYYY.M.PATCH-alpha.N - Никогда не дополняйте месяц или патч ведущими нулями
PATCH— последовательный номер ежемесячной серии выпусков, а не календарный день. Обычные финальные и бета-выпуски продвигают текущую серию; теги только для альфа-версий никогда не занимают и не продвигают номер патча бета-/обычного выпуска, поэтому при выборе серии бета- или обычного выпуска игнорируйте устаревшие теги только для альфа-версий с более высокими номерами патчей.- Альфа-/ночные сборки используют следующую ещё не выпущенную серию патчей и при повторных сборках увеличивают только
alpha.N. После появления бета-версии этого патча новые альфа-сборки переходят к следующему патчу. - Версии npm неизменяемы: никогда не удаляйте, не публикуйте повторно и не используйте повторно опубликованный тег. Вместо этого выпускайте следующий номер предварительного выпуска или следующий ежемесячный патч.
latestпродолжает соответствовать текущей обычной/ежедневной линии npm;beta— текущая цель установки бета-версииextended-stableозначает поддерживаемый пакет npm за предыдущий месяц, начиная с патча33; патч34и последующие являются обслуживающими выпусками этой ежемесячной линии- Обычные финальные и обычные корректирующие выпуски по умолчанию публикуются в npm
beta; операторы выпуска могут явно выбратьlatestлибо позднее продвинуть проверенную бета-сборку - Выделенный ежемесячный расширенно стабильный процесс публикует основной пакет npm и каждый доступный для публикации в npm официальный плагин с одной и той же точной версией. Он не публикует плагины в ClawHub, артефакты macOS или Windows, выпуск GitHub, dist-tag частных репозиториев, образы Docker, мобильные артефакты или загрузки с веб-сайта.
- Каждый обычный финальный выпуск одновременно включает пакет npm, приложение macOS, подписанный автономный APK Android и подписанные установщики Windows Hub. Бета-выпуски обычно сначала проверяют и публикуют путь npm/пакетов, а сборка, подписание, нотариальное заверение и продвижение нативных приложений выполняются только для обычного финального выпуска, если явно не запрошено иное.
Периодичность выпусков
- Выпуски сначала проходят бета-стадию; стабильный выпуск следует только после проверки последней бета-версии
- Сопровождающие обычно создают выпуски из ветки
release/YYYY.M.PATCH, созданной из текущейmain, чтобы проверка и исправления выпуска не блокировали новую разработку вmain - Если тег бета-версии уже отправлен или опубликован и требует исправления, сопровождающие создают следующий тег
-beta.N, а не удаляют или пересоздают прежний - Подробная процедура выпуска, согласования, учётные данные и примечания по восстановлению доступны только сопровождающим
Ежемесячная расширенно стабильная публикация только в npm
Это специальное исключение из описанной ниже обычной процедуры выпуска. Для
завершённого месяца YYYY.M создайте extended-stable/YYYY.M.33; публикуйте
vYYYY.M.33 и последующие обслуживающие патчи из той же ветки. Тег
выпуска, вершина ветки, рабочая копия, версия пакета, предварительная проверка npm и запуск Full Release
Validation должны указывать на один и тот же коммит. Защищённая main уже должна
содержать финальную версию строго более позднего календарного месяца с патчем ниже
33; обслуживающие патчи остаются допустимыми после того, как main продвинется более чем на один
месяц.
В точной расширенно стабильной ветке обновите версию корневого пакета до YYYY.M.P, выполните
pnpm release:prep и убедитесь, что каждый доступный для публикации пакет расширения имеет
ту же версию. Зафиксируйте и отправьте все сгенерированные изменения, создайте и отправьте
неизменяемый тег vYYYY.M.P на этом коммите и запишите полученный полный SHA.
Рабочие процессы используют это подготовленное дерево; они не обновляют и не синхронизируют
версии за вас.
Запустите предварительную проверку npm и Full Release Validation для точно этой подготовленной вершины ветки, затем сохраните идентификаторы обоих запусков и номер успешной попытки запуска Full Release Validation:
gh workflow run openclaw-npm-release.yml \ --ref extended-stable/YYYY.M.33 \ -f tag=vYYYY.M.P \ -f preflight_only=true \ -f npm_dist_tag=extended-stable gh workflow run full-release-validation.yml \ --ref extended-stable/YYYY.M.33 \ -f ref=extended-stable/YYYY.M.33 \ -f release_profile=stablerelease_profile=stable — существующий профиль глубины проверки; он
отделён от dist-tag npm extended-stable и намеренно
остаётся без изменений.
После успешного завершения обоих запусков опубликуйте каждый доступный для публикации в npm официальный плагин из
точно той же вершины ветки. Патч P должен быть 33 или выше. Передайте полный SHA выпуска
как ref, дождитесь завершения всей матрицы и обратного чтения из реестра, затем сохраните
идентификатор успешного запуска Plugin NPM Release:
RELEASE_SHA="$(git rev-parse HEAD)"gh workflow run plugin-npm-release.yml \ --ref extended-stable/YYYY.M.33 \ -f publish_scope=all-publishable \ -f ref="$RELEASE_SHA" \ -f npm_dist_tag=extended-stableРабочий процесс использует обычный подготовленный перечень пакетов all-publishable,
включая пакеты, исходный код которых не изменился. Перед успешным завершением он проверяет каждый точный пакет
и каждый тег плагина extended-stable. Если частичный запуск
завершается ошибкой, повторите ту же команду: уже опубликованные пакеты используются повторно, отсутствующие
или устаревшие теги плагинов согласуются в среде выпуска npm, а
итоговое обратное чтение по-прежнему охватывает полный набор пакетов.
После успешного завершения рабочего процесса плагинов и готовности среды выпуска npm
опубликуйте точный tarball основной предварительной проверки. Публикация основного пакета проверяет, что
указанный запуск плагинов имеет состояние completed/success в той же канонической ветке и
точно тот же SHA исходного кода:
gh workflow run openclaw-npm-release.yml \ --ref extended-stable/YYYY.M.33 \ -f tag=vYYYY.M.P \ -f preflight_only=false \ -f npm_dist_tag=extended-stable \ -f preflight_run_id=<npm-preflight-run-id> \ -f full_release_validation_run_id=<full-validation-run-id> \ -f full_release_validation_run_attempt=<full-validation-run-attempt> \ -f plugin_npm_run_id=<plugin-npm-run-id>Для форка или непроизводственной репетиции, которая намеренно не может удовлетворить
ежемесячной политике .33 или политике месяца защищённой main, добавьте
-f bypass_extended_stable_guard=true как к предварительному запуску npm, так и к запуску
публикации. Значение по умолчанию — false. Обход принимается только с
npm_dist_tag=extended-stable и фиксируется в сводке рабочего процесса. Он
не обходит каноническую ссылку рабочего процесса extended-stable/YYYY.M.33,
равенство вершины ветки, тега и рабочей копии, синтаксис финального тега, равенство
версий пакета и тега, идентичность указанных запусков и манифеста, происхождение
tarball, согласование среды, обратное чтение из реестра или свидетельство исправления селектора.
Рабочий процесс публикации проверяет идентичность указанных запусков предварительной проверки, валидации и плагинов, дайджест подготовленного tarball и селекторы основного пакета в реестре. После успешного завершения рабочего процесса независимо подтвердите результат:
npm view openclaw@YYYY.M.P version --userconfig "$(mktemp)"npm view openclaw@extended-stable version --userconfig "$(mktemp)"Обе команды должны вернуть YYYY.M.P. Если публикация проходит успешно, но обратное
чтение селектора завершается ошибкой, не публикуйте повторно неизменяемую версию пакета. Используйте
единственную команду исправления npm dist-tag add openclaw@YYYY.M.P extended-stable,
выведенную в всегда выполняемой сводке завершившегося ошибкой рабочего процесса, затем повторите оба
независимых обратных чтения. Откат к предыдущему селектору — отдельное решение
оператора, а не способ исправления обратного чтения.
Публичная документация поддержки первоначально определяет Slack, Discord и Codex как поддерживаемые расширенно стабильные поверхности плагинов. Этот список является заявлением о поддержке, а не списком разрешений в коде выпуска: каждый доступный для публикации в npm официальный плагин следует одному и тому же пути публикации точной версии.
Обычный контрольный список ниже по-прежнему охватывает бета-версию, latest, выпуск GitHub,
плагины, macOS, Windows и публикацию для других платформ. Не выполняйте эти
шаги для данного расширенно стабильного процесса только для npm.
Контрольный список оператора обычного выпуска
Этот контрольный список описывает публичную форму процесса выпуска. Частные учётные данные, подписание, нотариальное заверение, восстановление dist-tag и сведения об аварийном откате остаются в доступном только сопровождающим регламенте выпуска.
-
Начните с текущей
main: получите последние изменения, убедитесь, что целевой коммит отправлен, и что CImainдостаточно стабилен для создания ветки. -
Создайте
release/YYYY.M.PATCHиз этого коммита. Обратные переносы необязательны; применяйте только выбранный оператором набор. Обновите все необходимые расположения версий, выполнитеpnpm release:prep, завершите исправления выпуска и необходимые прямые переносы, затем проверьтеsrc/plugins/compat/registry.tsиsrc/commands/doctor/shared/deprecation-compat.ts. -
Зафиксируйте полностью готовый с точки зрения продукта коммит до изменения журнала как SHA кода. Выполните детерминированную предварительную проверку исходного кода, затем используйте
node scripts/full-release-validation-at-sha.mjs --sha <code-sha> --target-ref release/YYYY.M.PATCH. Это закрепляет доверенные инструменты рабочего процесса, пока полная матрица Vitest, Docker, QA, пакетов и производительности проверяет точный SHA кода. -
Перед редактированием классифицируйте ошибки. Ошибка продукта/кода создаёт новый SHA кода и требует успешной полной проверки этого SHA. Ошибка рабочего процесса, тестовой инфраструктуры, учётных данных, согласования или инфраструктуры исправляется в принадлежащей ей области, после чего проверка повторно выполняется для того же SHA кода.
-
Только после успешной проверки SHA кода сформируйте верхний раздел
CHANGELOG.mdиз объединённых PR и прямых коммитов после последнего достижимого выпущенного тега. Формулируйте записи для пользователей и удаляйте дубликаты. Если расходящийся выпущенный тег или последующий прямой перенос повторно связывает уже выпущенные PR, явно передайте его как--shipped-ref. -
Зафиксируйте только
CHANGELOG.md. Этот коммит является SHA выпуска. Полная разница между SHA кода и SHA выпуска должна в точности соответствоватьCHANGELOG.md; любое изменение другого пути возвращает процесс выпуска к шагу 2. -
Запустите Full Release Validation с привязкой к SHA выпуска и включённым повторным использованием свидетельств. Облегчённый родительский запуск должен записать
changelog-only-release-v1, указывать на успешно проверенный SHA кода и не запускать дочерние процессы проверки продукта. При этом повторно используются свидетельства продукта, но не байты пакетов. -
Запустите
OpenClaw NPM Releaseсpreflight_only=trueдля SHA/тега выпуска. Сохраните успешныйpreflight_run_id. Это собирает и проверяет точные байты пакета, включающие окончательный журнал изменений. -
Пометьте SHA выпуска тегом, затем запустите вспомогательный инструмент кандидата с успешным родительским запуском проверки SHA выпуска и предварительной проверкой npm, не запуская их повторно:
bash pnpm release:candidate -- \ --tag vYYYY.M.PATCH-beta.N \ --full-release-run <release-sha-validation-run-id> \ --npm-preflight-run <preflight-run-id> \ --skip-dispatchДля стабильного выпуска также передайте
--windows-node-tag vX.Y.Z. Вспомогательный скрипт проверяет происхождение примечаний к выпуску, байты предварительной проверки npm, подтверждение установки/обновления в Parallels, подтверждение пакета Telegram и планы публикации плагинов, а затем выводит команду публикации.OpenClaw Release Publishпараллельно отправляет выбранные или все доступные для публикации пакеты плагинов в npm и тот же набор в ClawHub, а после успешной публикации плагинов в npm продвигает подготовленный артефакт предварительной проверки OpenClaw для npm с соответствующим dist-tag. Рабочая копия выпуска остаётся корнем продукта и данных, а планирование и итоговая проверка выполняются из точной доверенной рабочей копии с исходным кодом рабочего процесса, чтобы более старый коммит выпуска не мог незаметно использовать устаревшие инструменты выпуска. До запуска любого дочернего процесса публикации формируется и кэшируется точное содержимое выпуска GitHub. Если полный соответствующий разделCHANGELOG.mdукладывается в ограничение GitHub в 125,000 символов и защитный предел средства формирования в 125,000 байт, страница содержит этот раздел## YYYY.M.PATCHцеликом, включая его заголовок. Если исходный раздел не помещается, на странице сохраняются точные сгруппированные редакционные примечания, а слишком объёмная запись о вкладах заменяется стабильной ссылкой на полную запись в привязанном к тегуCHANGELOG.md; частичные записи и обрезанные пункты никогда не публикуются. Рабочий процесс выбирает полное или компактное содержимое до добавления### Release verification; если добавление завершающего блока подтверждений превысит ограничение, он сохраняет каноническое содержимое и вместо этого полагается на неизменяемые прикреплённые доказательства. Стабильные выпуски, опубликованные в npmlatest, становятся последним выпуском GitHub, а стабильные обслуживающие выпуски, оставленные в npmbeta, создаются с GitHublatest=false. Рабочий процесс также загружает в выпуск GitHub доказательства зависимостей из предварительной проверки, манифест полной валидации и доказательства проверки реестра после публикации для реагирования на инциденты после выпуска. Он немедленно выводит идентификаторы дочерних запусков, автоматически одобряет шлюзы окружения выпуска, которые разрешено одобрять токену рабочего процесса, суммирует сбои дочерних заданий с окончаниями журналов, заранее создаёт черновик страницы выпуска GitHub и параллельно с публикацией OpenClaw в npm продвигает артефакты Windows и Android, завершает страницу выпуска и доказательства зависимостей после успешного выполнения этих этапов, ожидает ClawHub всякий раз, когда публикуется OpenClaw в npm, затем запускает средство проверки бета-версии из доверенной основной ветки и загружает доказательства после публикации для выпуска GitHub, пакета npm, выбранных пакетов плагинов npm, выбранных пакетов ClawHub, идентификаторов запусков дочерних рабочих процессов и необязательного идентификатора запуска NPM Telegram. Средство проверки начальной загрузки ClawHub требует точные путь и SHA рабочего процесса доверенной основной ветки, попытки запуска производителя и завершающего процесса, SHA выпуска, запрошенный набор пакетов, неизменяемый кортеж артефакта пакета и артефакт итогового чтения из реестра; успешный устаревший запуск по ссылке выпуска не принимается.Затем выполните приёмочную проверку пакета после публикации для опубликованного пакета
openclaw@YYYY.M.PATCH-beta.Nилиopenclaw@beta. Если отправленный или опубликованный предварительный выпуск требует исправления, создайте следующий соответствующий номер предварительного выпуска; никогда не удаляйте и не перезаписывайте предыдущий. -
После неудачной попытки публикации не изменяйте SHA выпуска, если только сбой не доказывает наличие дефекта продукта или журнала изменений. Возобновляйте успешно завершённые неизменяемые дочерние процессы и артефакты; никогда не пересобирайте и не публикуйте повторно уже успешно опубликованную версию пакета.
-
Для стабильного выпуска продолжайте только после того, как проверенная бета-версия или кандидат на выпуск получит необходимые доказательства валидации. Стабильная публикация в npm также проходит через
OpenClaw Release Publish, повторно используя успешный артефакт предварительной проверки черезpreflight_run_id. Готовность стабильного выпуска macOS также требует наличия упакованных.zip,.dmg,.dSYM.zipи обновлённогоappcast.xmlвmain; рабочий процесс публикации macOS автоматически публикует подписанный appcast в общедоступныйmainпосле проверки артефактов выпуска либо открывает/обновляет PR appcast, если защита ветки блокирует прямую отправку. Готовность стабильного выпуска Windows Hub требует наличия подписанных артефактовOpenClawCompanion-Setup-x64.exe,OpenClawCompanion-Setup-arm64.exeиOpenClawCompanion-SHA256SUMS.txtв выпуске OpenClaw на GitHub. Передайте точный подписанный тег выпускаopenclaw/openclaw-windows-nodeкакwindows_node_tag, а одобренную для кандидата карту дайджестов установщиков — какwindows_node_installer_digests;OpenClaw Release Publishсохраняет черновик выпуска, запускаетWindows Node Releaseи проверяет все три артефакта перед публикацией. -
После публикации запустите средство проверки npm после публикации, при необходимости — отдельный E2E Telegram для опубликованного npm-пакета, когда требуется подтверждение канала после публикации, продвижение dist-tag, если оно необходимо, проверьте сформированную страницу выпуска GitHub, выполните шаги объявления о выпуске, а затем завершите закрытие стабильного выпуска в основной ветке, прежде чем считать стабильный выпуск завершённым.
Закрытие стабильного выпуска в основной ветке
Публикация стабильного выпуска не завершена, пока main не содержит фактическое состояние выпущенной версии.
- Начните со свежей актуальной версии
main. Сопоставьте с нейrelease/YYYY.M.PATCHи перенесите вперёд реальные исправления, отсутствующие вmain. Не переносите вслепую в более новуюmainадаптеры совместимости, тестирования или валидации, предназначенные только для выпуска. - Установите
mainв значение выпущенной стабильной версии, а не предполагаемого следующего цикла. После изменения корневой версии выполнитеpnpm release:prep, а затемpnpm deps:shrinkwrap:generate. - Обеспечьте, чтобы раздел
## YYYY.M.PATCHфайлаCHANGELOG.mdвmainточно соответствовал ветке выпуска с тегом. Включите стабильное обновлениеappcast.xml, если оно было опубликовано в выпуске для Mac. - Не добавляйте
YYYY.M.PATCH+1, бета-версию или пустой раздел будущего журнала изменений вmain, пока оператор явно не запустит этот цикл выпуска. - Выполните
pnpm release:generated:check,pnpm deps:shrinkwrap:checkиOPENCLAW_TESTBOX=1 pnpm check:changed. Отправьте изменения, а затем, прежде чем считать стабильный выпуск завершённым, убедитесь, чтоorigin/mainсодержит выпущенную версию и журнал изменений. - После каждой закрытой проверки отката поддерживайте переменные репозитория
RELEASE_ROLLBACK_DRILL_IDиRELEASE_ROLLBACK_DRILL_DATEв актуальном состоянии.
OpenClaw Stable Main Closeout запускается от отправки main, содержащей выпущенную версию, журнал изменений и appcast после публикации стабильного выпуска. Он считывает неизменяемые доказательства после публикации, чтобы связать выпущенный тег с запусками полной валидации выпуска и публикации, а затем проверяет стабильное состояние основной ветки, выпуск, обязательную выдержку стабильного выпуска и блокирующие доказательства производительности. Он прикрепляет к выпуску GitHub неизменяемые манифест закрытия и контрольную сумму. Автоматический триггер при отправке пропускает устаревшие выпуски, созданные до появления неизменяемых доказательств после публикации, и никогда не считает такой пропуск завершённым закрытием.
Для полного закрытия необходимы оба артефакта и соответствующая контрольная сумма. Частичный манифест повторно воспроизводит записанные в нём SHA main и проверку отката, чтобы заново сформировать идентичные байты, а затем прикрепляет отсутствующую контрольную сумму; недействительная пара или контрольная сумма без манифеста остаётся блокирующим условием. Запуск, инициированный отправкой без переменных репозитория для проверки отката, пропускается без завершения закрытия; отсутствующая или созданная более 90 дней назад запись проверки всё равно блокирует ручное закрытие на основе доказательств. Закрытые команды восстановления остаются в руководстве только для сопровождающих. Используйте ручной запуск только для исправления или повторного выполнения подтверждённого доказательствами закрытия стабильного выпуска.
Устаревший резервный тег исправления может повторно использовать доказательства базового пакета, только если тег исправления разрешается в тот же исходный коммит, что и базовый стабильный тег. Его выпуск Android повторно использует проверенный APK базового тега и добавляет сведения о происхождении для тега исправления. Исправление с другим исходным кодом должно опубликовать и проверить собственные доказательства пакета и использовать более высокий Android versionCode.
Предварительная проверка выпуска
-
Выполните
pnpm check:test-typesперед предварительной проверкой выпуска, чтобы тестовый TypeScript оставался охваченным вне более быстрого локального шлюзаpnpm check. -
Выполните
pnpm check:architectureперед предварительной проверкой выпуска, чтобы более широкие проверки циклов импорта и архитектурных границ успешно проходили вне более быстрого локального шлюза. -
Выполните
pnpm build && pnpm ui:buildпередpnpm release:check, чтобы ожидаемые артефакты выпускаdist/*и пакет Control UI существовали для этапа проверки упаковки. -
Выполните
pnpm release:prepпосле повышения корневой версии и перед созданием тега. Команда запускает все детерминированные генераторы выпуска, результаты которых часто расходятся после изменения версии, конфигурации или API: версии плагинов, npm shrinkwrap, инвентарь плагинов, базовую схему конфигурации, метаданные конфигурации встроенных каналов, базовый уровень документации конфигурации, экспорты SDK плагинов и базовый уровень API SDK плагинов.pnpm release:checkповторно запускает эти проверки в режиме проверки (включая проверку бюджета поверхности SDK плагинов) и за один проход сообщает обо всех расхождениях сформированных данных перед запуском проверок выпуска пакета. -
Синхронизация версий плагинов по умолчанию обновляет публикуемый пакет среды выполнения
@openclaw/ai, версии официальных пакетов плагинов и существующие минимальные версииopenclaw.compat.pluginApiдо версии выпуска OpenClaw. Считайте это поле минимальной версией API SDK/среды выполнения плагинов, а не просто копией версии пакета: для выпусков только плагинов, которые намеренно сохраняют совместимость со старыми хостами OpenClaw, оставляйте минимальную версию на уровне самого старого поддерживаемого API хоста и документируйте этот выбор в доказательствах выпуска плагина. -
Перед одобрением выпуска запустите вручную рабочий процесс
Full Release Validation, чтобы из одной точки запустить все тестовые среды предварительного выпуска. Он принимает ветку, тег или полный SHA коммита, запускает вручнуюCIи запускаетOpenClaw Release Checksдля проверок установки, приёмки пакета, межплатформенных проверок пакета, соответствия QA Lab, Matrix и Telegram. Стабильные и полные запуски всегда включают исчерпывающую проверку в реальной среде/E2E и выдержку пути выпуска Docker;run_release_soak=trueсохранён для явной выдержки бета-версии. Приёмка пакета обеспечивает канонический E2E Telegram для пакета во время валидации кандидата, предотвращая запуск второго параллельного процесса опроса в реальной среде.После публикации бета-версии укажите
release_package_spec, чтобы повторно использовать выпущенный пакет npm в проверках выпуска, приёмке пакета и E2E Telegram для пакета без повторной сборки архива выпуска. Указывайтеnpm_telegram_package_specтолько тогда, когда Telegram должен использовать опубликованный пакет, отличный от остальной валидации выпуска. Указывайтеpackage_acceptance_package_spec, когда приёмка пакета должна использовать опубликованный пакет, отличный от спецификации пакета выпуска. Указывайтеevidence_package_spec, когда отчёт с доказательствами выпуска должен подтвердить, что валидация соответствует опубликованному пакету npm, не требуя запуска E2E Telegram.bash node scripts/full-release-validation-at-sha.mjs \ --sha <code-sha> \ --target-ref release/YYYY.M.PATCH -
Запускайте вручную рабочий процесс
Package Acceptance, когда требуется независимое подтверждение кандидата пакета, пока продолжается работа над выпуском. Используйтеsource=npmдляopenclaw@beta,openclaw@latestили точной версии выпуска;source=ref— чтобы упаковать доверенную ветку/тег/SHApackage_refс текущей тестовой инфраструктуройworkflow_ref;source=url— для общедоступного HTTPS-архива с обязательным SHA-256 и строгой политикой общедоступных URL;source=trusted-url— для именованной политики доверенного источника с обязательнымиtrusted_source_idи SHA-256; илиsource=artifact— для архива, загруженного другим запуском GitHub Actions.Рабочий процесс разрешает кандидата в
package-under-test, повторно использует планировщик выпуска Docker E2E для этого архива и может выполнять QA Telegram с тем же архивом посредствомtelegram_mode=mock-openaiилиtelegram_mode=live-frontier. Когда выбранные сценарии Docker включаютpublished-upgrade-survivor, артефактом пакета служит кандидат, аpublished_upgrade_survivor_baselineвыбирает опубликованный базовый вариант.update-restart-authиспользует пакет кандидата одновременно как установленный CLI и как тестируемый пакет, чтобы проверить путь управляемого перезапуска команды обновления кандидата.Пример:
bash 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: сценарии установки/каналов/агента, сети Gateway и перезагрузки конфигурацииpackage: сценарии пакета/обновления/перезапуска/плагинов на основе нативных артефактов без OpenWebUI или действующего ClawHubproduct: профиль пакета, а также каналы MCP, очистка cron/субагентов, веб-поиск OpenAI и OpenWebUIfull: части пути выпуска Docker с OpenWebUIcustom: точный выборdocker_lanesдля целевого повторного запуска
-
Запускайте вручную процесс
CIнапрямую, когда требуется только детерминированное стандартное покрытие CI для кандидата на выпуск. Ручные запуски CI обходят ограничение областью изменений и принудительно запускают сегменты Linux Node, сегменты встроенных плагинов, сегменты контрактов плагинов и каналов, совместимость с Node 22,check-*,check-additional-*, дымовые проверки собранных артефактов, проверки документации, Python-навыки, Windows, macOS и сценарии интернационализации Control UI. Отдельные ручные запуски CI включают Android только при запуске сinclude_android=true;Full Release Validationпередаёт этот входной параметр своему дочернему процессу CI.bash gh workflow run ci.yml --ref release/YYYY.M.PATCH -f include_android=true -
Запускайте
pnpm qa:otel:smokeпри проверке телеметрии выпуска. Этот процесс выполняет QA-lab через локальный приёмник OTLP/HTTP и проверяет экспорт трассировок, метрик и журналов, а также ограниченность атрибутов трассировки и редактирование содержимого и идентификаторов без необходимости использовать Opik, Langfuse или другой внешний сборщик. -
Запускайте
pnpm qa:otel:collector-smokeпри проверке совместимости со сборщиком. Этот процесс направляет тот же экспорт OTLP из QA-lab через настоящий контейнер Docker с OpenTelemetry Collector перед проверками локального приёмника. -
Запускайте
pnpm qa:prometheus:smokeпри проверке защищённого сбора данных Prometheus. Этот процесс выполняет QA-lab, отклоняет неаутентифицированные запросы сбора и проверяет, что критически важные для выпуска семейства метрик не содержат текст запросов, необработанные идентификаторы, токены аутентификации и локальные пути. -
Запускайте
pnpm qa:observability:smoke, чтобы последовательно выполнить сценарии дымовой проверки OpenTelemetry и Prometheus из рабочей копии исходного кода. -
Запускайте
pnpm release:checkперед каждым выпуском с тегом. -
Предварительная проверка
OpenClaw NPM Releaseформирует свидетельства о зависимостях выпуска перед упаковкой tarball npm. Шлюз уязвимостей из рекомендаций npm блокирует выпуск. Отчёты о рисках транзитивного манифеста, владении зависимостями и области установки, а также изменениях зависимостей служат только свидетельствами выпуска. Отчёт об изменениях зависимостей сравнивает кандидата на выпуск с предыдущим достижимым тегом выпуска. Предварительная проверка загружает свидетельства о зависимостях какopenclaw-release-dependency-evidence-<tag>, а также встраивает их вdependency-evidence/внутри подготовленного артефакта предварительной проверки npm. Фактический путь публикации повторно использует этот артефакт предварительной проверки, а затем прикрепляет те же свидетельства к выпуску GitHub какopenclaw-<version>-dependency-evidence.zip. -
Запускайте
OpenClaw Release Publishдля изменяющей состояния последовательности публикации после создания тега. Запускайте обычные бета- и стабильные публикации из довереннойmain; тег выпуска по-прежнему выбирает точный целевой коммит и может указывать наrelease/YYYY.M.PATCH. Альфа-публикации Tideclaw остаются в соответствующей альфа-ветке. Передайте успешныйpreflight_run_idnpm для OpenClaw, успешныйfull_release_validation_run_idи точныйfull_release_validation_run_attempt, а также сохраняйте область публикации плагинов по умолчаниюall-publishable, если только вы намеренно не выполняете целевое исправление. Процесс последовательно выполняет публикацию плагинов в npm, публикацию плагинов в ClawHub и публикацию OpenClaw в npm, чтобы основной пакет не был опубликован раньше вынесенных из него плагинов; продвижение Windows и Android выполняется параллельно с публикацией основного пакета в npm на странице черновика выпуска. Повторные запуски публикации можно возобновлять: если версия основного пакета npm уже опубликована, этап публикации основного пакета пропускается после того, как процесс подтвердит соответствие tarball в реестре артефакту предварительной проверки тега; продвижение Windows/Android пропускается, если выпуск уже содержит проверенный контракт артефактов, поэтому при повторной попытке заново выполняются только неудавшиеся этапы. Для целевых исправлений только плагинов требуютсяplugin_publish_scope=selectedи непустой список плагинов. Для запусковall-publishableтолько для плагинов требуются полные неизменяемые свидетельства предварительной проверки и Full Release Validation; частичные свидетельства отклоняются. -
Для стабильного
OpenClaw Release Publishтребуется точныйwindows_node_tagпосле появления соответствующего выпускаopenclaw/openclaw-windows-node, не являющегося предварительным, а также утверждённая для кандидата картаwindows_node_installer_digests. Перед запуском любого дочернего процесса публикации он проверяет, что исходный выпуск опубликован, не является предварительным, содержит необходимые установщики x64/ARM64 и по-прежнему соответствует утверждённой карте. Затем он запускаетWindows Node Release, пока выпуск OpenClaw ещё является черновиком, передавая закреплённую карту дайджестов установщиков без изменений. Дочерний процесс загружает подписанные установщики Windows Hub из этого точного тега, сверяет их с закреплёнными дайджестами, на исполнителе Windows проверяет, что их подписи Authenticode используют ожидаемого подписанта OpenClaw Foundation, записывает манифест SHA-256 и загружает установщики вместе с манифестом в канонический выпуск OpenClaw на GitHub, после чего повторно загружает продвинутые артефакты и проверяет их наличие в манифесте и хеши. Родительский процесс перед публикацией проверяет текущий контракт артефактов x64, ARM64 и контрольных сумм. Прямое восстановление отклоняет неожиданные имена артефактовOpenClawCompanion-*, прежде чем заменить ожидаемые артефакты контракта закреплёнными байтами исходного выпуска.Запускайте
Windows Node Releaseвручную только для восстановления и всегда передавайте точный тег, а неlatest, а также явную JSON-картуexpected_installer_digestsиз утверждённого исходного выпуска. Ссылки для скачивания на сайте должны вести на точные URL-адреса артефактов выпуска OpenClaw для текущего стабильного выпуска либо наreleases/latest/download/...только после проверки, что перенаправление GitHub на последний выпуск указывает на тот же выпуск; не размещайте ссылку только на страницу выпуска сопутствующего репозитория. -
Проверки релиза теперь выполняются в отдельном запускаемом вручную рабочем процессе:
OpenClaw Release Checks. Он также запускает проверку эквивалентности с имитациями QA Lab, а перед одобрением релиза — быстрый профиль с реальным Matrix и проверку QA Telegram. Проверки с реальными сервисами используют окружениеqa-live-shared; Telegram также использует аренду учетных данных Convex CI. Запускайте вручную рабочий процессQA-Lab - All Lanesсmatrix_profile=allиmatrix_shards=true, когда требуется параллельно проверить полный набор функций транспорта Matrix, мультимедиа и E2EE. -
Межплатформенная проверка установки и обновления во время выполнения входит в общедоступные
OpenClaw Release ChecksиFull Release Validation, которые напрямую вызывают переиспользуемый рабочий процесс.github/workflows/openclaw-cross-os-release-checks-reusable.yml. Такое разделение сделано намеренно: реальный путь выпуска в npm остается коротким, детерминированным и сосредоточенным на артефактах, а более медленные проверки с реальными сервисами выполняются отдельно, чтобы не задерживать и не блокировать публикацию. -
Проверки релиза, использующие секреты, следует запускать через
Full Release Validationили из ссылки на рабочий процессmain/release, чтобы логика рабочего процесса и секреты оставались под контролем. -
OpenClaw Release Checksпринимает ветку, тег или полный SHA коммита, если разрешенный коммит достижим из ветки OpenClaw или тега релиза. -
Предварительная проверка
OpenClaw NPM Release, предназначенная только для валидации, также принимает текущий полный 40-символьный SHA коммита ветки рабочего процесса без необходимости отправлять тег. Путь с SHA предназначен только для валидации, и его нельзя преобразовать в реальную публикацию. В режиме SHA рабочий процесс создаетv<package.json version>только для проверки метаданных пакета; для реальной публикации по-прежнему требуется настоящий тег релиза. -
В обоих рабочих процессах реальная публикация и продвижение выполняются на раннерах GitHub, а неизменяющий данные путь валидации может использовать более мощные раннеры Blacksmith Linux.
-
Этот рабочий процесс запускает
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cache, используя секреты рабочего процессаOPENAI_API_KEYиANTHROPIC_API_KEY. -
Предварительная проверка релиза npm больше не ожидает отдельного этапа проверок релиза.
-
Перед локальным созданием тега кандидата на выпуск запустите
RELEASE_TAG=vYYYY.M.PATCH-beta.N pnpm release:fast-pretag-check. Вспомогательная команда последовательно запускает быстрые защитные проверки релиза, проверки выпуска плагинов в npm/ClawHub, сборку, сборку пользовательского интерфейса иrelease:openclaw:npm:check, чтобы обнаружить распространенные ошибки, блокирующие одобрение, до запуска рабочего процесса публикации GitHub. -
Перед одобрением запустите
RELEASE_TAG=vYYYY.M.PATCH node --import tsx scripts/openclaw-npm-release-check.ts(или соответствующий тег предварительного/исправленного выпуска). -
После публикации в npm запустите
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.PATCH(или соответствующую бета-версию/версию исправления), чтобы проверить путь установки опубликованного пакета из реестра в новом временном префиксе. -
После публикации бета-версии запустите
OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC=openclaw@YYYY.M.PATCH-beta.N OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=ci pnpm test:docker:npm-telegram-live, чтобы проверить первоначальную настройку установленного пакета, настройку Telegram и реальное сквозное тестирование Telegram опубликованного пакета npm с использованием общего пула арендуемых учетных данных Telegram. Для разовых локальных запусков сопровождающие могут не указывать переменные Convex и напрямую передать три учетных данных окруженияOPENCLAW_QA_TELEGRAM_*. -
Чтобы запустить полную дымовую проверку бета-версии после публикации с компьютера сопровождающего, используйте
pnpm release:beta-smoke -- --beta betaN. Вспомогательная команда выполняет проверку обновления npm и новой целевой установки в Parallels, запускаетNPM Telegram Beta E2E, опрашивает точный запуск рабочего процесса, скачивает артефакт и выводит отчет Telegram. -
Сопровождающие могут запустить такую же проверку после публикации из GitHub Actions с помощью запускаемого вручную рабочего процесса
NPM Telegram Beta E2E. Он намеренно запускается только вручную и не выполняется при каждом слиянии. -
Автоматизация релиза для сопровождающих сначала выполняет предварительную проверку, а затем продвижение:
- Для реальной публикации в npm требуется успешный результат npm
preflight_run_id. - Оркестрация и предварительная проверка обычных бета- и стабильных публикаций используют доверенный
mainдля точного целевого тега. Публикация и предварительная проверка альфа-версии Tideclaw используют соответствующую альфа-ветку. - Стабильные релизы npm по умолчанию используют
beta; для стабильной публикации npm можно явно указатьlatestво входных данных рабочего процесса. - Изменение dist-tag npm на основе токена выполняется в
openclaw/releases/.github/workflows/openclaw-npm-dist-tags.yml, посколькуnpm dist-tag addпо-прежнему требуетсяNPM_TOKEN, тогда как исходный репозиторий использует для публикации только OIDC. - Общедоступный
macOS Releaseпредназначен только для валидации; если тег существует только в ветке релиза, но рабочий процесс запускается изmain, задайтеpublic_release_branch=release/YYYY.M.PATCH. - Для реальной публикации macOS требуются успешные результаты macOS
preflight_run_idиvalidate_run_id. - Пути реальной публикации продвигают подготовленные артефакты, а не собирают их повторно.
- Для реальной публикации в npm требуется успешный результат npm
-
Для стабильных исправляющих релизов, таких как
YYYY.M.PATCH-N, проверка после публикации также проверяет тот же путь обновления во временном префиксе сYYYY.M.PATCHдоYYYY.M.PATCH-N, чтобы исправления релиза не могли незаметно оставить старые глобальные установки на базовой стабильной версии. -
Предварительная проверка релиза npm завершается отказом, если tar-архив не содержит одновременно
dist/control-ui/index.htmlи непустую полезную нагрузкуdist/control-ui/assets/, чтобы снова не выпустить пустую браузерную панель управления. -
Проверка после публикации также убеждается, что точки входа опубликованных плагинов и метаданные пакета присутствуют в установленной структуре реестра. Если в релизе отсутствуют необходимые для выполнения данные плагинов, проверка после публикации завершается ошибкой, и релиз нельзя продвинуть в
latest. -
pnpm test:install:smokeтакже контролирует ограничениеunpackedSizeдля npm pack в tar-архиве обновления-кандидата, чтобы сквозное тестирование установщика обнаруживало случайное разрастание пакета до начала публикации релиза. -
Если работа над релизом затрагивала планирование CI, манифесты длительности расширений или матрицы тестов расширений, перед одобрением повторно создайте и проверьте управляемые планировщиком выходные матрицы
plugin-prerelease-extension-shardиз.github/workflows/plugin-prerelease.yml, чтобы примечания к выпуску не описывали устаревшую структуру CI. -
Готовность стабильного релиза macOS также включает компоненты обновления: в релизе GitHub должны присутствовать упакованные
.zip,.dmgи.dSYM.zip; после публикацииappcast.xmlвmainдолжен указывать на новый архив стабильной версии (рабочий процесс публикации macOS фиксирует это изменение автоматически или открывает PR для appcast, если прямая отправка заблокирована); упакованное приложение должно сохранять идентификатор пакета без признака отладочной сборки, непустой URL канала Sparkle и значениеCFBundleVersion, не ниже канонического минимального номера сборки Sparkle для этой версии релиза.
Тестовые среды релиза
Full Release Validation позволяет операторам запускать полную матрицу продукта из одной точки входа. Используйте вспомогательную команду, чтобы каждый дочерний рабочий процесс выполнялся из временной ветки, закрепленной на одном доверенном SHA рабочего процесса main, а запрошенный коммит оставался проверяемым кандидатом:
pnpm ci:full-release \ --sha <code-sha> \ --target-ref release/YYYY.M.PATCHВспомогательная команда получает текущий origin/main, отправляет release-ci/<workflow-sha>-... с этим доверенным коммитом рабочего процесса, определяет beta для альфа- и бета-версий пакета и stable в остальных случаях, запускает Full Release Validation из временной ветки с ref=<target-sha>, проверяет, что headSha каждого дочернего рабочего процесса соответствует закрепленному SHA родительского рабочего процесса, а затем удаляет временную ветку. Передайте -f reuse_evidence=false, чтобы принудительно запустить проверку заново, -f release_profile=full для широкой рекомендательной проверки или --workflow-sha <trusted-main-sha>, чтобы закрепить более старый коммит, который все еще достижим из текущего origin/main. Сам рабочий процесс никогда не изменяет ссылки репозитория. Это позволяет использовать инструменты релиза, доступные только в основной ветке, не добавляя их коммиты в кандидат, и исключает случайное подтверждение более нового дочернего запуска main.
Когда Code SHA успешно пройдет проверки, зафиксируйте только CHANGELOG.md и запустите ту же вспомогательную команду с Release SHA:
pnpm ci:full-release \ --sha <release-sha> \ --target-ref release/YYYY.M.PATCHВторой родительский процесс повторно использует свидетельства проверки продукта, только если GitHub подтверждает, что Release SHA является потомком Code SHA, а полный набор измененных путей в точности равен CHANGELOG.md. Он записывает changelog-only-release-v1 и не запускает дочерние проверки продукта. Предварительная проверка npm и приемочное тестирование пакета и установки по-прежнему выполняются для Release SHA, поскольку байты его tar-архива изменились.
Для нового Code SHA рабочий процесс разрешает целевой объект, вручную запускает CI, а затем запускает OpenClaw Release Checks. OpenClaw Release Checks параллельно запускает дымовую проверку установки, межплатформенные проверки релиза, проверку пути релиза с реальными сервисами и сквозным тестированием в Docker при включенной длительной проверке, Package Acceptance с каноническим сквозным тестом пакета Telegram, проверку эквивалентности QA Lab, реальный Matrix и реальный Telegram. Полный запуск или запуск всех проверок считается приемлемым, только если сводка Full Release Validation показывает успешные результаты normal_ci, plugin_prerelease и release_checks, кроме случая, когда прицельный повторный запуск намеренно пропустил отдельний дочерний процесс Plugin Prerelease. Используйте отдельный дочерний процесс npm-telegram только для прицельного повторного запуска проверки опубликованного пакета с release_package_spec или npm_telegram_package_spec. Итоговая сводка проверки содержит таблицы самых медленных заданий для каждого дочернего запуска, чтобы руководитель релиза мог видеть текущий критический путь без скачивания журналов.
Дочерний процесс производительности продукта в этом пути релиза работает только с артефактами. Зонтичный процесс запускает его с publish_reports=false, а валидация отклоняется, если его защитная проверка режима только для артефактов не подтверждает, что публикация отчета Clawgrit осталась пропущенной.
Полную матрицу этапов, точные имена заданий рабочих процессов, различия между стабильным и полным профилями, артефакты и параметры прицельного повторного запуска см. в разделе Полная валидация релиза.
Дочерние рабочие процессы запускаются из закрепленной по SHA доверенной ссылки, в которой выполняется Full Release Validation. Каждый дочерний запуск должен использовать точный SHA родительского рабочего процесса. Не используйте необработанные запуски --ref main -f ref=<sha> для подтверждения релиза; используйте pnpm ci:full-release --sha <target-sha> --target-ref release/YYYY.M.PATCH.
Используйте release_profile для выбора широты охвата реальных сервисов и поставщиков:
beta: самый быстрый критически важный для релиза путь OpenAI/ядра с реальными сервисами и Dockerstable: охват поставщиков и серверных компонентов для бета- и стабильных версий при одобрении релизаfull: стабильная версия плюс широкая рекомендательная проверка поставщиков и мультимедиа
Валидация стабильной версии и полная валидация всегда запускают исчерпывающую проверку с реальными сервисами и сквозным тестированием, проверку пути релиза в Docker и ограниченную проверку сохранения работоспособности опубликованных обновлений перед продвижением. Используйте run_release_soak=true, чтобы запросить такую же проверку для бета-версии. Она охватывает четыре последних стабильных пакета, закрепленные базовые версии 2026.4.23 и 2026.5.2, а также более старую версию 2026.4.15; повторяющиеся базовые версии удаляются, а каждая оставшаяся базовая версия распределяется в отдельное задание раннера Docker.
OpenClaw Release Checks использует доверенную ссылку рабочего процесса, чтобы один раз разрешить целевую ссылку как release-package-under-test, и повторно использует этот артефакт в межплатформенных проверках, Package Acceptance и проверках пути релиза в Docker при выполнении длительной проверки. Благодаря этому все среды, работающие с пакетами, используют одни и те же байты, а пакеты не собираются повторно. Когда бета-версия уже опубликована в npm, задайте release_package_spec=openclaw@YYYY.M.PATCH-beta.N, чтобы проверки релиза один раз скачали выпущенный пакет, извлекли SHA исходной сборки из dist/build-info.json и повторно использовали этот артефакт для межплатформенных проверок, Package Acceptance, пути релиза в Docker и проверок пакета Telegram.
Межплатформенная дымовая проверка установки OpenAI использует OPENCLAW_CROSS_OS_OPENAI_MODEL, если задана переменная репозитория или организации, а иначе — openai/gpt-5.6-luna, поскольку этот этап подтверждает установку пакета, первоначальную настройку, запуск Gateway и один реальный запуск агента, а не измеряет производительность наиболее мощной модели. Более широкая матрица реальных поставщиков остается местом для проверки конкретных моделей.
Используйте следующие варианты в зависимости от этапа релиза:
# Проверить Code SHA с полной готовностью продукта.pnpm ci:full-release \ --sha <code-sha> \ --target-ref release/YYYY.M.PATCH # Проверить Release SHA с изменениями только в журнале изменений, повторно используя свидетельства по продукту для Code SHA.pnpm ci:full-release \ --sha <release-sha> \ --target-ref release/YYYY.M.PATCH # После публикации бета-версии добавить Telegram E2E для опубликованного пакета.pnpm ci:full-release \ --sha <release-sha> \ --target-ref release/YYYY.M.PATCH \ -f release_package_spec=openclaw@YYYY.M.PATCH-beta.N \ -f evidence_package_spec=openclaw@YYYY.M.PATCH-beta.N \ -f npm_telegram_provider_mode=mock-openaiНе используйте полный комплексный запуск для первого повторного запуска после точечного исправления. Если один блок завершился с ошибкой, для следующей проверки используйте завершившийся с ошибкой дочерний рабочий процесс, задание, ветку Docker, профиль пакета, провайдера модели или ветку QA. Повторно запускайте полный комплексный процесс, только если исправление изменило общую оркестрацию выпуска или сделало устаревшими ранее полученные свидетельства по всем блокам. Итоговый проверяющий компонент комплексного процесса повторно проверяет записанные идентификаторы запусков дочерних рабочих процессов, поэтому после успешного повторного запуска дочернего рабочего процесса повторно запустите только завершившееся с ошибкой родительское задание Verify full validation.
rerun_group=all может повторно использовать предыдущий успешный комплексный запуск, если профиль выпуска,
фактическая настройка выдержки и входные данные проверки совпадают, а целевой SHA
либо идентичен, либо новая цель является потомком, полный набор изменённых путей которого
в точности равен CHANGELOG.md. При повторном использовании для точной цели записывается
exact-target-full-validation-v1; для Release SHA после проверки записывается
changelog-only-release-v1. В последнем случае повторно используется только проверка продукта. Предварительная
проверка npm, байты пакета, происхождение примечаний к выпуску и приёмочные проверки установки и обновления
по-прежнему должны выполняться для Release SHA. Любое изменение версии, исходного кода, сгенерированных
файлов, зависимостей, пакета или цели, относящейся к рабочему процессу, требует нового Code SHA
и новой полной проверки. Более новые комплексные запуски для той же ссылки release/* и
группы повторного запуска автоматически заменяют выполняющиеся. Передайте
reuse_evidence=false, чтобы принудительно начать новый полный запуск.
Для ограниченного восстановления передайте комплексному процессу rerun_group. all — реальный запуск кандидата на выпуск, ci запускает только обычный дочерний процесс CI, plugin-prerelease запускает только дочерний процесс плагинов, предназначенный исключительно для выпуска, release-checks запускает все блоки выпуска, а более узкие группы выпуска — install-smoke, cross-os, live-e2e, package, qa, qa-parity, qa-live и npm-telegram. Для точечных повторных запусков npm-telegram требуется release_package_spec или npm_telegram_package_spec; полные запуски и запуски всех проверок используют канонический Telegram E2E пакета внутри Package Acceptance. Для точечных повторных запусков на разных ОС можно добавить cross_os_suite_filter=windows/packaged-upgrade или другой фильтр ОС/набора. Сбои проверок выпуска QA блокируют обычную проверку выпуска, включая обязательное выявление расхождений динамических инструментов OpenClaw на стандартном уровне. Альфа-запуски Tideclaw всё ещё могут считать рекомендательными ветки проверки выпуска, не связанные с безопасностью пакета. При release_profile=beta наборы Run repo/live E2E validation с реальными провайдерами являются рекомендательными (предупреждениями, а не блокирующими ошибками); в стабильном и полном профилях они остаются блокирующими. Когда live_suite_filter явно запрашивает контролируемую реальную ветку QA, например Discord, WhatsApp или Slack, должна быть включена соответствующая переменная репозитория OPENCLAW_RELEASE_QA_*_LIVE_CI_ENABLED; иначе сбор входных данных завершится с ошибкой, а не молча пропустит ветку.
Vitest
Блок Vitest — это запускаемый вручную дочерний рабочий процесс CI. Ручной CI намеренно обходит ограничение областью изменений и принудительно запускает обычный граф тестов для кандидата на выпуск: сегменты Linux Node, сегменты встроенных плагинов, сегменты контрактов плагинов и каналов, совместимость с Node 22, check-*, check-additional-*, дымовые проверки собранных артефактов, проверки документации, Skills на Python, Windows, macOS и интернационализацию Control UI. Android включается, когда комплексный процесс Full Release Validation запускает блок, поскольку он передаёт include_android=true; для автономного ручного CI требуется include_android=true, чтобы обеспечить покрытие Android.
Используйте этот блок, чтобы ответить на вопрос: «Прошло ли дерево исходного кода полный обычный набор тестов?» Это не то же самое, что проверка продукта по пути выпуска. Сохраняйте следующие свидетельства:
- сводку
Full Release Validationс URL запущенного процессаCI - успешный запуск
CIна точном целевом SHA - названия завершившихся с ошибкой или медленных сегментов из заданий CI при исследовании регрессий
- артефакты временных показателей Vitest, например
.artifacts/vitest-shard-timings.json, когда требуется анализ производительности запуска
Запускайте ручной CI напрямую, только когда выпуску нужен детерминированный обычный CI, но не нужны блоки Docker, QA Lab, реальных сред, разных ОС или пакетов. Используйте первую команду для прямого CI без Android. Добавьте include_android=true, если прямой CI кандидата на выпуск должен охватывать Android:
gh workflow run ci.yml --ref main -f target_ref=release/YYYY.M.PATCHgh workflow run ci.yml --ref main -f target_ref=release/YYYY.M.PATCH -f include_android=trueDocker
Блок Docker находится в OpenClaw Release Checks–openclaw-live-and-e2e-checks-reusable.yml, а также в рабочем процессе install-smoke режима выпуска. Он проверяет кандидата на выпуск в пакетированных средах Docker, а не только тестами на уровне исходного кода.
Покрытие Docker для выпуска включает:
- полную дымовую проверку установки с включённой медленной дымовой проверкой глобальной установки Bun
- подготовку и повторное использование по целевому SHA дымового образа корневого Dockerfile, при этом задания QR, root/gateway и installer/Bun выполняются как отдельные сегменты дымовой проверки установки
- ветки E2E репозитория
- фрагменты Docker для пути выпуска:
core,package-update-openai,package-update-anthropic,package-update-core,plugins-runtime-plugins,plugins-runtime-services, сplugins-runtime-install-aпоplugins-runtime-install-hиopenwebui - покрытие OpenWebUI на выделенном исполнителе с большим диском, когда оно запрошено
- разделённые ветки установки и удаления встроенных плагинов с
bundled-plugin-install-uninstall-0поbundled-plugin-install-uninstall-23 - наборы с реальными провайдерами/E2E и покрытие реальных моделей Docker, когда проверки выпуска включают реальные наборы
Перед повторным запуском используйте артефакты Docker. Планировщик пути выпуска загружает .artifacts/docker-tests/ с журналами веток, summary.json, failures.json, временными показателями этапов, JSON плана планировщика и командами повторного запуска. Для точечного восстановления используйте docker_lanes=<lane[,lane]> в повторно используемом рабочем процессе с реальными средами/E2E вместо повторного запуска всех фрагментов выпуска. Сгенерированные команды повторного запуска включают предыдущие package_artifact_run_id и входные данные подготовленных образов Docker, когда они доступны, поэтому завершившаяся с ошибкой ветка может повторно использовать тот же tar-архив и образы GHCR.
QA Lab
Блок QA Lab также входит в OpenClaw Release Checks. Это шлюз выпуска для агентного поведения и уровня каналов, отдельный от Vitest и механизмов пакетов Docker.
Покрытие QA Lab для выпуска включает:
- ветку проверки соответствия на имитациях, сравнивающую ветку кандидата OpenAI с базовой линией
anthropic/claude-opus-4-8с помощью пакета агентной проверки соответствия - быстрый профиль QA для реальной Matrix, использующий среду
qa-live-shared - ветку QA для реального Telegram, использующую аренду учётных данных Convex CI
pnpm qa:otel:smoke,pnpm qa:otel:collector-smoke,pnpm qa:prometheus:smokeилиpnpm qa:observability:smoke, когда телеметрии выпуска требуется явное локальное подтверждение
Используйте этот блок, чтобы ответить на вопрос: «Правильно ли выпуск ведёт себя в сценариях QA и реальных потоках каналов?» При утверждении выпуска сохраняйте URL артефактов для веток проверки соответствия, Matrix и Telegram. Полное покрытие Matrix остаётся доступным в виде ручного сегментированного запуска QA Lab, а не стандартной критической для выпуска ветки.
Пакет
Блок пакета — это шлюз устанавливаемого продукта. Он основан на Package Acceptance и преобразователе scripts/resolve-openclaw-package-candidate.mjs. Преобразователь нормализует кандидата в tar-архив package-under-test, используемый Docker E2E, проверяет состав пакета, записывает версию пакета и SHA-256 и хранит ссылку инфраструктуры рабочего процесса отдельно от ссылки на исходный код пакета.
Поддерживаемые источники кандидатов:
source=npm:openclaw@beta,openclaw@latestили точная версия выпуска OpenClawsource=ref: упаковать доверенную ветку, тег или полный SHA коммитаpackage_refс выбранной инфраструктуройworkflow_refsource=url: скачать общедоступный HTTPS-ресурс.tgzс обязательнымpackage_sha256; учётные данные в URL, нестандартные порты HTTPS, частные, внутренние или служебные имена хостов либо разрешённые адреса и небезопасные перенаправления отклоняютсяsource=trusted-url: скачать HTTPS-ресурс.tgzс обязательнымиpackage_sha256иtrusted_source_idиз именованной политики в.github/package-trusted-sources.json; используйте это для корпоративных зеркал или частных репозиториев пакетов, принадлежащих сопровождающим, вместо добавления обхода частной сети на уровне входных данных вsource=urlsource=artifact: повторно использовать.tgz, загруженный другим запуском GitHub Actions
OpenClaw Release Checks запускает Package Acceptance с source=artifact, подготовленным артефактом пакета выпуска, suite_profile=custom, docker_lanes=doctor-switch update-channel-switch skill-install update-corrupt-plugin upgrade-survivor published-upgrade-survivor root-managed-vps-upgrade update-restart-auth plugins-offline plugin-update plugin-binding-command-escape, telegram_mode=mock-openai. Package Acceptance выполняет для одного и того же разрешённого tar-архива миграцию, обновление, обновление VPS под управлением root, перезапуск после обновления с настроенной аутентификацией, установку опубликованного навыка ClawHub, очистку устаревших зависимостей плагинов, автономные фикстуры плагинов, обновление плагинов, усиление экранирования привязки команд плагинов и QA пакета Telegram. Блокирующие проверки выпуска используют стандартную базовую линию последнего опубликованного пакета; бета-профиль с run_release_soak=true, release_profile=stable или release_profile=full расширяет проверку сохранения работоспособности после обновления опубликованных версий до last-stable-4 и закреплённых базовых линий 2026.4.23, 2026.5.2 и 2026.4.15 со сценариями reported-issues. Используйте Package Acceptance с source=npm для уже выпущенного кандидата, source=ref для локального tar-архива npm на основе SHA перед публикацией, source=trusted-url для корпоративного или частного зеркала, принадлежащего сопровождающим, либо source=artifact для подготовленного tar-архива, загруженного другим запуском GitHub Actions.
Это встроенная в GitHub замена большей части покрытия пакетов и обновлений, для которого ранее требовался Parallels. Проверки выпуска на разных ОС по-прежнему важны для специфичных для ОС первоначальной настройки, установщика и поведения платформы, но при проверке продукта, связанной с пакетами и обновлениями, следует предпочитать Package Acceptance.
Канонический контрольный список для проверки обновлений и плагинов приведён в разделе Проверка обновлений и плагинов. Используйте его при выборе локальной ветки, ветки Docker, Package Acceptance или проверки выпуска, подтверждающей изменение установки или обновления плагина, очистки с помощью doctor либо миграции опубликованного пакета. Исчерпывающая миграция обновлений из каждого стабильного пакета 2026.4.23+ выполняется отдельным ручным рабочим процессом Update Migration и не входит в Full Release CI.
Послабления для устаревших версий Package Acceptance намеренно ограничены по времени. Пакеты вплоть до 2026.4.25 могут использовать путь совместимости для пробелов в метаданных, уже опубликованных в npm: отсутствующих в tar-архиве записей состава частного QA, отсутствующего gateway install --wrapper, отсутствующих файлов исправлений в полученной из tar-архива фикстуре git, отсутствующего сохранённого update.channel, устаревших расположений записей установки плагинов, отсутствующего сохранения записей установки из каталога и миграции метаданных конфигурации во время plugins update. Опубликованный пакет 2026.4.26 может выдавать предупреждения о файлах отметок метаданных локальной сборки, которые уже были выпущены. Более поздние пакеты должны соответствовать современным контрактам пакетов; те же пробелы приводят к сбою проверки выпуска.
Используйте более широкие профили Package Acceptance, когда вопрос выпуска касается фактически устанавливаемого пакета:
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Распространённые профили пакетов:
smoke: быстрые сценарии установки пакета/канала/агента, настройки сети Gateway и перезагрузки конфигурацииpackage: контракты установки/обновления/перезапуска/пакета плагина, а также подтверждение установки Skills из ClawHub в рабочей среде; это значение по умолчанию для проверки релизаproduct:packageплюс каналы MCP, очистка cron/субагентов, веб-поиск OpenAI и OpenWebUIfull: части пути релиза Docker с OpenWebUIcustom: точный списокdocker_lanesдля целевых повторных запусков
Для подтверждения Telegram с пакетом-кандидатом включите telegram_mode=mock-openai или telegram_mode=live-frontier в Package Acceptance. Рабочий процесс передаёт разрешённый tarball package-under-test в сценарий Telegram; автономный рабочий процесс Telegram по-прежнему принимает опубликованную спецификацию npm для проверок после публикации.
Автоматизация публикации обычного релиза
Для публикации бета-версии, latest, плагина, GitHub Release и платформы
обычной изменяющей точкой входа служит OpenClaw Release Publish. Ежемесячный
путь .33+ только для npm с расширенной стабильностью не использует этот оркестратор. Обычный
рабочий процесс оркестрирует рабочие процессы доверенной публикации в порядке,
необходимом для релиза:
- Извлеките тег релиза и определите SHA его коммита.
- Убедитесь, что тег достижим из
mainилиrelease/*(либо из альфа-ветки Tideclaw для предварительных альфа-релизов). - Запустите
pnpm plugins:sync:check. - Запустите
Plugin NPM Releaseсpublish_scope=all-publishableиref=<release-sha>. - Запустите
Plugin ClawHub Releaseс той же областью и SHA. - Запустите
OpenClaw NPM Releaseс тегом релиза, dist-тегом npm и сохранённымpreflight_run_idпосле проверки сохранённогоfull_release_validation_run_idи точной попытки запуска. - Для стабильных релизов создайте или обновите релиз GitHub как черновик, запустите
Windows Node Releaseс явно указаннымwindows_node_tagи одобренным для кандидатаwindows_node_installer_digests, затем проверьте канонические ресурсы установщика Windows и контрольных сумм. Также запуститеAndroid Release, чтобы собрать подписанный APK для точного тега вместе с контрольной суммой и сведениями о происхождении. Перед публикацией черновика проверьте оба контракта нативных ресурсов.
Пример публикации бета-версии:
gh workflow run openclaw-release-publish.yml \ --ref main \ -f tag=vYYYY.M.PATCH-beta.N \ -f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \ -f full_release_validation_run_id=<successful-full-release-validation-run-id> \ -f full_release_validation_run_attempt=<successful-full-release-validation-run-attempt> \ -f npm_dist_tag=betaПубликация стабильной версии в dist-тег beta по умолчанию:
gh workflow run openclaw-release-publish.yml \ --ref main \ -f tag=vYYYY.M.PATCH \ -f windows_node_tag=vX.Y.Z \ -f windows_node_installer_digests='{"OpenClawCompanion-Setup-x64.exe":"sha256:<approved-x64-sha256>","OpenClawCompanion-Setup-arm64.exe":"sha256:<approved-arm64-sha256>"}' \ -f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \ -f full_release_validation_run_id=<successful-full-release-validation-run-id> \ -f full_release_validation_run_attempt=<successful-full-release-validation-run-attempt> \ -f npm_dist_tag=betaПрямое продвижение стабильной версии в latest задаётся явно:
gh workflow run openclaw-release-publish.yml \ --ref main \ -f tag=vYYYY.M.PATCH \ -f windows_node_tag=vX.Y.Z \ -f windows_node_installer_digests='{"OpenClawCompanion-Setup-x64.exe":"sha256:<approved-x64-sha256>","OpenClawCompanion-Setup-arm64.exe":"sha256:<approved-arm64-sha256>"}' \ -f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \ -f full_release_validation_run_id=<successful-full-release-validation-run-id> \ -f full_release_validation_run_attempt=<successful-full-release-validation-run-attempt> \ -f npm_dist_tag=latestИспользуйте низкоуровневые рабочие процессы Plugin NPM Release и Plugin ClawHub Release только для целевого исправления или повторной публикации. OpenClaw Release Publish отклоняет plugin_publish_scope=selected, когда publish_openclaw_npm=true, чтобы основной пакет нельзя было выпустить без всех публикуемых официальных плагинов, включая @openclaw/diffs-language-pack. Для исправления выбранного плагина задайте publish_openclaw_npm=false вместе с plugin_publish_scope=selected и plugins=@openclaw/name либо запустите дочерний рабочий процесс напрямую.
Первичная публикация для начальной настройки ClawHub является исключением: запустите Plugin ClawHub New
из доверенной main и передайте полный SHA целевого релиза через ref.
Никогда не запускайте сам рабочий процесс начальной настройки из тега или ветки релиза:
gh workflow run plugin-clawhub-new.yml \ --ref main \ -f plugins=@openclaw/name \ -f ref=<full-40-character-release-sha> \ -f pretag_validation=true \ -f dry_run=trueПроверка до создания тега требует dry_run=true, отклоняет входные данные
с тегом релиза и родительским запуском и принимает только точную цель, достижимую из main или release/*.
Она не загружает учётные данные ClawHub, не публикует байты пакета и не изменяет
конфигурацию доверенной публикации. Рабочий процесс всё же определяет актуальный план реестра,
извлекает и упаковывает цель только в задании без секретов, развёртывает
зафиксированный набор инструментов ClawHub и проверяет неизменяемый артефакт, а также
слаг/идентичность пакета до создания тега релиза. Одобряйте окружение
clawhub-plugin-bootstrap только после завершения заданий упаковки без секретов;
это защищённое задание проверки не содержит учётных данных или команд, вносящих изменения.
Одобренный пробный или реальный запуск начальной настройки после создания тега должен включать точный
тег релиза, а также идентификатор запуска, попытку и ветку родительского OpenClaw Release Publish.
Родитель подтверждает SHA собственного рабочего процесса и отдельный точный доверенный
SHA main для Plugin ClawHub New; дочерний запуск и каждое одобрение защищённого
окружения должны соответствовать этому одобренному SHA дочернего процесса. Тег релиза
повторно проверяется перед каждой попыткой публикации и изменением конфигурации доверенной публикации.
Задание упаковки
загружает один неизменяемый артефакт, имя которого, идентификатор/дайджест артефакта Actions,
запуск/попытка производителя, целевой SHA и SHA-256/размер tarball каждого пакета
передаются в задания проверки и защищённые задания. Защищённое задание извлекает только доверенный
набор инструментов main, проверяет кортеж артефакта через GitHub API, загружает
его по точному идентификатору артефакта, повторно вычисляет хеш каждого tarball и проверяет локальные пути TAR и
идентичность пакета по правилам канонизации USTAR зафиксированной версии CLI. Затем каждый
кандидат проходит пробную публикацию через зафиксированную версию CLI, которая завершается до
обращения к реестру или аутентификации. Предварительный фильтр задания с учётными данными ограничивает сжатые ClawPack
до 120 MiB, общий объём файловых данных — до 50 MiB, развёрнутые данные TAR — до 64 MiB, а
число записей TAR — до 10,000. Исправление доверенной публикации для существующего пакета
по-прежнему выполняет только настройку, но всё равно упаковывает цель и требует совпадения запрошенного тега,
точных байтов реестра и метаданных перед изменением конфигурации доверенной публикации.
Проверка после публикации загружает артефакт ClawHub и требует совпадения SHA-256 и размера.
При восстановлении через повторный запуск неудачных заданий можно повторно использовать артефакт пакета из предыдущей
попытки, только если соответствующее задание производителя успешно завершилось.
Итоговые подтверждающие данные также связывают зафиксированную версию ClawHub, SHA-256 файла блокировки
и целостность npm. При несовпадении требуется новая версия пакета.
Входные данные рабочего процесса NPM
OpenClaw NPM Release принимает следующие входные данные, управляемые оператором:
tag: обязательный тег релиза, напримерv2026.4.2,v2026.4.2-1,v2026.4.2-beta.1илиv2026.4.2-alpha.1; когдаpreflight_only=true, это также может быть текущий полный 40-символьный SHA коммита ветки рабочего процесса для предварительной проверки без публикацииpreflight_only:trueтолько для проверки/сборки/упаковки,falseдля реального пути публикацииpreflight_run_id: идентификатор существующего успешного предварительного запуска, обязательный для реального пути публикации, чтобы рабочий процесс повторно использовал подготовленный tarball вместо его пересборкиfull_release_validation_run_id: идентификатор успешного запускаFull Release Validationдля этого тега/SHA, обязательный для реальной публикации. Публикация бета-версии может продолжиться только на основании предварительного запуска с предупреждением, но продвижение стабильной версии/latestпо-прежнему требует его.full_release_validation_run_attempt: точный положительный номер попытки запуска, связанный сfull_release_validation_run_id; обязателен при каждом указании идентификатора запуска, чтобы повторные запуски не могли изменить подтверждающие данные авторизации во время публикации.release_publish_run_id: идентификатор одобренного запускаOpenClaw Release Publish; обязателен, когда этот рабочий процесс запускается соответствующим родителем (вызовы реальной публикации от имени бота)plugin_npm_run_id: идентификатор успешного запускаPlugin NPM Releaseдля точной вершины; обязателен для реальной публикации основного пакетаextended-stablenpm_dist_tag: целевой тег npm для пути публикации; принимаетalpha,beta,latestилиextended-stable, по умолчанию —beta. Финальный патч33и более поздние должны использоватьextended-stable; по умолчаниюextended-stableотклоняет более ранние патчи и всегда отклоняет нефинальные теги.bypass_extended_stable_guard: логическое значение только для тестирования, по умолчаниюfalse; приnpm_dist_tag=extended-stableобходит проверку пригодности для ежемесячного расширенно-стабильного выпуска, сохраняя проверки идентичности релиза, артефакта, одобрения и обратного чтения.
Plugin NPM Release принимает npm_dist_tag=default для существующего поведения релиза
или npm_dist_tag=extended-stable для защищённого ежемесячного пути. Вариант
с расширенной стабильностью требует publish_scope=all-publishable, пустого входного значения
plugins, финального патча версии не ниже 33 и канонической
ветки extended-stable/YYYY.M.33 на её точной вершине. Он никогда не перемещает
latest или beta плагинов. Новые версии пакетов получают extended-stable атомарно
через доверенную публикацию OIDC (npm publish --tag extended-stable); этот
исходный рабочий процесс не использует npm dist-tag add с аутентификацией по токену. Повторные попытки
пропускают точные версии, уже имеющиеся в npm, а затем завершаются отказом, если полное
обратное чтение не подтверждает сходимость каждого точного пакета и тега extended-stable.
OpenClaw Release Publish принимает следующие входные данные, управляемые оператором:
tag: обязательный тег релиза; он уже должен существоватьpreflight_run_id: идентификатор успешного предварительного запускаOpenClaw NPM Release; обязателен, когдаpublish_openclaw_npm=trueилиplugin_publish_scope=all-publishablefull_release_validation_run_id: идентификатор успешного запускаFull Release Validation; обязателен, когдаpublish_openclaw_npm=trueилиplugin_publish_scope=all-publishablefull_release_validation_run_attempt: точный положительный номер попытки, связанный сfull_release_validation_run_id; обязателен при каждом указании идентификатора запускаwindows_node_tag: точный тег стабильного релизаopenclaw/openclaw-windows-node; обязателен для публикации стабильной версии OpenClawwindows_node_installer_digests: одобренная для кандидата компактная карта JSON, сопоставляющая текущие имена установщиков Windows с их зафиксированными дайджестамиsha256:; обязательна для публикации стабильной версии OpenClawnpm_telegram_run_id: необязательный идентификатор успешного запускаNPM Telegram Beta E2Eдля включения в итоговые подтверждающие данные релизаnpm_dist_tag: целевой тег npm для пакета OpenClaw, один изalpha,betaилиlatestplugin_publish_scope: по умолчаниюall-publishable; используйтеselectedтолько для целевого исправления исключительно плагинов вместе сpublish_openclaw_npm=falseplugins: разделённые запятыми имена пакетов@openclaw/*, когдаplugin_publish_scope=selectedpublish_openclaw_npm: по умолчаниюtrue; задавайтеfalseтолько при использовании рабочего процесса как оркестратора исправления исключительно плагиновrelease_profile: профиль покрытия релиза, используемый для сводок подтверждающих данных релиза; по умолчаниюfrom-validation, при котором он считывается из манифеста проверки, либо переопределите его значениемbeta,stableилиfullwait_for_clawhub: по умолчаниюfalse, чтобы доступность npm не блокировалась сопутствующим процессом ClawHub; задавайтеtrueтолько тогда, когда завершение рабочего процесса должно включать завершение ClawHub
OpenClaw Release Checks принимает следующие входные данные, управляемые оператором:
ref: ветка, тег или полный SHA коммита для проверки. Для проверок с использованием секретов разрешённый коммит должен быть доступен из ветки OpenClaw или тега выпуска.run_release_soak: включает исчерпывающие проверки в реальной среде/E2E, проверку пути выпуска Docker и длительное тестирование сохранения работоспособности при обновлении со всех предыдущих версий для проверок бета-выпуска. Этот режим принудительно включается параметрамиrelease_profile=stableиrelease_profile=full.
Правила:
- Обычные финальные и корректирующие версии ниже патча
33можно публиковать либо вbeta, либо вlatest. Финальные версии с патчем33или выше должны публиковаться вextended-stable, а версии с суффиксом исправления на этой границе отклоняются. - Теги предварительных бета-версий можно публиковать только в
beta; теги предварительных альфа-версий — только вalpha - Для
OpenClaw NPM Releaseполный SHA коммита разрешён только в том случае, еслиpreflight_only=true OpenClaw Release ChecksиFull Release Validationвсегда используются только для проверки- Реальный путь публикации должен использовать тот же
npm_dist_tag, который применялся при предварительной проверке; рабочий процесс проверяет эти метаданные перед продолжением публикации
Последовательность обычного бета-/последнего стабильного выпуска
Эта устаревшая последовательность предназначена для обычного оркестрируемого выпуска, который также охватывает плагины, GitHub Release, Windows и работу для других платформ. Это не ежемесячный путь расширенного стабильного выпуска .33+ только в npm, описанный в начале этой страницы.
При подготовке обычного оркестрируемого стабильного выпуска:
- Запустите
OpenClaw NPM Releaseсpreflight_only=true. Пока тег ещё не существует, для пробного запуска рабочего процесса предварительной проверки без публикации можно использовать полный SHA текущего коммита ветки рабочего процесса. - Выберите
npm_dist_tag=betaдля обычного процесса, начинающегося с бета-версии, илиlatest, только если намеренно требуется прямая публикация стабильной версии. - Запустите
Full Release Validationдля ветки выпуска, тега выпуска или полного SHA коммита, если требуется выполнить обычный CI и в рамках одного вручную запускаемого рабочего процесса проверить кэш промптов в реальной среде, Docker, QA Lab, Matrix и Telegram. Если намеренно требуется только детерминированный граф обычных тестов, вместо этого запустите вручную рабочий процессCIдля ссылки выпуска. - Выберите точный тег выпуска
openclaw/openclaw-windows-node, не являющегося предварительной версией, подписанные установщики x64 и ARM64 которого должны быть выпущены. Сохраните его какwindows_node_tag, а проверенную карту их дайджестов — какwindows_node_installer_digests. Вспомогательный инструмент кандидата на выпуск записывает оба значения и включает их в создаваемую им команду публикации. - Сохраните успешные
preflight_run_id,full_release_validation_run_idи точныйfull_release_validation_run_attempt. - Запустите
OpenClaw Release Publishиз доверенногоmainс тем жеtag, тем жеnpm_dist_tag, выбраннымwindows_node_tag, сохранённым для негоwindows_node_installer_digests, сохранённымpreflight_run_id,full_release_validation_run_idиfull_release_validation_run_attempt. Сначала он публикует вынесенные плагины в npm и ClawHub, а затем продвигает пакет OpenClaw в npm. - Если выпуск был опубликован в
beta, используйте рабочий процессopenclaw/releases/.github/workflows/openclaw-npm-dist-tags.yml, чтобы продвинуть эту стабильную версию изbetaвlatest. - Если выпуск намеренно был опубликован непосредственно в
latestиbetaдолжен сразу указывать на ту же стабильную сборку, с помощью того же рабочего процесса выпуска направьте оба dist-тега на стабильную версию либо дождитесь, пока запланированная самовосстанавливающаяся синхронизация позднее переместитbeta.
Изменение dist-тега выполняется в репозитории журнала выпусков, поскольку для него по-прежнему требуется NPM_TOKEN, тогда как исходный репозиторий использует публикацию только через OIDC. Благодаря этому и путь прямой публикации, и путь продвижения после бета-версии остаются документированными и видимыми оператору.
Если сопровождающему потребуется вернуться к локальной аутентификации npm, выполняйте любые команды CLI 1Password (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.