Release and CI
Zasady wydań
OpenClaw obecnie udostępnia trzy kanały aktualizacji widoczne dla użytkownika:
- stable: istniejący promowany kanał wydań, który nadal rozwiązuje się przez
npm
latest, dopóki nie zostanie ukończony osobny kamień milowy CLI/kanału - beta: tagi wersji wstępnych publikowane do npm
beta - dev: ruchoma głowica
main
Osobno operatorzy wydań mogą publikować pakiet rdzenia z zakończonego poprzedniego
miesiąca do npm extended-stable, zaczynając od poprawki 33. Regularna
linia finalna bieżącego miesiąca nadal używa npm latest; ten operatorski
podział publikacji sam w sobie nie zmienia rozwiązywania kanału aktualizacji CLI.
Nazewnictwo wersji
- Miesięczna wersja npm extended-stable:
YYYY.M.PATCH, zPATCH >= 33- Tag Git:
vYYYY.M.PATCH
- Tag Git:
- Dzienna/regularna wersja finalna:
YYYY.M.PATCH, zPATCH < 33- Tag Git:
vYYYY.M.PATCH
- Tag Git:
- Regularna wersja poprawki awaryjnej:
YYYY.M.PATCH-N- Tag Git:
vYYYY.M.PATCH-N
- Tag Git:
- Wersja wstępna beta:
YYYY.M.PATCH-beta.N- Tag Git:
vYYYY.M.PATCH-beta.N
- Tag Git:
- Nie dopełniaj miesiąca ani poprawki zerami
- Począwszy od aktualizacji procesu wydań z czerwca 2026 r., trzeci składnik jest sekwencyjnym miesięcznym numerem pociągu wydań, a nie dniem kalendarzowym. Wydania stable i beta wyznaczają bieżący pociąg; tagi wyłącznie alpha nie zużywają ani nie przesuwają numeru poprawki beta/stable. Tagi i wersje npm sprzed aktualizacji zachowują istniejące nazwy i pozostają prawidłowe; automatyzacja wydań nadal porównuje je według roku, miesiąca, poprawki, kanału oraz numeru wersji wstępnej lub poprawki.
- Kompilacje alpha/nightly używają następnego niewydanego pociągu poprawek i
zwiększają tylko
alpha.Ndla kolejnych kompilacji. Gdy dana poprawka ma już wersję beta, nowe kompilacje alpha przechodzą do następnej poprawki. Ignoruj starsze tagi wyłącznie alpha z wyższymi numerami poprawek przy wyborze pociągu beta lub stable. - Wersje npm są niezmienne. Jeśli tag beta został już opublikowany, nie usuwaj,
nie publikuj ponownie ani nie używaj go ponownie; utwórz następny numer beta
albo następną miesięczną poprawkę. Ponieważ
2026.6.5-beta.1zostało już opublikowane podczas przejścia, pociągi wydań z czerwca 2026 r. muszą używać poprawki5lub wyższej. Nie publikuj nowych pociągów stable ani beta z czerwca 2026 r. jako2026.6.2,2026.6.3ani2026.6.4. - Po regularnej wersji finalnej
2026.6.5następnym nowym pociągiem beta jest2026.6.6-beta.1, nawet jeśli istnieją już automatyczne tagi wyłącznie alpha z wyższymi numerami poprawek. latestnadal podąża za bieżącą regularną/dzienną linią npmbetaoznacza bieżący cel instalacji betaextended-stableoznacza wspierany pakiet npm z poprzedniego miesiąca, zaczynając od poprawki33; poprawka34i kolejne są wydaniami utrzymaniowymi w tej miesięcznej linii- Dedykowana miesięczna ścieżka extended-stable publikuje tylko pakiet rdzenia npm. Nie publikuje Pluginów, artefaktów macOS ani Windows, GitHub Release, tagów dystrybucyjnych prywatnego repozytorium, obrazów Docker, artefaktów mobilnych ani pobrań ze strony internetowej.
Rytm wydań
- Wydania przechodzą najpierw przez beta
- Stable następuje dopiero po zweryfikowaniu najnowszej wersji beta
- Opiekunowie zwykle tworzą wydania z gałęzi
release/YYYY.M.PATCHutworzonej z bieżącegomain, aby walidacja wydań i poprawki nie blokowały nowego rozwoju namain - Jeśli tag beta został wypchnięty lub opublikowany i wymaga poprawki,
opiekunowie tworzą następny tag
-beta.Nzamiast usuwać lub odtwarzać stary tag beta - Szczegółowa procedura wydań, zatwierdzenia, poświadczenia i notatki dotyczące odzyskiwania są dostępne tylko dla opiekunów
Miesięczna publikacja extended-stable tylko do npm
To dedykowany wyjątek od regularnej procedury wydania poniżej. Dla zakończonego
miesiąca YYYY.M utwórz extended-stable/YYYY.M.33; publikuj vYYYY.M.33 i
późniejsze poprawki utrzymaniowe z tej samej gałęzi. Tag wydania, czubek gałęzi,
checkout, wersja pakietu, wstępna kontrola npm i uruchomienie pełnej walidacji
wydania muszą wskazywać ten sam commit. Chroniony main musi już zawierać
wersję finalną ściśle późniejszego miesiąca kalendarzowego poniżej poprawki 33;
poprawki utrzymaniowe pozostają kwalifikowalne po tym, jak main przesunie się
o więcej niż jeden miesiąc.
Uruchom wstępną kontrolę npm i pełną walidację wydania z dokładnej gałęzi extended-stable, a następnie zapisz oba identyfikatory uruchomień:
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 to istniejący profil głębokości walidacji; jest
oddzielny od tagu dystrybucyjnego npm extended-stable i celowo pozostaje
niezmieniony.
Po powodzeniu obu uruchomień i przygotowaniu środowiska wydania npm wypromuj
dokładny tarball ze wstępnej kontroli. Poprawka P musi wynosić 33 lub więcej:
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>Dla forka albo nieprodukcyjnej próby, która celowo nie może spełnić miesięcznej
polityki .33 lub miesiąca chronionego main, dodaj
-f bypass_extended_stable_guard=true do dyspozycji wstępnej kontroli npm i
publikacji. Wartość domyślna to false. Obejście jest akceptowane tylko z
npm_dist_tag=extended-stable i jest zapisywane w podsumowaniu workflow. Nie
omija kanonicznego odwołania workflow extended-stable/YYYY.M.33, równości
czubka gałęzi/tagu/checkoutu, składni tagu finalnego, równości wersji pakietu i
tagu, tożsamości wskazanego uruchomienia i manifestu, pochodzenia tarballa,
zatwierdzenia środowiska, odczytu zwrotnego z rejestru ani dowodów naprawy
selektora.
Workflow publikacji weryfikuje tożsamości wskazanych uruchomień, skrót przygotowanego tarballa i oba selektory rejestru npm. Niezależnie potwierdź wynik po powodzeniu workflow:
npm view openclaw@YYYY.M.P version --userconfig "$(mktemp)"npm view openclaw@extended-stable version --userconfig "$(mktemp)"Oba polecenia muszą zwrócić YYYY.M.P. Jeśli publikacja się powiedzie, ale
odczyt zwrotny selektora się nie powiedzie, nie publikuj ponownie niezmiennej
wersji pakietu. Użyj pojedynczego polecenia naprawy
npm dist-tag add openclaw@YYYY.M.P extended-stable wypisanego w zawsze
uruchamianym podsumowaniu nieudanego workflow, a następnie powtórz oba
niezależne odczyty zwrotne. Wycofanie do poprzedniego selektora jest osobną
decyzją operatora, a nie ścieżką naprawy odczytu zwrotnego.
Regularna lista kontrolna poniżej nadal odpowiada za beta, latest, GitHub
Release, Pluginy, macOS, Windows i publikacje na innych platformach. Nie
uruchamiaj tych kroków dla tej ścieżki extended-stable tylko do npm.
Regularna lista kontrolna operatora wydania
Ta lista kontrolna jest publicznym kształtem przepływu wydania. Prywatne poświadczenia, podpisywanie, notaryzacja, odzyskiwanie tagów dystrybucyjnych i szczegóły awaryjnego wycofania pozostają w podręczniku wydań dostępnym tylko dla opiekunów.
- Zacznij od bieżącego
main: pobierz najnowsze zmiany, potwierdź, że commit docelowy został wypchnięty, i potwierdź, że bieżące CImainjest wystarczająco zielone, aby utworzyć z niego gałąź. - Wygeneruj górną sekcję
CHANGELOG.mdze scalonych PR-ów i wszystkich bezpośrednich commitów od ostatniego osiągalnego tagu wydania. Utrzymuj wpisy jako widoczne dla użytkownika, deduplikuj nakładające się wpisy PR/bezpośredni commit, zatwierdź przepisanie, wypchnij je i wykonaj jeszcze raz rebase/pull przed utworzeniem gałęzi. - Przejrzyj rekordy zgodności wydania w
src/plugins/compat/registry.tsisrc/commands/doctor/shared/deprecation-compat.ts. Usuwaj wygasłą zgodność tylko wtedy, gdy ścieżka aktualizacji pozostaje pokryta, albo zapisz, dlaczego jest celowo utrzymywana. - Utwórz
release/YYYY.M.PATCHz bieżącegomain; nie wykonuj zwykłych prac nad wydaniem bezpośrednio namain. - Podbij każdą wymaganą lokalizację wersji dla zamierzonego tagu, a następnie uruchom
pnpm release:prep. Odświeża to wersje pluginów, inwentarz pluginów, schemat konfiguracji, metadane konfiguracji dołączonych kanałów, bazę dokumentacji konfiguracji, eksporty SDK pluginów oraz bazę API SDK pluginów we właściwej kolejności. Zatwierdź wszelkie wygenerowane odchylenia przed tagowaniem. Następnie uruchom lokalny deterministyczny preflight:pnpm check:test-types,pnpm check:architecture,pnpm build && pnpm ui:buildorazpnpm release:check. - Uruchom
OpenClaw NPM Releasezpreflight_only=true. Zanim tag istnieje, pełny 40-znakowy SHA gałęzi wydania jest dozwolony do preflight wyłącznie walidacyjnego. Preflight generuje dowody wydania zależności dla dokładnego wycheckoutowanego grafu zależności i zapisuje je w artefakcie npm preflight. Zapisz udanypreflight_run_id. - Uruchom wszystkie testy przedwydaniowe przez
Full Release Validationdla gałęzi wydania, tagu lub pełnego SHA commitu. To jest jedyny ręczny punkt wejścia dla czterech dużych pól testowych wydania: Vitest, Docker, QA Lab i Package. - Jeśli walidacja się nie powiedzie, napraw na gałęzi wydania i uruchom ponownie najmniejszy nieudany plik, ścieżkę, zadanie workflow, profil pakietu, dostawcę lub allowlist modelu, który dowodzi poprawki. Uruchom ponownie pełny parasol tylko wtedy, gdy zmieniona powierzchnia sprawia, że wcześniejsze dowody są nieaktualne.
- Dla otagowanego kandydata beta uruchom
pnpm release:candidate -- --tag vYYYY.M.PATCH-beta.Nz pasującej gałęzirelease/YYYY.M.PATCH. Dla stabilnego wydania przekaż także wymagane źródłowe wydanie Windows:pnpm release:candidate -- --tag vYYYY.M.PATCH --windows-node-tag vX.Y.Z. Helper uruchamia lokalne kontrole wygenerowanego wydania, wysyła lub weryfikuje pełną walidację wydania i dowody npm preflight, uruchamia dowód Parallels świeżej instalacji/aktualizacji wobec dokładnie przygotowanego tarballa oraz dowód pakietu Telegram, zapisuje plany pluginów npm i ClawHub oraz wypisuje dokładne polecenieOpenClaw Release Publishdopiero po zazielenieniu pakietu dowodów.OpenClaw Release Publishwysyła wybrane albo wszystkie możliwe do opublikowania pakiety pluginów do npm i ten sam zestaw równolegle do ClawHub, a następnie promuje przygotowany artefakt OpenClaw npm preflight z pasującym dist-tag, gdy tylko publikacja pluginów npm się powiedzie. Po powodzeniu potomnego publikowania OpenClaw npm tworzy lub aktualizuje pasującą stronę wydania/przedwydania GitHub z kompletnej pasującej sekcjiCHANGELOG.md. Stabilne wydania opublikowane do npmlateststają się najnowszym wydaniem GitHub; stabilne wydania utrzymaniowe pozostawione na npmbetasą tworzone z GitHublatest=false. Workflow przesyła także dowody zależności preflight, manifest pełnej walidacji oraz dowody weryfikacji rejestru po publikacji do wydania GitHub na potrzeby obsługi incydentów po wydaniu. Workflow publikacji natychmiast wypisuje identyfikatory przebiegów potomnych, automatycznie zatwierdza bramki środowiska wydania, które token workflow może zatwierdzić, podsumowuje nieudane zadania potomne z końcówkami logów, zamyka stronę wydania GitHub i dowody zależności, gdy tylko publikacja OpenClaw npm się powiedzie, czeka na ClawHub, gdy OpenClaw npm jest publikowany, następnie uruchamiapnpm release:verify-betai przesyła dowody po publikacji dla wydania GitHub, pakietu npm, wybranych pakietów pluginów npm, wybranych pakietów ClawHub, identyfikatorów przebiegów workflow potomnych oraz opcjonalnego identyfikatora przebiegu NPM Telegram. Ścieżka ClawHub ponawia przejściowe awarie instalacji zależności CLI, publikuje pluginy z udanym podglądem nawet wtedy, gdy jedna komórka podglądu zawodzi przejściowo, i kończy weryfikacją rejestru dla każdej oczekiwanej wersji pluginu, aby częściowe publikacje pozostały widoczne i możliwe do ponowienia. Następnie uruchom akceptację pakietu po publikacji wobec opublikowanego pakietuopenclaw@YYYY.M.PATCH-beta.Nalboopenclaw@beta. Jeśli wypchnięte lub opublikowane przedwydanie wymaga poprawki, utwórz następny pasujący numer przedwydania; nie usuwaj ani nie przepisuj starego przedwydania. - Dla stabilnego wydania kontynuuj dopiero po tym, jak zweryfikowana beta lub kandydat wydania ma
wymagane dowody walidacji. Stabilna publikacja npm także przechodzi przez
OpenClaw Release Publish, używając ponownie udanego artefaktu preflight przezpreflight_run_id; gotowość stabilnego wydania macOS wymaga także spakowanych.zip,.dmg,.dSYM.ziporaz zaktualizowanegoappcast.xmlnamain. Workflow publikacji macOS automatycznie publikuje podpisany appcast do publicznegomainpo weryfikacji zasobów wydania; jeśli ochrona gałęzi blokuje bezpośredni push, otwiera lub aktualizuje PR appcast. Gotowość stabilnego Windows Hub wymaga podpisanych zasobówOpenClawCompanion-Setup-x64.exe,OpenClawCompanion-Setup-arm64.exeiOpenClawCompanion-SHA256SUMS.txtw wydaniu OpenClaw GitHub. Przekaż dokładny podpisany tag wydaniaopenclaw/openclaw-windows-nodejakowindows_node_tagoraz zatwierdzoną przez kandydata mapę skrótów instalatorów jakowindows_node_installer_digests;OpenClaw Release Publishutrzymuje szkic wydania, wysyłaWindows Node Releasei weryfikuje wszystkie trzy zasoby przed publikacją. - Po publikacji uruchom weryfikator npm po publikacji, opcjonalny samodzielny
E2E opublikowanego npm Telegram, gdy potrzebujesz dowodu kanału po publikacji,
promocję dist-tag, gdy jest potrzebna, zweryfikuj wygenerowaną stronę wydania GitHub,
uruchom kroki ogłoszenia wydania, a następnie wykonaj Zamknięcie stabilnego
main, zanim uznasz stabilne wydanie za zakończone.
Zamknięcie stabilnego main
Stabilna publikacja nie jest ukończona, dopóki main nie zawiera faktycznie wysłanego
stanu wydania.
- Zacznij od świeżego najnowszego
main. Przeprowadź audytrelease/YYYY.M.PATCHwzględem niego i przenieś naprzód rzeczywiste poprawki, których brakuje namain. Nie scalaj ślepo adapterów zgodności, testów ani walidacji przeznaczonych tylko dla wydania do nowszegomain. - Ustaw
mainna wysłaną stabilną wersję, a nie spekulacyjny następny pociąg wydań. Uruchompnpm release:preppo zmianie wersji głównej, następniepnpm deps:shrinkwrap:generate. - Spraw, aby sekcja
## YYYY.M.PATCHwCHANGELOG.mdnamaindokładnie odpowiadała otagowanej gałęzi wydania. Uwzględnij stabilną aktualizacjęappcast.xml, gdy wydanie mac ją opublikowało. - Nie dodawaj
YYYY.M.PATCH+1, wersji beta ani pustej przyszłej sekcji changeloga domain, dopóki operator wyraźnie nie rozpocznie tego pociągu wydań. - Uruchom
pnpm release:generated:check,pnpm deps:shrinkwrap:checkorazOPENCLAW_TESTBOX=1 pnpm check:changed. Wypchnij, następnie zweryfikuj, żeorigin/mainzawiera wysłaną wersję i changelog, zanim uznasz stabilne wydanie za wykonane. - Utrzymuj zmienne repozytorium
RELEASE_ROLLBACK_DRILL_IDiRELEASE_ROLLBACK_DRILL_DATEjako aktualne po każdym prywatnym ćwiczeniu rollback.OpenClaw Stable Main Closeoutzaczyna od pushamain, który zawiera wysłaną wersję, changelog i appcast po stabilnej publikacji. Odczytuje niezmienne dowody po publikacji, aby powiązać wysłany tag z jego przebiegami Full Release Validation i Publish, następnie weryfikuje stan stabilnego main, wydanie, obowiązkowy stabilny soak oraz blokujące dowody wydajnościowe. Dołącza niezmienny manifest zamknięcia i sumę kontrolną do wydania GitHub. Automatyczny wyzwalacz push pomija stare wydania sprzed niezmiennych dowodów po publikacji; nigdy nie traktuje tego pominięcia jako ukończonego zamknięcia. Kompletne zamknięcie wymaga zarówno zasobów, jak i pasującej sumy kontrolnej. Częściowy manifest odtwarza zapisany SHAmaini ćwiczenie rollback, aby zregenerować identyczne bajty, następnie dołącza brakującą sumę kontrolną; nieprawidłowa para albo suma kontrolna bez manifestu pozostaje blokująca. Przebieg wyzwolony pushem bez zmiennych repozytorium ćwiczenia rollback pomija bez ukończenia zamknięcia; brakujący lub starszy niż 90 dni rekord ćwiczenia nadal blokuje ręczne zamknięcie oparte na dowodach. Prywatne polecenia odzyskiwania pozostają w runbooku tylko dla maintainerów. Używaj ręcznego wysyłania tylko do naprawy lub odtworzenia opartego na dowodach stabilnego zamknięcia. Stary tag korekty awaryjnej może ponownie użyć dowodów pakietu bazowego tylko wtedy, gdy tag korekty wskazuje ten sam commit źródłowy co bazowy stabilny tag. Korekta z innym źródłem musi opublikować i zweryfikować własne dowody pakietu.
Preflight wydania
- Uruchom
pnpm check:test-typesprzed wstępną kontrolą wydania, aby testowy TypeScript pozostawał objęty sprawdzaniem poza szybszą lokalną bramkąpnpm check - Uruchom
pnpm check:architectureprzed wstępną kontrolą wydania, aby szersze kontrole cykli importów i granic architektury były zielone poza szybszą lokalną bramką - Uruchom
pnpm build && pnpm ui:buildprzedpnpm release:check, aby oczekiwane artefakty wydaniadist/*i pakiet Control UI istniały na potrzeby kroku walidacji pakowania - Uruchom
pnpm release:preppo podbiciu wersji w katalogu głównym i przed tagowaniem. Uruchamia każdy deterministyczny generator wydania, który często rozjeżdża się po zmianie wersji/konfiguracji/API: wersje pluginów, inwentarz pluginów, bazowy schemat konfiguracji, metadane konfiguracji dołączonych kanałów, bazę dokumentacji konfiguracji, eksporty SDK pluginów oraz bazę API SDK pluginów.pnpm release:checkponownie uruchamia te strażniki w trybie sprawdzania i zgłasza każdą wykrytą niezgodność wygenerowanych plików w jednym przebiegu przed uruchomieniem kontroli wydania pakietów. - Synchronizacja wersji pluginów domyślnie aktualizuje wersje oficjalnych pakietów pluginów oraz istniejące
dolne granice
openclaw.compat.pluginApido wersji wydania OpenClaw. Traktuj to pole jako dolną granicę API SDK/runtime pluginów, a nie tylko kopię wersji pakietu: w przypadku wydań wyłącznie pluginów, które celowo pozostają zgodne ze starszymi hostami OpenClaw, pozostaw dolną granicę na najstarszym obsługiwanym API hosta i udokumentuj ten wybór w dowodzie wydania pluginu. - Uruchom ręczny workflow
Full Release Validationprzed zatwierdzeniem wydania, aby uruchomić wszystkie przedwydaniowe środowiska testowe z jednego punktu wejścia. Przyjmuje branch, tag lub pełny SHA commita, wyzwala ręcznyCIi wyzwalaOpenClaw Release Checksdla dymnego testu instalacji, akceptacji pakietu, międzyplatformowych kontroli pakietu, parytetu QA Lab, Matrix i ścieżek Telegram. Stabilne i pełne przebiegi zawsze obejmują wyczerpujące live/E2E oraz długotrwały test ścieżki wydania Docker;run_release_soak=truezachowano dla jawnego długotrwałego testu beta. Package Acceptance zapewnia kanoniczne pakietowe Telegram E2E podczas walidacji kandydata, unikając drugiego równoległego pollera live. Podajrelease_package_specpo opublikowaniu wersji beta, aby ponownie użyć wysłanego pakietu npm w kontrolach wydania, Package Acceptance i pakietowym Telegram E2E bez ponownego budowania tarballa wydania. Podajnpm_telegram_package_spectylko wtedy, gdy Telegram ma używać innego opublikowanego pakietu niż reszta walidacji wydania. Podajpackage_acceptance_package_spec, gdy Package Acceptance ma używać innego opublikowanego pakietu niż specyfikacja pakietu wydania. Podajevidence_package_spec, gdy raport dowodowy wydania ma wykazać, że walidacja odpowiada opublikowanemu pakietowi npm bez wymuszania Telegram E2E. Przykład:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.PATCH - Uruchom ręczny workflow
Package Acceptance, gdy potrzebujesz dodatkowego dowodu dla kandydata pakietu, podczas gdy prace nad wydaniem trwają. Użyjsource=npmdlaopenclaw@beta,openclaw@latestlub dokładnej wersji wydania;source=ref, aby spakować zaufany branch/tag/SHApackage_refz aktualną uprzężąworkflow_ref;source=urldla publicznego tarballa HTTPS z wymaganym SHA-256 i ścisłą polityką publicznego URL;source=trusted-urldla nazwanej polityki zaufanego źródła z wymaganymtrusted_source_idi SHA-256; albosource=artifactdla tarballa przesłanego przez inny przebieg GitHub Actions. Workflow rozwiązuje kandydata dopackage-under-test, ponownie używa harmonogramu wydania Docker E2E wobec tego tarballa i może uruchomić QA Telegram wobec tego samego tarballa ztelegram_mode=mock-openailubtelegram_mode=live-frontier. Gdy wybrane ścieżki Docker obejmująpublished-upgrade-survivor, artefakt pakietu jest kandydatem, apublished_upgrade_survivor_baselinewybiera opublikowaną bazę.update-restart-authużywa pakietu kandydata jako zainstalowanego CLI oraz package-under-test, dzięki czemu ćwiczy zarządzaną ścieżkę restartu polecenia aktualizacji kandydata. Przykład: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-openaiTypowe profile:smoke: ścieżki instalacji/kanału/agenta, sieci Gateway i przeładowania konfiguracjipackage: natywne dla artefaktu ścieżki pakietu/aktualizacji/restartu/pluginu bez OpenWebUI ani live ClawHubproduct: profil pakietu plus kanały MCP, czyszczenie cron/subagenta, wyszukiwanie web OpenAI i OpenWebUIfull: fragmenty ścieżki wydania Docker z OpenWebUIcustom: dokładny wybórdocker_lanesdla ukierunkowanego ponownego przebiegu
- Uruchom ręczny workflow
CIbezpośrednio, gdy potrzebujesz tylko deterministycznego, normalnego pokrycia CI dla kandydata wydania. Ręczne wyzwolenia CI omijają zakresowanie zmian i wymuszają shardy Linux Node, shardy dołączonych pluginów, shardy kontraktów pluginów i kanałów, zgodność z Node 22,check-*,check-additional-*, dymne kontrole zbudowanych artefaktów, kontrole dokumentacji, Python skills, Windows, macOS oraz ścieżki i18n Control UI. Samodzielne ręczne przebiegi CI uruchamiają Android tylko po wyzwoleniu zinclude_android=true;Full Release Validationprzekazuje to wejście do swojego potomnego CI. Przykład z Android:gh workflow run ci.yml --ref release/YYYY.M.PATCH -f include_android=true - Uruchom
pnpm qa:otel:smokepodczas walidacji telemetrii wydania. Ćwiczy QA-lab przez lokalny odbiornik OTLP/HTTP i weryfikuje eksport śladów, metryk i logów oraz ograniczone atrybuty śladów i redakcję treści/identyfikatorów bez wymagania Opik, Langfuse ani innego zewnętrznego kolektora. - Uruchom
pnpm qa:otel:collector-smokepodczas walidacji zgodności kolektora. Kieruje ten sam eksport OTLP z QA-lab przez prawdziwy kontener Docker OpenTelemetry Collector przed asercjami lokalnego odbiornika. - Uruchom
pnpm qa:prometheus:smokepodczas walidacji chronionego scrapowania Prometheus. Ćwiczy QA-lab, odrzuca nieuwierzytelnione scrapowania i weryfikuje, że krytyczne dla wydania rodziny metryk pozostają wolne od treści promptów, surowych identyfikatorów, tokenów auth i lokalnych ścieżek. - Uruchom
pnpm qa:observability:smoke, gdy chcesz uruchomić ścieżki dymne OpenTelemetry i Prometheus z checkoutu źródłowego jedna po drugiej. - Uruchom
pnpm release:checkprzed każdym tagowanym wydaniem - Wstępna kontrola
OpenClaw NPM Releasegeneruje dowody wydania zależności przed spakowaniem tarballa npm. Bramka podatności z advisory npm blokuje wydanie. Manifest ryzyk zależności przechodnich, powierzchnia własności/instalacji zależności oraz raporty zmian zależności są wyłącznie dowodami wydania. Raport zmian zależności porównuje kandydata wydania z poprzednim osiągalnym tagiem wydania. - Wstępna kontrola przesyła dowody zależności jako
openclaw-release-dependency-evidence-<tag>i osadza je także poddependency-evidence/wewnątrz przygotowanego artefaktu wstępnej kontroli npm. Rzeczywista ścieżka publikacji ponownie używa tego artefaktu wstępnej kontroli, a następnie dołącza te same dowody do wydania GitHub jakoopenclaw-<version>-dependency-evidence.zip. - Uruchom
OpenClaw Release Publishdla mutującej sekwencji publikacji po tym, jak tag już istnieje. Wyzwól go zrelease/YYYY.M.PATCH(lubmainpodczas publikowania taga osiągalnego z main), przekaż tag wydania, udanypreflight_run_idnpm OpenClaw oraz udanyfull_release_validation_run_id, i pozostaw domyślny zakres publikacji pluginówall-publishable, chyba że celowo uruchamiasz ukierunkowaną naprawę. Workflow serializuje publikację pluginów npm, publikację pluginów ClawHub i publikację npm OpenClaw, aby pakiet rdzenia nie został opublikowany przed swoimi zewnętrznymi pluginami. - Stabilny
OpenClaw Release Publishwymaga dokładnegowindows_node_tagpo tym, jak istnieje odpowiadające mu nieprzedwydaniowe wydanieopenclaw/openclaw-windows-node. Wymaga także zatwierdzonej dla kandydata mapywindows_node_installer_digests. Przed wyzwoleniem dowolnego potomnego procesu publikacji weryfikuje, że wydanie źródłowe jest opublikowane, nie jest przedwydaniowe, zawiera wymagane instalatory x64/ARM64 i nadal odpowiada tej zatwierdzonej mapie. Następnie wyzwalaWindows Node Release, gdy wydanie OpenClaw nadal jest szkicem, przenosząc niezmienioną przypiętą mapę digestów instalatorów. Potomny workflow pobiera podpisane instalatory Windows Hub z tego dokładnego taga, dopasowuje je do przypiętych digestów, weryfikuje na runnerze Windows, że ich podpisy Authenticode używają oczekiwanego podpisującego OpenClaw Foundation, zapisuje manifest SHA-256 i przesyła instalatory oraz manifest do kanonicznego wydania OpenClaw na GitHub, a następnie ponownie pobiera wypromowane zasoby i weryfikuje przynależność do manifestu oraz hashe. Proces nadrzędny weryfikuje aktualny kontrakt zasobów x64, ARM64 i sum kontrolnych przed publikacją. Bezpośrednie odzyskiwanie odrzuca nieoczekiwane nazwy zasobówOpenClawCompanion-*przed zastąpieniem oczekiwanych zasobów kontraktu przypiętymi bajtami źródłowymi. Ręcznie wyzwalajWindows Node Releasetylko w celu odzyskania i zawsze przekazuj dokładny tag, nigdylatest, plus jawną mapę JSONexpected_installer_digestsz zatwierdzonego wydania źródłowego. Linki pobierania na stronie internetowej powinny wskazywać dokładne URL-e zasobów wydania OpenClaw dla bieżącego stabilnego wydania alboreleases/latest/download/...tylko po zweryfikowaniu, że przekierowanie latest GitHub wskazuje to samo wydanie; nie linkuj wyłącznie do strony wydania repo companion. - Kontrole wydania działają teraz w osobnym ręcznym workflow:
OpenClaw Release Checks OpenClaw Release Checksuruchamia także ścieżkę parytetu mock QA Lab oraz szybki profil live Matrix i ścieżkę QA Telegram przed zatwierdzeniem wydania. Ścieżki live używają środowiskaqa-live-shared; Telegram używa także dzierżaw poświadczeń Convex CI. Uruchom ręczny workflowQA-Lab - All Laneszmatrix_profile=allimatrix_shards=true, gdy chcesz równolegle pełny inwentarz transportu Matrix, mediów i E2EE.- Międzyplatformowa walidacja runtime instalacji i aktualizacji jest częścią publicznych
OpenClaw Release ChecksiFull Release Validation, które wywołują workflow wielokrotnego użytku.github/workflows/openclaw-cross-os-release-checks-reusable.ymlbezpośrednio - Ten podział jest celowy: utrzymuje rzeczywistą ścieżkę wydania npm krótką, deterministyczną i skupioną na artefaktach, podczas gdy wolniejsze kontrole live pozostają we własnej ścieżce, aby nie opóźniały ani nie blokowały publikacji
- Kontrole wydania zawierające sekrety powinny być wyzwalane przez
Full Release Validationalbo z referencji workflowmain/release, aby logika workflow i sekrety pozostawały kontrolowane OpenClaw Release Checksakceptuje branch, tag lub pełny SHA commita, o ile rozwiązany commit jest osiągalny z brancha OpenClaw albo taga wydania- Wstępna kontrola tylko walidacyjna
OpenClaw NPM Releaseakceptuje także aktualny pełny 40-znakowy SHA commita brancha workflow bez wymagania wypchniętego taga - Ta ścieżka SHA służy wyłącznie walidacji i nie może zostać wypromowana do rzeczywistej publikacji
- W trybie SHA workflow syntetyzuje
v<package.json version>tylko dla kontroli metadanych pakietu; rzeczywista publikacja nadal wymaga prawdziwego taga wydania - Oba workflow utrzymują rzeczywistą ścieżkę publikacji i promocji na runnerach hostowanych przez GitHub, podczas gdy niemutująca ścieżka walidacji może używać większych runnerów Linux Blacksmith
- Ten workflow uruchamia
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cachez użyciem sekretów workflowOPENAI_API_KEYiANTHROPIC_API_KEY - Wstępna kontrola wydania npm nie czeka już na osobną ścieżkę kontroli wydania
- Przed lokalnym tagowaniem kandydata wydania uruchom
RELEASE_TAG=vYYYY.M.PATCH-beta.N pnpm release:fast-pretag-check. Pomocnik uruchamia szybkie zabezpieczenia wydania, kontrole wydania pluginów npm/ClawHub, build, build UI irelease:openclaw:npm:checkw kolejności, która wychwytuje typowe błędy blokujące zatwierdzenie przed startem workflow publikacji GitHub. - Uruchom
RELEASE_TAG=vYYYY.M.PATCH node --import tsx scripts/openclaw-npm-release-check.ts(albo odpowiadający tag beta/korekty) przed zatwierdzeniem - Po publikacji npm uruchom
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.PATCH(lub odpowiadającą wersję beta/korekcyjną), aby zweryfikować ścieżkę instalacji opublikowanego rejestru w świeżym tymczasowym prefiksie - Po publikacji beta uruchom
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, aby zweryfikować onboarding zainstalowanego pakietu, konfigurację Telegram oraz rzeczywiste E2E Telegram względem opublikowanego pakietu npm przy użyciu współdzielonej puli dzierżawionych poświadczeń Telegram. Jednorazowe lokalne uruchomienia maintainerów mogą pominąć zmienne Convex i przekazać trzy poświadczenia envOPENCLAW_QA_TELEGRAM_*bezpośrednio. - Aby uruchomić pełny smoke test beta po publikacji z maszyny maintainera, użyj
pnpm release:beta-smoke -- --beta betaN. Pomocnik uruchamia walidację aktualizacji npm/fresh-target w Parallels, wyzwalaNPM Telegram Beta E2E, odpytuje dokładny przebieg workflow, pobiera artefakt i wypisuje raport Telegram. - Maintainerzy mogą uruchomić tę samą kontrolę po publikacji z GitHub Actions za pomocą
ręcznego workflow
NPM Telegram Beta E2E. Jest on celowo wyłącznie ręczny i nie uruchamia się przy każdym scaleniu. - Automatyzacja wydań maintainerów używa teraz modelu preflight, a potem promowanie:
- rzeczywista publikacja npm musi mieć udany npm
preflight_run_id - rzeczywista publikacja npm musi zostać wyzwolona z tej samej gałęzi
mainalborelease/YYYY.M.PATCH, co udany przebieg preflight - stabilne wydania npm domyślnie używają
beta - stabilna publikacja npm może jawnie wskazać
latestprzez dane wejściowe workflow - oparta na tokenie mutacja dist-tag npm znajduje się teraz w
openclaw/releases/.github/workflows/openclaw-npm-dist-tags.yml, ponieważnpm dist-tag addnadal wymagaNPM_TOKEN, podczas gdy repozytorium źródłowe zachowuje publikację wyłącznie przez OIDC - publiczny
macOS Releasesłuży tylko do walidacji; gdy tag istnieje tylko na gałęzi wydania, ale workflow jest wyzwalany zmain, ustawpublic_release_branch=release/YYYY.M.PATCH - rzeczywista publikacja macOS musi mieć udane macOS
preflight_run_idorazvalidate_run_id - rzeczywiste ścieżki publikacji promują przygotowane artefakty zamiast ponownie je budować
- rzeczywista publikacja npm musi mieć udany npm
- Dla stabilnych wydań korekcyjnych, takich jak
YYYY.M.PATCH-N, weryfikator po publikacji sprawdza także tę samą ścieżkę aktualizacji w tymczasowym prefiksie zYYYY.M.PATCHdoYYYY.M.PATCH-N, aby korekty wydań nie mogły po cichu zostawić starszych globalnych instalacji na bazowym stabilnym pakiecie - Preflight wydania npm kończy się odmową, chyba że tarball zawiera zarówno
dist/control-ui/index.html, jak i niepusty pakietdist/control-ui/assets/, abyśmy ponownie nie wysłali pustego dashboardu przeglądarkowego - Weryfikacja po publikacji sprawdza również, czy opublikowane punkty wejścia Plugin oraz
metadane pakietu są obecne w układzie zainstalowanym z rejestru. Wydanie, które
wysyła brakujące ładunki runtime Plugin, nie przechodzi weryfikatora po publikacji i
nie może zostać promowane do
latest. pnpm test:install:smokewymusza także budżet npm packunpackedSizena kandydackim tarballu aktualizacji, dzięki czemu installer e2e wychwytuje przypadkowe rozdęcie paczki przed ścieżką publikacji wydania- Jeśli prace nad wydaniem dotknęły planowania CI, manifestów czasu wykonywania rozszerzeń lub
macierzy testów rozszerzeń, przed zatwierdzeniem wygeneruj ponownie i przejrzyj należące do planera
wyjścia macierzy
plugin-prerelease-extension-shardz.github/workflows/plugin-prerelease.yml, aby informacje o wydaniu nie opisywały nieaktualnego układu CI - Gotowość stabilnego wydania macOS obejmuje także powierzchnie aktualizatora:
- wydanie GitHub musi ostatecznie zawierać spakowane
.zip,.dmgoraz.dSYM.zip appcast.xmlnamainmusi po publikacji wskazywać nowy stabilny zip; workflow publikacji macOS zatwierdza go automatycznie albo otwiera PR appcast, gdy bezpośredni push jest zablokowany- spakowana aplikacja musi zachować niedebugowy identyfikator pakietu, niepusty URL feedu Sparkle
oraz
CFBundleVersionrówny kanonicznemu minimalnemu progowi buildu Sparkle dla tej wersji wydania albo od niego wyższy
- wydanie GitHub musi ostatecznie zawierać spakowane
Boksy testów wydania
Full Release Validation to sposób, w jaki operatorzy uruchamiają wszystkie testy przedwydaniowe z
jednego punktu wejścia. Aby uzyskać dowód dla przypiętego commita na szybko zmieniającej się gałęzi, użyj
pomocnika, aby każdy workflow podrzędny działał z tymczasowej gałęzi przypiętej do docelowego
SHA:
pnpm ci:full-release --sha <full-sha>Pomocnik wypycha release-ci/<sha>-..., uruchamia Full Release Validation
z tej gałęzi z ref=<sha>, weryfikuje, że każdy headSha workflow podrzędnego
pasuje do celu, a następnie usuwa tymczasową gałąź. Zapobiega to przypadkowemu udowodnieniu
nowszego uruchomienia podrzędnego z main.
Do walidacji gałęzi wydania lub tagu uruchom go z zaufanego refa workflow main
i przekaż gałąź wydania lub tag jako ref:
gh workflow run full-release-validation.yml \ --ref main \ -f ref=release/YYYY.M.PATCH \ -f provider=openai \ -f mode=both \ -f release_profile=stable \ -f evidence_package_spec=openclaw@YYYY.M.PATCH-beta.NWorkflow rozwiązuje docelowy ref, uruchamia ręcznie CI z
target_ref=<release-ref>, a następnie uruchamia OpenClaw Release Checks.
OpenClaw Release Checks rozdziela zadania na smoke test instalacji, międzyplatformowe testy wydania,
pokrycie ścieżki wydania Docker live/E2E, gdy włączono testy długotrwałe, Package Acceptance
z kanonicznym E2E pakietu Telegram, parytet QA Lab, live Matrix oraz live
Telegram. Pełne uruchomienie typu all jest akceptowalne tylko wtedy, gdy podsumowanie Full Release Validation
pokazuje normal_ci, plugin_prerelease i release_checks jako
zakończone powodzeniem, chyba że ukierunkowane ponowne uruchomienie celowo pominęło osobne dziecko Plugin Prerelease. Używaj samodzielnego dziecka npm-telegram tylko do ukierunkowanego
ponownego uruchomienia opublikowanego pakietu z release_package_spec lub
npm_telegram_package_spec. Końcowe podsumowanie
weryfikatora zawiera tabele najwolniejszych zadań dla każdego uruchomienia podrzędnego, aby menedżer wydania
mógł zobaczyć bieżącą ścieżkę krytyczną bez pobierania logów.
Zobacz Pełna walidacja wydania, aby poznać
pełną macierz etapów, dokładne nazwy zadań workflow, różnice między profilami stable i full,
artefakty oraz uchwyty ukierunkowanych ponownych uruchomień.
Workflow podrzędne są uruchamiane z zaufanego refa, który uruchamia Full Release Validation, zwykle --ref main, nawet gdy docelowy ref wskazuje na
starszą gałąź wydania lub tag. Nie ma osobnego wejścia refa workflow Full Release Validation;
wybierz zaufany harness, wybierając ref uruchomienia workflow.
Nie używaj --ref main -f ref=<sha> do dokładnego dowodu commita na ruchomym main;
surowe SHA commitów nie mogą być refami uruchomienia workflow, więc użyj
pnpm ci:full-release --sha <sha>, aby utworzyć przypiętą tymczasową gałąź.
Użyj release_profile, aby wybrać zakres live/provider:
minimum: najszybsza ścieżka live OpenAI/core i Docker krytyczna dla wydaniastable: minimum plus stabilne pokrycie provider/backend do zatwierdzenia wydaniafull: stable plus szerokie doradcze pokrycie provider/media
Walidacje stable i full zawsze uruchamiają wyczerpujące live/E2E, ścieżkę wydania Docker
oraz ograniczony przegląd przetrwania aktualizacji opublikowanego pakietu przed promocją.
Użyj run_release_soak=true, aby zażądać tego samego przeglądu dla wersji beta. Ten przegląd obejmuje
najnowsze cztery stabilne pakiety oraz przypięte baseline'y 2026.4.23 i 2026.5.2,
a także starsze pokrycie 2026.4.15, z usuniętymi duplikatami baseline'ów i
każdym baseline'em podzielonym na własne zadanie runnera Docker.
OpenClaw Release Checks używa zaufanego refa workflow, aby jednorazowo rozwiązać docelowy
ref jako release-package-under-test i ponownie używa tego artefaktu w testach międzyplatformowych,
Package Acceptance oraz testach Docker ścieżki wydania, gdy działają testy długotrwałe. Dzięki temu
wszystkie boksy dotyczące pakietów działają na tych samych bajtach i unikają powtarzanych buildów pakietu.
Gdy beta jest już w npm, ustaw release_package_spec=openclaw@YYYY.M.PATCH-beta.N,
aby testy wydania pobrały wysłany pakiet raz, wyodrębniły jego źródłowy SHA builda
z dist/build-info.json i ponownie użyły tego artefaktu w testach międzyplatformowych,
Package Acceptance, Docker ścieżki wydania oraz torach pakietowego Telegram.
Międzyplatformowy smoke test instalacji OpenAI używa OPENCLAW_CROSS_OS_OPENAI_MODEL, gdy
ustawiona jest zmienna repo/org, w przeciwnym razie openai/gpt-5.4, ponieważ ten tor
udowadnia instalację pakietu, onboarding, start Gateway i jedną turę agenta live,
a nie benchmarkuje najwolniejszego modelu domyślnego. Szersza macierz live provider
pozostaje miejscem pokrycia specyficznego dla modeli.
Użyj tych wariantów w zależności od etapu wydania:
# Validate an unpublished release candidate branch.gh workflow run full-release-validation.yml \ --ref main \ -f ref=release/YYYY.M.PATCH \ -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.PATCH \ -f provider=openai \ -f mode=both \ -f release_profile=full \ -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-openaiNie używaj pełnej parasolowej walidacji jako pierwszego ponownego uruchomienia po ukierunkowanej poprawce. Jeśli jeden boks
zawiedzie, użyj nieudanego workflow podrzędnego, zadania, toru Docker, profilu pakietu, modelu
provider lub toru QA do następnego dowodu. Uruchom pełną parasolową walidację ponownie tylko wtedy, gdy
poprawka zmieniła współdzieloną orkiestrację wydania lub sprawiła, że wcześniejsze dowody ze wszystkich boksów
stały się nieaktualne. Końcowy weryfikator parasola ponownie sprawdza zapisane identyfikatory uruchomień workflow
podrzędnych, więc po pomyślnym ponownym uruchomieniu workflow podrzędnego uruchom ponownie tylko nieudane
zadanie nadrzędne Verify full validation.
Do ograniczonego odzyskiwania przekaż rerun_group do parasola. all to prawdziwe
uruchomienie release-candidate, ci uruchamia tylko zwykłe dziecko CI, plugin-prerelease
uruchamia tylko dziecko Plugin przeznaczone wyłącznie dla wydania, release-checks uruchamia każdy boks wydania,
a węższe grupy wydania to install-smoke, cross-os,
live-e2e, package, qa, qa-parity, qa-live i npm-telegram.
Ukierunkowane ponowne uruchomienia npm-telegram wymagają release_package_spec lub
npm_telegram_package_spec; pełne uruchomienia all używają kanonicznego pakietowego E2E Telegram
w Package Acceptance. Ukierunkowane
ponowne uruchomienia cross-OS mogą dodać cross_os_suite_filter=windows/packaged-upgrade lub
inny filtr OS/zestawu. Niepowodzenia release-check QA blokują normalną walidację wydania,
w tym wymagane dryfowanie dynamicznych narzędzi OpenClaw w standardowym tierze.
Uruchomienia alpha Tideclaw nadal mogą traktować tory release-check niezwiązane z bezpieczeństwem pakietu jako
doradcze. Gdy live_suite_filter jawnie żąda bramkowanego toru QA live, takiego
jak Discord, WhatsApp lub Slack, odpowiednia zmienna repo
OPENCLAW_RELEASE_QA_*_LIVE_CI_ENABLED musi być włączona; w przeciwnym razie
przechwytywanie wejścia kończy się niepowodzeniem zamiast cicho pominąć tor.
Vitest
Boks Vitest to ręczny workflow podrzędny CI. Ręczne CI celowo
omija zakresowanie zmian i wymusza normalny graf testów dla kandydata wydania:
shardy Linux Node, shardy bundled-plugin, shardy kontraktów Plugin i kanałów,
zgodność Node 22, check-*, check-additional-*,
smoke testy artefaktów builda, testy dokumentacji, Python skills, Windows, macOS
oraz i18n Control UI. Android jest uwzględniony, gdy Full Release Validation uruchamia
boks, ponieważ parasol przekazuje include_android=true; samodzielne ręczne CI
wymaga include_android=true dla pokrycia Android.
Użyj tego pola, aby odpowiedzieć na pytanie „czy drzewo źródłowe przeszło pełny normalny zestaw testów?”. To nie to samo co walidacja produktu na ścieżce wydania. Dowody do zachowania:
- podsumowanie
Full Release Validationpokazujące URL uruchomionego przebieguCI - zielony przebieg
CIna dokładnym docelowym SHA - nazwy nieudanych lub wolnych shardów z zadań CI podczas badania regresji
- artefakty czasów Vitest, takie jak
.artifacts/vitest-shard-timings.json, gdy przebieg wymaga analizy wydajności
Uruchamiaj ręczne CI bezpośrednio tylko wtedy, gdy wydanie wymaga deterministycznego normalnego CI, ale
nie pól Docker, QA Lab, live, cross-OS ani package. Użyj pierwszego polecenia
dla bezpośredniego CI bez Androida. Dodaj include_android=true, gdy bezpośrednie
CI kandydata do wydania musi obejmować Androida:
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
Pole Docker znajduje się w OpenClaw Release Checks przez
openclaw-live-and-e2e-checks-reusable.yml, a także w trybie wydania
workflow install-smoke. Waliduje kandydata do wydania przez spakowane
środowiska Docker zamiast wyłącznie testów na poziomie źródeł.
Zakres Docker dla wydania obejmuje:
- pełny smoke test instalacji z włączonym wolnym globalnym smoke testem instalacji Bun
- przygotowanie/ponowne użycie obrazu smoke głównego Dockerfile według docelowego SHA, z zadaniami smoke QR, root/gateway oraz installer/Bun uruchamianymi jako osobne shardy install-smoke
- ścieżki E2E repozytorium
- fragmenty Docker ścieżki wydania:
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-gorazplugins-runtime-install-h - pokrycie OpenWebUI wewnątrz fragmentu
plugins-runtime-services, gdy jest wymagane - podzielone ścieżki instalacji/deinstalacji dołączonych pluginów
od
bundled-plugin-install-uninstall-0dobundled-plugin-install-uninstall-23 - zestawy live/E2E providerów oraz pokrycie modeli live w Docker, gdy kontrole wydania obejmują zestawy live
Użyj artefaktów Docker przed ponownym uruchomieniem. Harmonogram ścieżki wydania przesyła
.artifacts/docker-tests/ z logami ścieżek, summary.json, failures.json,
czasami faz, JSON planu harmonogramu i poleceniami ponownego uruchomienia. Do ukierunkowanego odzyskiwania
użyj docker_lanes=<lane[,lane]> w wielokrotnego użytku workflow live/E2E zamiast
ponownie uruchamiać wszystkie fragmenty wydania. Wygenerowane polecenia ponownego uruchomienia zawierają wcześniejsze
package_artifact_run_id i przygotowane dane wejściowe obrazów Docker, gdy są dostępne, aby
nieudana ścieżka mogła ponownie użyć tego samego tarballa i obrazów GHCR.
QA Lab
Pole QA Lab jest również częścią OpenClaw Release Checks. To agentowa
bramka wydania dla zachowania i poziomu kanałów, oddzielna od Vitest oraz mechaniki
pakietów Docker.
Zakres QA Lab dla wydania obejmuje:
- ścieżkę parytetu mock porównującą ścieżkę kandydata OpenAI z bazą Opus 4.6 przy użyciu pakietu parytetu agentowego
- szybki profil QA live Matrix używający środowiska
qa-live-shared - ścieżkę QA live Telegram używającą dzierżaw poświadczeń Convex CI
pnpm qa:otel:smoke,pnpm qa:otel:collector-smoke,pnpm qa:prometheus:smokelubpnpm qa:observability:smoke, gdy telemetria wydania wymaga jawnego lokalnego dowodu
Użyj tego pola, aby odpowiedzieć na pytanie „czy wydanie zachowuje się poprawnie w scenariuszach QA i przepływach kanałów live?”. Zachowaj URL-e artefaktów dla ścieżek parity, Matrix i Telegram podczas zatwierdzania wydania. Pełne pokrycie Matrix pozostaje dostępne jako ręczny shardowany przebieg QA-Lab, a nie domyślna ścieżka krytyczna dla wydania.
Pakiet
Pole Package jest bramką instalowalnego produktu. Jest wspierane przez
Package Acceptance oraz resolver
scripts/resolve-openclaw-package-candidate.mjs. Resolver normalizuje
kandydata do tarballa package-under-test używanego przez Docker E2E, waliduje
inwentarz pakietu, zapisuje wersję pakietu i SHA-256 oraz utrzymuje ref harnessu
workflow oddzielnie od refa źródła pakietu.
Obsługiwane źródła kandydatów:
source=npm:openclaw@beta,openclaw@latestalbo dokładna wersja wydania OpenClawsource=ref: spakuj zaufaną gałąźpackage_ref, tag albo pełny SHA commita z wybranym szkieletemworkflow_refsource=url: pobierz publiczny plik HTTPS.tgzz wymaganympackage_sha256; poświadczenia w URL, niestandardowe porty HTTPS, prywatne/wewnętrzne/specjalnego przeznaczenia nazwy hostów albo rozwiązane adresy oraz niebezpieczne przekierowania są odrzucanesource=trusted-url: pobierz plik HTTPS.tgzz wymaganymipackage_sha256itrusted_source_idz nazwanej polityki w.github/package-trusted-sources.json; używaj tego dla należących do maintainerów mirrorów enterprise albo prywatnych repozytoriów pakietów zamiast dodawać obejście sieci prywatnej na poziomie wejścia dosource=urlsource=artifact: użyj ponownie pliku.tgzprzesłanego przez inne uruchomienie GitHub Actions
OpenClaw Release Checks uruchamia Package Acceptance z source=artifact, przygotowanym artefaktem pakietu wydania, suite_profile=custom,
docker_lanes=doctor-switch update-channel-switch skill-install update-corrupt-plugin upgrade-survivor published-upgrade-survivor update-restart-auth plugins-offline plugin-update,
telegram_mode=mock-openai. Package Acceptance utrzymuje migrację, aktualizację,
restart aktualizacji ze skonfigurowanym uwierzytelnianiem, instalację live Skills z ClawHub, czyszczenie przestarzałych zależności Pluginu, offline
fixtures Pluginu, aktualizację Pluginu oraz QA pakietu Telegram względem tego samego rozwiązanego
tarballa. Blokujące kontrole wydania używają domyślnej najnowszej opublikowanej linii bazowej pakietu;
profil beta z run_release_soak=true, release_profile=stable albo
release_profile=full rozszerza zakres do każdej stabilnej linii bazowej opublikowanej w npm od
2026.4.23 do latest oraz fixtures zgłoszonych problemów. Użyj
Package Acceptance z source=npm dla już wydanego kandydata,
source=ref dla lokalnego tarballa npm opartego na SHA przed publikacją,
source=trusted-url dla należącego do maintainerów mirrora enterprise/prywatnego albo
source=artifact dla przygotowanego tarballa przesłanego przez inne uruchomienie GitHub Actions.
Jest to natywny dla GitHub
zamiennik większości pokrycia pakietu/aktualizacji, które wcześniej wymagało
Parallels. Międzyplatformowe kontrole wydania nadal są ważne dla onboardingu,
instalatora i zachowania platformowego specyficznego dla systemu operacyjnego, ale walidacja produktu pakietu/aktualizacji powinna
preferować Package Acceptance.
Kanoniczna lista kontrolna walidacji aktualizacji i Pluginów to
Testowanie aktualizacji i Pluginów. Używaj jej przy
decydowaniu, która ścieżka lokalna, Docker, Package Acceptance albo kontrola wydania potwierdza
instalację/aktualizację Pluginu, czyszczenie przez doctor albo zmianę migracji opublikowanego pakietu.
Wyczerpująca migracja opublikowanych aktualizacji z każdego stabilnego pakietu 2026.4.23+ to
osobny ręczny workflow Update Migration, a nie część Full Release CI.
Łagodność starszego package-acceptance jest celowo ograniczona czasowo. Pakiety do
2026.4.25 mogą używać ścieżki zgodności dla luk metadanych już opublikowanych
w npm: prywatnych wpisów inwentarza QA brakujących w tarballu, brakującego
gateway install --wrapper, brakujących plików patchy w fixture git
wyprowadzonym z tarballa, brakującego utrwalonego update.channel, starszych lokalizacji
rekordów instalacji Pluginu, brakującego utrwalania rekordów instalacji z marketplace oraz migracji metadanych
konfiguracji podczas plugins update. Opublikowany pakiet 2026.4.26 może ostrzegać
o lokalnych plikach stempli metadanych kompilacji, które już wydano. Późniejsze pakiety
muszą spełniać współczesne kontrakty pakietu; te same luki powodują niepowodzenie
walidacji wydania.
Używaj szerszych profili Package Acceptance, gdy pytanie o wydanie dotyczy rzeczywistego instalowalnego pakietu:
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.26Typowe profile pakietów:
smoke: szybkie ścieżki instalacji pakietu/kanału/agenta, sieci Gateway i ponownego ładowania konfiguracjipackage: kontrakty instalacji/aktualizacji/restartu/pakietu Pluginu plus dowód instalacji live Skills z ClawHub; to domyślna wartość kontroli wydaniaproduct:packageplus kanały MCP, czyszczenie cron/subagent, wyszukiwanie webowe OpenAI i OpenWebUIfull: fragmenty ścieżki wydania Docker z OpenWebUIcustom: dokładna listadocker_lanesdla ukierunkowanych ponownych uruchomień
Dla dowodu Telegram kandydata pakietu włącz telegram_mode=mock-openai albo
telegram_mode=live-frontier w Package Acceptance. Workflow przekazuje
rozwiązany tarball package-under-test do ścieżki Telegram; samodzielny
workflow Telegram nadal akceptuje opublikowaną specyfikację npm dla kontroli po publikacji.
Regularna automatyzacja publikacji wydania
Dla beta, latest, Pluginu, GitHub Release i publikacji platformowej
OpenClaw Release Publish jest normalnym mutującym punktem wejścia. Miesięczna
ścieżka npm-only extended-stable .33+ nie używa tego orkiestratora. Regularny workflow
orkiestruje workflowy trusted-publisher w kolejności wymaganej przez wydanie:
- Pobierz tag wydania i rozwiąż jego SHA commita.
- Sprawdź, czy tag jest osiągalny z
mainalborelease/*. - Uruchom
pnpm plugins:sync:check. - Wywołaj
Plugin NPM Releasezpublish_scope=all-publishableiref=<release-sha>. - Wywołaj
Plugin ClawHub Releasez tym samym zakresem i SHA. - Wywołaj
OpenClaw NPM Releasez tagiem wydania, dist-tag npm oraz zapisanympreflight_run_idpo zweryfikowaniu zapisanegofull_release_validation_run_id. - Dla wydań stabilnych utwórz albo zaktualizuj wydanie GitHub jako szkic, wywołaj
Windows Node Releasez jawnymwindows_node_tagi zatwierdzonymi dla kandydatawindows_node_installer_digests, a następnie zweryfikuj kanoniczne zasoby instalatora/sum kontrolnych przed opublikowaniem szkicu.
Przykład publikacji beta:
gh workflow run openclaw-release-publish.yml \ --ref release/YYYY.M.PATCH \ -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 npm_dist_tag=betaStabilna publikacja do domyślnego beta dist-tag:
gh workflow run openclaw-release-publish.yml \ --ref release/YYYY.M.PATCH \ -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 npm_dist_tag=betaStabilna promocja bezpośrednio do latest jest jawna:
gh workflow run openclaw-release-publish.yml \ --ref release/YYYY.M.PATCH \ -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 npm_dist_tag=latestUżywaj workflowów niższego poziomu Plugin NPM Release i Plugin ClawHub Release
tylko do ukierunkowanych napraw albo ponownych publikacji. OpenClaw Release Publish odrzuca
plugin_publish_scope=selected, gdy publish_openclaw_npm=true, aby główny
pakiet nie mógł zostać wydany bez każdego publikowalnego oficjalnego Pluginu, w tym
@openclaw/diffs-language-pack. Dla naprawy wybranego Pluginu ustaw
publish_openclaw_npm=false z plugin_publish_scope=selected i
plugins=@openclaw/name albo wywołaj workflow podrzędny bezpośrednio.
Wejścia workflow NPM
OpenClaw NPM Release akceptuje te wejścia kontrolowane przez operatora:
tag: wymagany tag wydania, taki jakv2026.4.2,v2026.4.2-1albov2026.4.2-beta.1; gdypreflight_only=true, może to być także bieżący pełny 40-znakowy SHA commita gałęzi workflow do preflightu wyłącznie walidacyjnegopreflight_only:truetylko dla walidacji/kompilacji/pakietu,falsedla rzeczywistej ścieżki publikacjipreflight_run_id: wymagane na rzeczywistej ścieżce publikacji, aby workflow ponownie użył przygotowanego tarballa z udanego uruchomienia preflightfull_release_validation_run_id: wymagane dla rzeczywistej miesięcznej publikacji extended-stable i regularnej publikacji niebędącej beta, aby workflow uwierzytelnił dokładne uruchomienie walidacjinpm_dist_tag: docelowy tag npm dla ścieżki publikacji; akceptujealpha,beta,latestalboextended-stablei domyślnie używabeta. Ostateczny patch33i późniejsze muszą używaćextended-stable; domyślnieextended-stableodrzuca wcześniejsze patche i zawsze odrzuca tagi nieostateczne.bypass_extended_stable_guard: wartość logiczna tylko do testów, domyślniefalse; przynpm_dist_tag=extended-stableomija miesięczną kwalifikowalność extended-stable, zachowując tożsamość wydania, artefakt, zatwierdzenie i kontrole odczytu zwrotnego.
OpenClaw Release Publish akceptuje te wejścia kontrolowane przez operatora:
tag: wymagany tag wydania; musi już istniećpreflight_run_id: id udanego uruchomienia preflightOpenClaw NPM Release; wymagane, gdypublish_openclaw_npm=truefull_release_validation_run_id: id udanego uruchomieniaFull Release Validation; wymagane, gdypublish_openclaw_npm=truewindows_node_tag: dokładny tag wydaniaopenclaw/openclaw-windows-nodebez prerelease; wymagany dla stabilnej publikacji OpenClawwindows_node_installer_digests: zatwierdzona dla kandydata zwarta mapa JSON bieżących nazw instalatorów Windows do ich przypiętych skrótówsha256:; wymagana dla stabilnej publikacji OpenClawnpm_dist_tag: docelowy tag npm dla pakietu OpenClawplugin_publish_scope: domyślnieall-publishable; używajselectedtylko do ukierunkowanych napraw wyłącznie Pluginów zpublish_openclaw_npm=falseplugins: oddzielone przecinkami nazwy pakietów@openclaw/*, gdyplugin_publish_scope=selectedpublish_openclaw_npm: domyślnietrue; ustawfalsetylko podczas używania workflow jako orkiestratora napraw wyłącznie Pluginówwait_for_clawhub: domyślniefalse, aby dostępność npm nie była blokowana przez sidecar ClawHub; ustawtruetylko wtedy, gdy ukończenie workflow musi obejmować ukończenie ClawHub
OpenClaw Release Checks akceptuje te wejścia kontrolowane przez operatora:
ref: gałąź, tag albo pełny SHA commita do walidacji. Kontrole używające sekretów wymagają, aby rozwiązany commit był osiągalny z gałęzi OpenClaw albo tagu wydania.run_release_soak: włącza wyczerpujące live/E2E, ścieżkę wydania Docker oraz soak upgrade-survivor dla wszystkiego od początku dla kontroli wydania beta. Jest wymuszane przezrelease_profile=stableirelease_profile=full.
Reguły:
- Regularne wersje ostateczne i korekcyjne poniżej patcha
33mogą publikować dobetaalbolatest. Wersje ostateczne od patcha33wzwyż muszą publikować doextended-stable, a wersje z sufiksem korekcyjnym na tej granicy są odrzucane. - Tagi prerelease beta mogą publikować tylko do
beta - Dla
OpenClaw NPM Releasewejście pełnego SHA commita jest dozwolone tylko, gdypreflight_only=true OpenClaw Release ChecksiFull Release Validationzawsze są wyłącznie walidacyjne- Rzeczywista ścieżka publikacji musi używać tego samego
npm_dist_tag, którego użyto podczas preflightu; workflow weryfikuje te metadane przed kontynuacją publikacji
Regularna sekwencja wydania beta/latest stable
Ta starsza sekwencja dotyczy regularnego orkiestracyjnego wydania, które obejmuje także
Pluginy, GitHub Release, Windows i inne prace platformowe. Nie jest to
miesięczna ścieżka npm-only extended-stable .33+ udokumentowana na początku tej strony.
Podczas przygotowywania regularnego orkiestracyjnego stabilnego wydania:
- Uruchom
OpenClaw NPM Releasezpreflight_only=true- Zanim tag będzie istnieć, możesz użyć bieżącego pełnego SHA commita gałęzi workflow do suchego przebiegu workflow preflight służącego tylko do walidacji
- Wybierz
npm_dist_tag=betadla normalnego przepływu najpierw beta albolatesttylko wtedy, gdy celowo chcesz bezpośrednio opublikować wersję stabilną - Uruchom
Full Release Validationna gałęzi wydania, tagu wydania albo pełnym SHA commita, gdy chcesz normalne CI oraz pokrycie live prompt cache, Docker, QA Lab, Matrix i Telegram z jednego ręcznego workflow - Jeśli celowo potrzebujesz tylko deterministycznego normalnego grafu testów, uruchom
ręczny workflow
CIna ref wydania zamiast tego - Wybierz dokładny tag wydania
openclaw/openclaw-windows-nodeniebędący prerelease, którego podpisane instalatory x64 i ARM64 mają zostać dostarczone. Zapisz go jakowindows_node_tagi zapisz ich zwalidowaną mapę skrótów jakowindows_node_installer_digests. Pomocnik release-candidate zapisuje oba i uwzględnia je w wygenerowanym poleceniu publikacji. - Zapisz zakończone powodzeniem
preflight_run_idifull_release_validation_run_id - Uruchom
OpenClaw Release Publishz tym samymtag, tym samymnpm_dist_tag, wybranymwindows_node_tag, zapisanymwindows_node_installer_digests, zapisanympreflight_run_idi zapisanymfull_release_validation_run_id; publikuje on zewnętrzne pluginy do npm i ClawHub przed promowaniem pakietu npm OpenClaw - Jeśli wydanie trafiło na
beta, użyj workflowopenclaw/releases/.github/workflows/openclaw-npm-dist-tags.yml, aby wypromować tę stabilną wersję zbetadolatest - Jeśli wydanie celowo opublikowano bezpośrednio do
latest, abetama natychmiast wskazywać ten sam stabilny build, użyj tego samego workflow wydania, aby ustawić oba dist-tags na stabilną wersję, albo pozwól jego zaplanowanej samonaprawiającej synchronizacji przenieśćbetapóźniej
Mutacja dist-tag znajduje się w repozytorium rejestru wydań, ponieważ nadal wymaga
NPM_TOKEN, podczas gdy repozytorium źródłowe zachowuje publikowanie wyłącznie przez OIDC.
Dzięki temu zarówno ścieżka bezpośredniej publikacji, jak i ścieżka promocji najpierw beta są udokumentowane i widoczne dla operatora.
Jeśli maintainer musi awaryjnie użyć lokalnego uwierzytelniania npm, uruchamiaj wszelkie
polecenia CLI 1Password (op) tylko w dedykowanej sesji tmux. Nie wywołuj op
bezpośrednio z głównej powłoki agenta; utrzymywanie go w tmux sprawia, że prompty,
alerty i obsługa OTP są obserwowalne oraz zapobiega powtarzającym się alertom hosta.
Publiczne odwołania
.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
Maintainerzy używają prywatnej dokumentacji wydań w
openclaw/maintainers/release/README.md
jako właściwego runbooka.