Release and CI
Zasady wydawania wersji
OpenClaw udostępnia obecnie trzy kanały aktualizacji przeznaczone dla użytkowników:
- stable: dotychczasowy promowany kanał wydań, który nadal jest rozwiązywany za pośrednictwem npm
latest, dopóki nie zostanie osiągnięty osobny kamień milowy CLI/kanału - beta: tagi wersji przedpremierowych publikowane w npm
beta - dev: ruchoma najnowsza wersja
main
Niezależnie od tego operatorzy wydań mogą publikować pakiet rdzenia za ostatni
zakończony miesiąc w npm extended-stable, począwszy od poprawki 33. Regularna
końcowa linia z bieżącego miesiąca pozostaje w npm latest; ten podział publikacji
po stronie operatora sam w sobie nie zmienia rozwiązywania kanałów aktualizacji CLI.
Kompilacje alfa Tideclaw stanowią osobną wewnętrzną ścieżkę wersji przedpremierowych (dist-tag npm alpha), opisaną w sekcjach Dane wejściowe przepływu pracy npm i Środowiska testowe wydań.
Nazewnictwo wersji
- Wersja miesięcznego rozszerzonego stabilnego wydania npm:
YYYY.M.PATCH, zPATCH >= 33, tag gitvYYYY.M.PATCH - Wersja dziennego/regularnego wydania końcowego:
YYYY.M.PATCH, zPATCH < 33, tag gitvYYYY.M.PATCH - Wersja regularnego wydania poprawkowego na wypadek awarii:
YYYY.M.PATCH-N, tag gitvYYYY.M.PATCH-N - Wersja przedpremierowa beta:
YYYY.M.PATCH-beta.N, tag gitvYYYY.M.PATCH-beta.N - Wersja przedpremierowa alfa:
YYYY.M.PATCH-alpha.N, tag gitvYYYY.M.PATCH-alpha.N - Nigdy nie należy uzupełniać miesiąca ani poprawki zerami wiodącymi
PATCHjest kolejnym numerem miesięcznego cyklu wydań, a nie dniem kalendarzowym. Regularne wydania końcowe i beta przesuwają bieżący cykl; tagi wyłącznie alfa nigdy nie zużywają ani nie zwiększają numeru poprawki beta/regularnej, dlatego przy wybieraniu cyklu beta lub regularnego należy ignorować starsze tagi wyłącznie alfa z wyższymi numerami poprawek.- Kompilacje alfa/nocne używają następnego niewydanego cyklu poprawki i przy kolejnych kompilacjach zwiększają tylko
alpha.N. Gdy dana poprawka otrzyma wersję beta, nowe kompilacje alfa przechodzą do kolejnej poprawki. - Wersje npm są niezmienne: nigdy nie należy usuwać, ponownie publikować ani ponownie wykorzystywać opublikowanego tagu. Zamiast tego należy utworzyć kolejny numer wersji przedpremierowej lub kolejną miesięczną poprawkę.
latestnadal odpowiada bieżącej regularnej/dziennej linii npm;betajest bieżącym celem instalacji wersji betaextended-stableoznacza obsługiwany pakiet npm za poprzedni miesiąc, począwszy od poprawki33; poprawka34i kolejne są wydaniami konserwacyjnymi tej miesięcznej linii- Regularne wydania końcowe i regularne wydania poprawkowe są domyślnie publikowane w npm
beta; operatorzy wydań mogą jawnie wybraćlatestalbo później promować zweryfikowaną kompilację beta - Dedykowana miesięczna ścieżka rozszerzonej stabilności publikuje pakiet rdzenia npm oraz każdy oficjalny plugin możliwy do opublikowania w npm w dokładnie tej samej wersji. Nie publikuje pluginów w ClawHub ani artefaktów macOS lub Windows, wydania GitHub, tagów dist-tag prywatnych repozytoriów, obrazów Docker, artefaktów mobilnych ani plików do pobrania ze strony internetowej.
- Każde regularne wydanie końcowe dostarcza razem pakiet npm, aplikację macOS, podpisany samodzielny pakiet APK dla Androida oraz podpisane instalatory Windows Hub. Wydania beta zwykle najpierw weryfikują i publikują ścieżkę npm/pakietu, a kompilowanie, podpisywanie, notaryzacja i promowanie aplikacji natywnych są zarezerwowane dla regularnego wydania końcowego, chyba że wyraźnie zażądano inaczej.
Harmonogram wydań
- Wydania najpierw przechodzą przez wersję beta; wersja stabilna pojawia się dopiero po zweryfikowaniu najnowszej wersji beta
- Opiekunowie zwykle przygotowują wydania z gałęzi
release/YYYY.M.PATCHutworzonej z bieżącejmain, aby weryfikacja i poprawki wydania nie blokowały nowych prac programistycznych wmain - Jeśli tag beta został wypchnięty lub opublikowany i wymaga poprawki, opiekunowie tworzą następny tag
-beta.N, zamiast usuwać lub odtwarzać poprzedni - Szczegółowa procedura wydania, zatwierdzenia, dane uwierzytelniające i uwagi dotyczące odzyskiwania są dostępne wyłącznie dla opiekunów
Miesięczna publikacja rozszerzonej wersji stabilnej wyłącznie w npm
Jest to dedykowany wyjątek od opisanej poniżej regularnej procedury wydania. Dla
zakończonego miesiąca YYYY.M należy utworzyć extended-stable/YYYY.M.33; publikować
vYYYY.M.33 i późniejsze poprawki konserwacyjne z tej samej gałęzi. Tag
wydania, końcówka gałęzi, checkout, wersja pakietu, kontrola wstępna npm i przebieg
pełnej weryfikacji wydania muszą wskazywać ten sam commit. Chroniona main musi
już zawierać wersję końcową ze ściśle późniejszego miesiąca kalendarzowego poniżej poprawki
33; poprawki konserwacyjne pozostają dopuszczalne po przesunięciu main o więcej niż jeden
miesiąc.
Na właściwej gałęzi rozszerzonej stabilności należy podnieść wersję pakietu głównego do YYYY.M.P, uruchomić
pnpm release:prep i sprawdzić, czy każdy możliwy do opublikowania pakiet rozszerzenia ma
tę samą wersję. Należy zatwierdzić i wypchnąć wszystkie wygenerowane zmiany, utworzyć i wypchnąć
niezmienny tag vYYYY.M.P w tym commicie oraz zapisać wynikowy pełny SHA.
Przepływy pracy korzystają z tego przygotowanego drzewa; nie podnoszą ani nie synchronizują
wersji automatycznie.
Należy uruchomić kontrolę wstępną npm oraz pełną weryfikację wydania z dokładnie tej przygotowanej końcówki gałęzi, a następnie zapisać oba identyfikatory przebiegów i numer udanej próby przebiegu pełnej weryfikacji wydania:
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 jest istniejącym profilem głębokości weryfikacji;
jest niezależny od dist-tag npm extended-stable i celowo
pozostaje bez zmian.
Po pomyślnym zakończeniu obu przebiegów należy opublikować każdy oficjalny plugin możliwy do opublikowania w npm z
dokładnie tej samej końcówki gałęzi. Poprawka P musi mieć wartość 33 lub większą. Należy przekazać pełny SHA wydania
jako ref, poczekać na ukończenie całej macierzy i odczytu zwrotnego z rejestru, a następnie zapisać
identyfikator udanego przebiegu wydania pluginów w npm:
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-stablePrzepływ pracy korzysta ze standardowego przygotowanego spisu pakietów all-publishable,
w tym z pakietów, których źródło się nie zmieniło. Przed pomyślnym zakończeniem sprawdza każdy dokładny pakiet
oraz każdy tag pluginu extended-stable. Jeśli częściowy przebieg
zakończy się niepowodzeniem, należy ponownie uruchomić to samo polecenie: już opublikowane pakiety zostaną ponownie wykorzystane, brakujące
lub nieaktualne tagi pluginów zostaną uzgodnione w środowisku wydania npm, a
końcowy odczyt zwrotny nadal obejmie kompletny zestaw pakietów.
Po pomyślnym zakończeniu przepływu pracy pluginów i przygotowaniu środowiska wydania npm
należy opublikować dokładny tarball rdzenia z kontroli wstępnej. Publikacja rdzenia sprawdza, czy
wskazany przebieg pluginów ma wartość completed/success na tej samej kanonicznej gałęzi i
dokładnie tym samym źródłowym 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>W przypadku forka lub nieprodukcyjnej próby, która celowo nie może spełnić
miesięcznej zasady .33 lub zasady miesiąca chronionej main, należy dodać
-f bypass_extended_stable_guard=true zarówno do wywołania kontroli wstępnej npm, jak i
publikacji. Wartość domyślna to false. Obejście jest akceptowane wyłącznie z
npm_dist_tag=extended-stable i zostaje zapisane w podsumowaniu przepływu pracy. Nie
omija ono kanonicznego odwołania przepływu pracy extended-stable/YYYY.M.33,
zgodności końcówki gałęzi/tagu/checkoutu, składni tagu końcowego, zgodności wersji
pakietu/tagu, tożsamości wskazanego przebiegu i manifestu, pochodzenia tarballa,
zatwierdzenia środowiska, odczytu zwrotnego z rejestru ani dowodu naprawy selektora.
Przepływ pracy publikacji sprawdza tożsamości wskazanych przebiegów kontroli wstępnej, weryfikacji i pluginów, skrót przygotowanego tarballa oraz selektory rejestru rdzenia. Po pomyślnym zakończeniu przepływu pracy należy niezależnie potwierdzić wynik:
npm view [email protected] version --userconfig "$(mktemp)"npm view openclaw@extended-stable version --userconfig "$(mktemp)"Oba polecenia muszą zwrócić YYYY.M.P. Jeśli publikacja powiedzie się, ale odczyt zwrotny
selektora nie powiedzie się, nie należy ponownie publikować niezmiennej wersji pakietu. Należy użyć
pojedynczego polecenia naprawy npm dist-tag add [email protected] extended-stable
wyświetlonego w zawsze wykonywanym podsumowaniu nieudanego przepływu pracy, a następnie powtórzyć oba
niezależne odczyty zwrotne. Wycofanie do poprzedniego selektora jest osobną decyzją
operatora, a nie ścieżką naprawy odczytu zwrotnego.
Publiczna dokumentacja pomocy początkowo wskazuje Slack, Discord i Codex jako objęte obsługą powierzchnie pluginów rozszerzonej wersji stabilnej. Ta lista jest deklaracją obsługi, a nie listą dozwolonych elementów w kodzie wydania: każdy oficjalny plugin możliwy do opublikowania w npm korzysta z tej samej ścieżki publikacji dokładnej wersji.
Poniższa regularna lista kontrolna nadal obejmuje wersję beta, latest, wydanie GitHub,
pluginy, macOS, Windows i publikację na innych platformach. Nie należy wykonywać tych
kroków dla tej ścieżki rozszerzonej stabilności przeznaczonej wyłącznie dla npm.
Lista kontrolna operatora regularnego wydania
Ta lista kontrolna przedstawia publiczny kształt procesu wydania. Prywatne dane uwierzytelniające, podpisywanie, notaryzacja, odzyskiwanie dist-tag oraz szczegóły awaryjnego wycofywania pozostają w podręczniku wydań dostępnym wyłącznie dla opiekunów.
-
Należy rozpocząć od bieżącej
main: pobrać najnowsze zmiany, potwierdzić wypchnięcie docelowego commitu oraz potwierdzić, że CImainjest wystarczająco zielone, aby utworzyć z niego gałąź. -
Należy utworzyć
release/YYYY.M.PATCHz tego commitu. Backporty są opcjonalne; należy zastosować wyłącznie zestaw wybrany przez operatora. Należy podnieść wersje we wszystkich wymaganych miejscach, uruchomićpnpm release:prep, dokończyć poprawki wydania i wymagane przeniesienia zmian do nowszych gałęzi oraz przejrzećsrc/plugins/compat/registry.tsisrc/commands/doctor/shared/deprecation-compat.ts. -
Należy zamrozić kompletny produktowo commit sprzed aktualizacji dziennika zmian jako SHA kodu. Następnie należy uruchomić deterministyczną kontrolę wstępną źródła i użyć
node scripts/full-release-validation-at-sha.mjs --sha <code-sha> --target-ref release/YYYY.M.PATCH. Przypina to zaufane narzędzia przepływu pracy, podczas gdy pełna macierz Vitest, Docker, QA, pakietów i wydajności obejmuje dokładny SHA kodu. -
Przed edycją należy sklasyfikować niepowodzenia. Niepowodzenie produktu/kodu tworzy nowy SHA kodu i wymaga pomyślnej pełnej weryfikacji dla tego SHA. Niepowodzenie przepływu pracy, zestawu testowego, danych uwierzytelniających, zatwierdzenia lub infrastruktury należy naprawić w powierzchni, która jest jego właścicielem, i uruchomić ponownie względem tego samego SHA kodu.
-
Dopiero gdy SHA kodu będzie zielony, należy wygenerować początkową sekcję
CHANGELOG.mdna podstawie scalonych PR-ów i bezpośrednich commitów od ostatniego osiągalnego wydanego tagu. Wpisy powinny być skierowane do użytkowników i pozbawione duplikatów. Gdy rozbieżny wydany tag lub późniejsze przeniesienie zmian do nowszej gałęzi ponownie powiąże już wydane PR-y, należy przekazać go jawnie jako--shipped-ref. -
Należy zatwierdzić wyłącznie
CHANGELOG.md. Ten commit jest SHA wydania. Pełna różnica między SHA kodu a SHA wydania musi obejmować dokładnieCHANGELOG.md; każda inna zmieniona ścieżka cofa proces wydania do kroku 2. -
Należy uruchomić pełną weryfikację wydania przypiętą do SHA dla SHA wydania, z włączonym ponownym użyciem dowodów. Lekki przebieg nadrzędny musi zapisać
changelog-only-release-v1, wskazywać zielony SHA kodu i nie uruchamiać żadnych podrzędnych ścieżek produktu. Powoduje to ponowne użycie dowodów dotyczących produktu, ale nie bajtów pakietu. -
Należy uruchomić
OpenClaw NPM Releasezpreflight_only=truewzględem SHA/tagu wydania. Należy zapisać udanypreflight_run_id. Spowoduje to zbudowanie i sprawdzenie dokładnych bajtów pakietu zawierających końcowy dziennik zmian. -
Należy oznaczyć SHA wydania tagiem, a następnie uruchomić narzędzie pomocnicze kandydata z udanym nadrzędnym przebiegiem weryfikacji SHA wydania i kontrolą wstępną npm, zamiast ponownie uruchamiać którekolwiek z nich:
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-dispatchW przypadku wydania stabilnego przekaż także
--windows-node-tag vX.Y.Z. Narzędzie pomocnicze weryfikuje pochodzenie informacji o wydaniu, bajty kontroli wstępnej npm, dowód instalacji/aktualizacji w Parallels, dowód pakietu Telegram oraz plany publikacji pluginów, a następnie wyświetla polecenie publikacji.OpenClaw Release Publishrównolegle wysyła wybrane lub wszystkie możliwe do opublikowania pakiety pluginów do npm i ten sam zestaw do ClawHub, a następnie, po pomyślnym opublikowaniu pluginów w npm, promuje przygotowany artefakt kontroli wstępnej npm OpenClaw z pasującym znacznikiem dist-tag. Katalog roboczy wydania pozostaje głównym katalogiem produktu i danych, natomiast planowanie oraz końcowa weryfikacja są wykonywane z dokładnego, zaufanego katalogu roboczego źródła workflow, dzięki czemu starszy commit wydania nie może niepostrzeżenie użyć przestarzałych narzędzi wydawniczych. Przed uruchomieniem jakiegokolwiek procesu podrzędnego publikacji generowana i buforowana jest dokładna treść wydania GitHub. Gdy kompletna, pasująca sekcjaCHANGELOG.mdmieści się w limicie GitHub wynoszącym 125,000 znaków i odpowiadającym mu bezpiecznym limicie mechanizmu renderującego wynoszącym 125,000 bajtów, strona zawiera dokładnie tę sekcję## YYYY.M.PATCHwraz z jej nagłówkiem. Gdy sekcja źródłowa się nie mieści, strona zachowuje dokładne, pogrupowane noty redakcyjne i zastępuje zbyt obszerny rejestr wkładów stabilnym odnośnikiem do pełnego rejestru w plikuCHANGELOG.mdprzypiętym do tagu; częściowe rejestry i ucięte punkty listy nigdy nie są publikowane. Workflow wybiera pełną lub skróconą treść przed dodaniem### Release verification; jeśli końcowa część dowodowa przekroczyłaby limit, zachowuje kanoniczną treść i zamiast tego polega na niezmiennym załączonym dowodzie. Wydania stabilne opublikowane w npmlateststają się najnowszym wydaniem GitHub, natomiast stabilne wydania konserwacyjne pozostawione w npmbetasą tworzone z ustawieniem GitHublatest=false. Workflow przesyła również do wydania GitHub dowody zależności z kontroli wstępnej, manifest pełnej walidacji oraz dowody weryfikacji rejestru po publikacji na potrzeby reagowania na incydenty po wydaniu. Natychmiast wyświetla identyfikatory uruchomień podrzędnych, automatycznie zatwierdza bramki środowiska wydawniczego, które token workflow może zatwierdzić, podsumowuje nieudane zadania podrzędne wraz z końcówkami logów, z góry tworzy wersję roboczą strony wydania GitHub i równolegle z publikacją OpenClaw w npm promuje zasoby Windows i Android, finalizuje stronę wydania oraz dowody zależności po pomyślnym ukończeniu tych etapów, oczekuje na ClawHub zawsze, gdy OpenClaw jest publikowany w npm, a następnie uruchamia weryfikator beta z zaufanej gałęzi głównej i przesyła dowody po publikacji dotyczące wydania GitHub, pakietu npm, wybranych pakietów pluginów npm, wybranych pakietów ClawHub, identyfikatorów uruchomień podrzędnych oraz opcjonalnego identyfikatora uruchomienia NPM Telegram. Weryfikator inicjalizacji ClawHub wymaga dokładnej ścieżki i SHA workflow z zaufanej gałęzi głównej, prób uruchomienia producenta i końcowego, SHA wydania, żądanego zestawu pakietów, niezmiennej krotki artefaktu pakietu oraz artefaktu końcowego odczytu zwrotnego z rejestru; pomyślne starsze uruchomienie z odwołania wydania nie jest akceptowane.Następnie uruchom test akceptacyjny pakietu po publikacji dla opublikowanego pakietu
[email protected]lubopenclaw@beta. Jeśli wypchnięte lub opublikowane wydanie wstępne wymaga poprawki, utwórz następny pasujący numer wydania wstępnego; nigdy nie usuwaj ani nie nadpisuj poprzedniego. -
Po nieudanej próbie publikacji nie zmieniaj SHA wydania, chyba że błąd dowodzi usterki produktu lub dziennika zmian. Wznów pomyślnie ukończone, niezmienne procesy podrzędne i artefakty; nigdy nie przebudowuj ani nie publikuj ponownie wersji pakietu, której publikacja już się powiodła.
-
W przypadku wydania stabilnego kontynuuj dopiero wtedy, gdy sprawdzona wersja beta lub kandydat do wydania ma wymagane dowody walidacji. Publikacja stabilnego wydania w npm również odbywa się przez
OpenClaw Release Publish, ponownie wykorzystując pomyślnie utworzony artefakt kontroli wstępnej za pośrednictwempreflight_run_id. Gotowość stabilnego wydania macOS wymaga również spakowanych plików.zip,.dmg,.dSYM.ziporaz zaktualizowanegoappcast.xmlwmain; workflow publikacji macOS automatycznie publikuje podpisany kanał appcast w publicznymmainpo zweryfikowaniu zasobów wydania albo otwiera lub aktualizuje PR dotyczący appcast, jeśli ochrona gałęzi blokuje bezpośrednie wypchnięcie. Gotowość stabilnego wydania Windows Hub wymaga podpisanych zasobówOpenClawCompanion-Setup-x64.exe,OpenClawCompanion-Setup-arm64.exeorazOpenClawCompanion-SHA256SUMS.txtw wydaniu OpenClaw na GitHub. Przekaż dokładny, podpisany tag wydaniaopenclaw/openclaw-windows-nodejakowindows_node_tagoraz zatwierdzoną dla kandydata mapę skrótów instalatorów jakowindows_node_installer_digests;OpenClaw Release Publishzachowuje wersję roboczą wydania, uruchamiaWindows Node Releasei weryfikuje wszystkie trzy zasoby przed publikacją. -
Po publikacji uruchom weryfikator npm po publikacji, opcjonalny samodzielny test Telegram E2E opublikowanego pakietu npm, gdy potrzebny jest dowód kanału po publikacji, promocję znacznika dist-tag, jeśli jest potrzebna, zweryfikuj wygenerowaną stronę wydania GitHub, wykonaj kroki ogłoszenia wydania, a następnie ukończ finalizację stabilnego wydania na gałęzi głównej, zanim uznasz stabilne wydanie za ukończone.
Finalizacja stabilnego wydania na gałęzi głównej
Publikacja stabilnego wydania nie jest ukończona, dopóki main nie zawiera faktycznie opublikowanego stanu wydania.
- Rozpocznij od świeżej, najnowszej wersji
main. Porównaj z niąrelease/YYYY.M.PATCHi przenieś rzeczywiste poprawki, których brakuje wmain. Nie scalaj bezkrytycznie adapterów zgodności, testów ani walidacji przeznaczonych wyłącznie dla wydania z nowszymmain. - W standardowym przebiegu ustaw
mainna opublikowaną wersję stabilną. Opóźniona finalizacja może użyćmain, gdy osiągnęła już późniejszą stabilną wersję OpenClaw CalVer; nie obniżaj wersji już rozpoczętego cyklu wydawniczego wyłącznie w celu zamknięcia poprzedniego wydania. Walidator nadal wymaga dokładnej sekcji dziennika zmian opublikowanego wydania oraz wpisu appcast i zapisuje faktyczną wersję oraz SHAmain. Uruchompnpm release:preppo każdej zmianie wersji głównej, a następniepnpm deps:shrinkwrap:generate. - Doprowadź sekcję
## YYYY.M.PATCHplikuCHANGELOG.mdwmaindo dokładnej zgodności z otagowaną gałęzią wydania. Uwzględnij aktualizację stabilnegoappcast.xml, jeśli została opublikowana przez wydanie macOS. - Nie dodawaj
YYYY.M.PATCH+1, wersji beta ani pustej sekcji przyszłego dziennika zmian domain, dopóki operator wyraźnie nie rozpocznie tego cyklu wydawniczego. - Uruchom
pnpm release:generated:check,pnpm deps:shrinkwrap:checkorazOPENCLAW_TESTBOX=1 pnpm check:changed. Wypchnij zmiany, a następnie sprawdź, czyorigin/mainzawiera opublikowaną wersję i dziennik zmian, zanim uznasz stabilne wydanie za ukończone. - Po każdej prywatnej próbie wycofania utrzymuj aktualne zmienne repozytorium
RELEASE_ROLLBACK_DRILL_IDorazRELEASE_ROLLBACK_DRILL_DATE.
OpenClaw Stable Main Closeout rozpoczyna się od wypchnięcia main, które po publikacji stabilnego wydania zawiera opublikowaną wersję, dziennik zmian oraz appcast. Odczytuje niezmienne dowody po publikacji, aby powiązać opublikowany tag z jego uruchomieniami pełnej walidacji wydania i publikacji, a następnie weryfikuje stan stabilnej gałęzi głównej, wydanie, obowiązkowy okres obserwacji wydania stabilnego oraz blokujące dowody wydajności. Dołącza do wydania GitHub niezmienny manifest finalizacji oraz sumę kontrolną. Automatyczny wyzwalacz wypchnięcia pomija starsze wydania sprzed wprowadzenia niezmiennych dowodów po publikacji i nigdy nie uznaje takiego pominięcia za ukończoną finalizację.
Pełna finalizacja wymaga obu zasobów i pasującej sumy kontrolnej. Częściowy manifest ponownie odtwarza zapisane SHA main i próbę wycofania, aby wygenerować identyczne bajty, a następnie dołącza brakującą sumę kontrolną; nieprawidłowa para lub suma kontrolna bez manifestu nadal blokuje proces. Uruchomienie wyzwolone wypchnięciem bez zmiennych repozytorium próby wycofania zostaje pominięte bez ukończenia finalizacji; brakujący lub starszy niż 90 dni zapis próby nadal blokuje ręczną finalizację opartą na dowodach. Prywatne polecenia odzyskiwania pozostają w podręczniku dostępnym wyłącznie dla opiekunów. Ręczne uruchomienie służy wyłącznie do naprawy lub ponownego odtworzenia opartej na dowodach finalizacji wydania stabilnego.
Jeśli nadrzędny proces publikacji wydania zakończył się niepowodzeniem dopiero po dołączeniu niezmiennych dowodów npm/pluginów, najpierw napraw i opublikuj wszystkie zasoby stabilnego wydania dla poszczególnych platform. Następnie opiekun może ręcznie uruchomić finalizację z allow_failed_publish_recovery=true; ten tryb akceptuje wyłącznie ukończony, nieudany proces nadrzędny i dodatkowo wymaga dokładnych kontraktów zasobów Android i Windows, skrótów SHA-256 GitHub, weryfikacji sum kontrolnych, pochodzenia Android oraz pomyślnej promocji Windows uruchomionej przez proces nadrzędny, której kontrole Authenticode i zatwierdzone dla kandydata skróty odpowiadają opublikowanym instalatorom, wraz ze standardowymi kontrolami macOS/appcast. Automatyczna finalizacja po wypchnięciu nigdy nie włącza tego trybu odzyskiwania.
Starszy tag korekty awaryjnej może ponownie wykorzystać dowody pakietu bazowego tylko wtedy, gdy tag korekty wskazuje ten sam commit źródłowy co bazowy tag stabilny. Jego wydanie Android ponownie wykorzystuje zweryfikowany plik APK bazowego tagu i dodaje pochodzenie dla tagu korekty. Korekta z innym źródłem musi opublikować i zweryfikować własne dowody pakietu oraz użyć wyższego versionCode Android.
Kontrola wstępna wydania
-
Uruchom
pnpm check:test-typesprzed kontrolą wstępną wydania, aby testowy kod TypeScript pozostawał objęty kontrolą poza szybszą lokalną bramkąpnpm check. -
Uruchom
pnpm check:architectureprzed kontrolą wstępną wydania, aby szersze kontrole cykli importów i granic architektury zakończyły się pomyślnie poza szybszą lokalną bramką. -
Uruchom
pnpm build && pnpm ui:buildprzedpnpm release:check, aby oczekiwane artefakty wydaniadist/*i pakiet Control UI istniały na potrzeby etapu walidacji pakietu. -
Uruchom
pnpm release:preppo zmianie wersji głównej i przed utworzeniem tagu. Polecenie uruchamia każdy deterministyczny generator wydania, którego wynik często ulega rozbieżności po zmianie wersji, konfiguracji lub API: wersje pluginów, pliki shrinkwrap npm, inwentarz pluginów, podstawowy schemat konfiguracji, metadane konfiguracji dołączonych kanałów, bazową wersję dokumentacji konfiguracji, eksporty SDK pluginów oraz bazową wersję API SDK pluginów.pnpm release:checkponownie uruchamia te zabezpieczenia w trybie kontroli (wraz z kontrolą budżetu powierzchni SDK pluginów) i w jednym przebiegu zgłasza wszystkie rozbieżności wygenerowanych plików przed uruchomieniem kontroli wydania pakietów. -
Synchronizacja wersji pluginów domyślnie aktualizuje możliwy do opublikowania pakiet środowiska wykonawczego
@openclaw/ai, wersje oficjalnych pakietów pluginów oraz istniejące dolne graniceopenclaw.compat.pluginApido wersji wydania OpenClaw. Traktuj to pole jako minimalną wersję API SDK/środowiska wykonawczego pluginów, a nie wyłącznie kopię wersji pakietu: w przypadku wydań dotyczących wyłącznie pluginów, które celowo zachowują zgodność ze starszymi hostami OpenClaw, pozostaw tę granicę na poziomie najstarszego obsługiwanego API hosta i udokumentuj ten wybór w dowodach wydania pluginu. -
Przed zatwierdzeniem wydania ręcznie uruchom workflow
Full Release Validation, aby z jednego punktu wejścia uruchomić wszystkie środowiska testowe wydania wstępnego. Przyjmuje gałąź, tag lub pełne SHA commitu, uruchamia ręczneCIoraz uruchamiaOpenClaw Release Checksna potrzeby testu podstawowego instalacji, akceptacji pakietu, międzyplatformowych kontroli pakietów, zgodności QA Lab, Matrix i ścieżek Telegram. Uruchomienia stabilne i pełne zawsze obejmują wyczerpujące testy live/E2E oraz długotrwałe testy ścieżki wydawniczej Docker;run_release_soak=truezachowano na potrzeby jawnie wybranego długotrwałego testu wersji beta. Akceptacja pakietu zapewnia kanoniczny test Telegram E2E pakietu podczas walidacji kandydata, co pozwala uniknąć drugiego równoległego mechanizmu odpytywania na żywo.Po opublikowaniu wersji beta podaj
release_package_spec, aby ponownie wykorzystać opublikowany pakiet npm w kontrolach wydania, akceptacji pakietu oraz teście Telegram E2E pakietu bez ponownego budowania archiwum tar wydania. Podajnpm_telegram_package_spectylko wtedy, gdy Telegram ma używać innego opublikowanego pakietu niż pozostała część walidacji wydania. Podajpackage_acceptance_package_spec, gdy akceptacja pakietu ma używać innego opublikowanego pakietu niż specyfikacja pakietu wydania. Podajevidence_package_spec, gdy raport dowodów wydania ma potwierdzać zgodność walidacji z opublikowanym pakietem npm bez wymuszania testu Telegram E2E.bash node scripts/full-release-validation-at-sha.mjs \ --sha <code-sha> \ --target-ref release/YYYY.M.PATCH -
Uruchom ręcznie przepływ pracy
Package Acceptance, gdy potrzebne jest niezależne potwierdzenie kandydata pakietu podczas trwania prac nad wydaniem. Użyjsource=npmdlaopenclaw@beta,openclaw@latestlub dokładnej wersji wydania;source=ref, aby spakować zaufaną gałąź/znacznik/SHApackage_refprzy użyciu bieżącego środowiska testowegoworkflow_ref;source=urldla publicznego archiwum tar dostępnego przez HTTPS, z wymaganym SHA-256 i rygorystycznymi zasadami dotyczącymi publicznych adresów URL;source=trusted-urldla nazwanych zasad zaufanego źródła z wymaganymitrusted_source_idi SHA-256; albosource=artifactdla archiwum tar przesłanego przez inne uruchomienie GitHub Actions.Przepływ pracy rozpoznaje kandydata jako
package-under-test, ponownie wykorzystuje harmonogram wydań Docker E2E dla tego archiwum tar i może uruchomić kontrolę jakości Telegram dla tego samego archiwum tar przy użyciutelegram_mode=mock-openailubtelegram_mode=live-frontier. Gdy wybrane ścieżki Docker obejmująpublished-upgrade-survivor, artefakt pakietu jest kandydatem, apublished_upgrade_survivor_baselinewybiera opublikowaną wersję bazową.update-restart-authużywa pakietu kandydata zarówno jako zainstalowanego CLI, jak i pakietu poddawanego testom, dzięki czemu sprawdza ścieżkę zarządzanego ponownego uruchomienia polecenia aktualizacji kandydata.Przykład:
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 [email protected] -f telegram_mode=mock-openaiTypowe profile:
smoke: ścieżki instalacji/kanału/agenta, sieci Gateway i ponownego wczytywania konfiguracjipackage: natywne dla artefaktu ścieżki pakietu/aktualizacji/ponownego uruchomienia/pluginów bez OpenWebUI ani aktywnego ClawHubproduct: profil pakietu oraz kanały MCP, czyszczenie zadań Cron/podagentów, wyszukiwanie internetowe OpenAI i OpenWebUIfull: fragmenty ścieżki wydania Docker z OpenWebUIcustom: dokładny wybórdocker_lanesna potrzeby ukierunkowanego ponownego uruchomienia
-
Uruchom bezpośrednio ręczny przepływ pracy
CI, gdy potrzebne jest tylko deterministyczne pokrycie standardowego CI dla kandydata do wydania. Ręczne uruchomienia CI pomijają ograniczanie zakresu na podstawie zmian i wymuszają fragmenty Linux Node, fragmenty dołączonych pluginów, fragmenty kontraktów pluginów i kanałów, zgodność z Node 22,check-*,check-additional-*, testy dymne zbudowanych artefaktów, kontrole dokumentacji, Python Skills, Windows, macOS oraz ścieżki internacjonalizacji Control UI. Samodzielne ręczne uruchomienia CI obejmują Android tylko po uruchomieniu zinclude_android=true;Full Release Validationprzekazuje ten parametr do podrzędnego procesu CI.bash gh workflow run ci.yml --ref release/YYYY.M.PATCH -f include_android=true -
Uruchom
pnpm qa:otel:smokepodczas walidacji telemetrii wydania. Sprawdza ono laboratorium kontroli jakości za pośrednictwem lokalnego odbiornika OTLP/HTTP oraz weryfikuje eksport śladów, metryk i dzienników, a także ograniczone atrybuty śladów i redagowanie treści/identyfikatorów bez konieczności użycia Opik, Langfuse ani innego zewnętrznego kolektora. -
Uruchom
pnpm qa:otel:collector-smokepodczas walidacji zgodności kolektora. Kieruje ono ten sam eksport OTLP z laboratorium kontroli jakości przez rzeczywisty kontener Docker OpenTelemetry Collector przed wykonaniem asercji lokalnego odbiornika. -
Uruchom
pnpm qa:prometheus:smokepodczas walidacji chronionego pobierania danych Prometheus. Sprawdza ono laboratorium kontroli jakości, odrzuca nieuwierzytelnione pobieranie danych i weryfikuje, że rodziny metryk krytyczne dla wydania nie zawierają treści monitów, nieprzetworzonych identyfikatorów, tokenów uwierzytelniających ani lokalnych ścieżek. -
Uruchom
pnpm qa:observability:smoke, aby kolejno wykonać ścieżki testów dymnych OpenTelemetry i Prometheus z kodu źródłowego. -
Uruchom
pnpm release:checkprzed każdym oznaczonym wydaniem. -
Kontrola wstępna
OpenClaw NPM Releasegeneruje dowody dotyczące zależności wydania przed spakowaniem archiwum tar npm. Bramka podatności z komunikatów bezpieczeństwa npm blokuje wydanie. Raporty dotyczące ryzyka manifestu zależności przechodnich, własności zależności/powierzchni instalacji oraz zmian zależności stanowią wyłącznie dowody wydania. Raport zmian zależności porównuje kandydata do wydania z poprzednim osiągalnym znacznikiem wydania. Kontrola wstępna przesyła dowody dotyczące zależności jakoopenclaw-release-dependency-evidence-<tag>, a także osadza je wdependency-evidence/wewnątrz przygotowanego artefaktu kontroli wstępnej npm. Właściwa ścieżka publikacji ponownie wykorzystuje ten artefakt kontroli wstępnej, a następnie dołącza te same dowody do wydania GitHub jakoopenclaw-<version>-dependency-evidence.zip. -
Uruchom
OpenClaw Release Publishdla sekwencji publikacji wprowadzającej zmiany po utworzeniu znacznika. Standardowe publikacje beta i stabilne uruchamiaj z zaufanegomain; znacznik wydania nadal wybiera dokładny docelowy commit i może wskazywać narelease/YYYY.M.PATCH. Publikacje alfa Tideclaw pozostają na odpowiadającej im gałęzi alfa. Przekaż pomyślnepreflight_run_idnpm OpenClaw, pomyślnefull_release_validation_run_idoraz dokładnefull_release_validation_run_attempt, a domyślny zakres publikacji pluginówall-publishablepozostaw bez zmian, chyba że celowo wykonywana jest ukierunkowana naprawa. Przepływ pracy wykonuje kolejno publikację pluginów npm, publikację pluginów w ClawHub oraz publikację OpenClaw w npm, aby pakiet podstawowy nie został opublikowany przed jego wyodrębnionymi pluginami; promocja Windows i Android przebiega równolegle z publikacją pakietu podstawowego w npm względem wersji roboczej strony wydania. Ponowne uruchomienia publikacji można wznawiać: już opublikowana podstawowa wersja npm pomija uruchomienie publikacji pakietu podstawowego po wykazaniu przez przepływ pracy, że archiwum tar w rejestrze jest zgodne z artefaktem kontroli wstępnej znacznika, a promocja Windows/Android jest pomijana, gdy wydanie zawiera już zweryfikowany kontrakt artefaktów, dzięki czemu ponowna próba wykonuje tylko etapy zakończone niepowodzeniem. Ukierunkowane naprawy dotyczące wyłącznie pluginów wymagająplugin_publish_scope=selectedoraz niepustej listy pluginów. Uruchomieniaall-publishabledotyczące wyłącznie pluginów wymagają kompletnych, niezmiennych dowodów kontroli wstępnej i pełnej walidacji wydania; częściowe dowody są odrzucane. -
Stabilne
OpenClaw Release Publishwymaga dokładnegowindows_node_tagpo utworzeniu odpowiadającego wydaniaopenclaw/openclaw-windows-node, które nie jest wersją wstępną, oraz zatwierdzonej dla kandydata mapywindows_node_installer_digests. Przed uruchomieniem jakiegokolwiek podrzędnego procesu publikacji sprawdza, czy wydanie źródłowe jest opublikowane, nie jest wersją wstępną, zawiera wymagane instalatory x64/ARM64 i nadal jest zgodne z zatwierdzoną mapą. Następnie uruchamiaWindows Node Release, gdy wydanie OpenClaw jest nadal wersją roboczą, przekazując bez zmian przypiętą mapę skrótów instalatorów. Podrzędny przepływ pracy pobiera podpisane instalatory Windows Hub z dokładnie tego znacznika, porównuje je z przypiętymi skrótami, weryfikuje na maszynie wykonawczej Windows, że ich podpisy Authenticode używają oczekiwanego podpisującego OpenClaw Foundation, zapisuje manifest SHA-256 i przesyła instalatory wraz z manifestem do kanonicznego wydania OpenClaw w GitHub, po czym ponownie pobiera promowane artefakty oraz weryfikuje ich obecność w manifeście i skróty. Przed publikacją nadrzędny przepływ pracy weryfikuje bieżący kontrakt artefaktów x64, ARM64 i sum kontrolnych. Bezpośrednie odzyskiwanie odrzuca nieoczekiwane nazwy artefaktówOpenClawCompanion-*przed zastąpieniem oczekiwanych artefaktów kontraktu przypiętymi bajtami źródłowymi.Ręcznie uruchamiaj
Windows Node Releasewyłącznie w celu odzyskiwania i zawsze przekazuj dokładny znacznik, nigdylatest, wraz z jawną mapą JSONexpected_installer_digestsz zatwierdzonego wydania źródłowego. Łącza pobierania w witrynie powinny wskazywać dokładne adresy URL artefaktów bieżącego stabilnego wydania OpenClaw alboreleases/latest/download/...dopiero po zweryfikowaniu, że przekierowanie GitHub do najnowszego wydania wskazuje to samo wydanie; nie należy podawać wyłącznie łącza do strony wydania w repozytorium towarzyszącym. -
Kontrole wydania są teraz uruchamiane w osobnym ręcznym przepływie pracy:
OpenClaw Release Checks. Uruchamia on również ścieżkę zgodności makiet QA Lab oraz profil wydania Matrix i ścieżkę QA Telegram przed zatwierdzeniem wydania. Ścieżki na żywo używają środowiskaqa-live-shared; Telegram używa również dzierżaw poświadczeń CI Convex. Uruchom ręczny przepływ pracyQA-Lab - All Laneszmatrix_profile=all, aby wykonać wszystkie utrzymywane scenariusze Matrix; przepływ pracy rozdziela ten wybór między profile transportu, multimediów i E2EE, aby pełny zestaw dowodów mieścił się w limitach czasu poszczególnych zadań. -
Walidacja środowiska uruchomieniowego instalacji i aktualizacji między systemami operacyjnymi jest częścią publicznych
OpenClaw Release ChecksiFull Release Validation, które bezpośrednio wywołują przepływ pracy wielokrotnego użytku.github/workflows/openclaw-cross-os-release-checks-reusable.yml. Ten podział jest celowy: rzeczywista ścieżka wydania npm pozostaje krótka, deterministyczna i skoncentrowana na artefaktach, natomiast wolniejsze kontrole na żywo pozostają we własnej ścieżce, dzięki czemu nie wstrzymują ani nie blokują publikacji. -
Kontrole wydania korzystające z sekretów należy uruchamiać przez
Full Release Validationlub z referencji przepływu pracymain/release, aby logika przepływu pracy i sekrety pozostawały pod kontrolą. -
OpenClaw Release Checksprzyjmuje gałąź, tag lub pełny SHA commitu, o ile rozpoznany commit jest osiągalny z gałęzi OpenClaw lub tagu wydania. -
Wstępna kontrola
OpenClaw NPM Releasesłużąca wyłącznie do walidacji przyjmuje również bieżący pełny, 40-znakowy SHA commitu gałęzi przepływu pracy bez wymagania wypchniętego tagu. Ta ścieżka SHA służy wyłącznie do walidacji i nie może zostać przekształcona w rzeczywistą publikację. W trybie SHA przepływ pracy syntetyzujev<package.json version>wyłącznie na potrzeby kontroli metadanych pakietu; rzeczywista publikacja nadal wymaga rzeczywistego tagu wydania. -
Oba przepływy pracy zachowują rzeczywistą ścieżkę publikacji i promocji na runnerach hostowanych przez GitHub, natomiast niemodyfikująca ścieżka walidacji może korzystać z większych runnerów Blacksmith Linux.
-
Ten przepływ pracy uruchamia
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cache, używając obu sekretów przepływu pracy:OPENAI_API_KEYiANTHROPIC_API_KEY. -
Wstępna kontrola wydania npm nie czeka już na osobną ścieżkę kontroli wydania.
-
Przed lokalnym oznaczeniem kandydata do wydania tagiem uruchom
RELEASE_TAG=vYYYY.M.PATCH-beta.N pnpm release:fast-pretag-check. Narzędzie pomocnicze uruchamia szybkie zabezpieczenia wydania, kontrole wydania pluginów npm/ClawHub, kompilację, kompilację interfejsu użytkownika orazrelease:openclaw:npm:checkw kolejności pozwalającej wykryć typowe błędy blokujące zatwierdzenie przed uruchomieniem przepływu publikacji GitHub. -
Przed zatwierdzeniem uruchom
RELEASE_TAG=vYYYY.M.PATCH node --import tsx scripts/openclaw-npm-release-check.ts(lub odpowiadający mu tag wersji przedpremierowej/korygującej). -
Po publikacji npm uruchom
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.PATCH(lub odpowiadającą mu wersję beta/korygującą), aby zweryfikować ścieżkę instalacji z opublikowanego rejestru w nowym prefiksie tymczasowym. -
Po publikacji wersji beta uruchom
[email protected] OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=ci pnpm test:docker:npm-telegram-live, aby zweryfikować wdrażanie z 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 przez opiekunów mogą pominąć zmienne Convex i przekazać bezpośrednio trzy poświadczenia środowiskoweOPENCLAW_QA_TELEGRAM_*. -
Aby uruchomić pełny test dymny wersji beta po publikacji z komputera opiekuna, użyj
pnpm release:beta-smoke -- --beta betaN. Narzędzie pomocnicze uruchamia walidację aktualizacji npm i nowego celu w Parallels, wywołujeNPM Telegram Beta E2E, odpytuje dokładnie ten przebieg przepływu pracy, pobiera artefakt i wyświetla raport Telegram. -
Opiekunowie mogą uruchomić tę samą kontrolę po publikacji z GitHub Actions za pomocą ręcznego przepływu pracy
NPM Telegram Beta E2E. Celowo jest on wyłącznie ręczny i nie jest uruchamiany przy każdym scaleniu. -
Automatyzacja wydania dla opiekunów korzysta ze schematu „wstępna kontrola, następnie promocja”:
- Rzeczywista publikacja npm musi przejść pomyślną wstępną kontrolę npm
preflight_run_id. - Standardowa orkiestracja i wstępna kontrola publikacji wersji beta i stabilnej używa zaufanego
mainwzględem dokładnego tagu docelowego. Publikacja i wstępna kontrola wersji alfa Tideclaw używa odpowiadającej jej gałęzi alfa. - Stabilne wydania npm domyślnie używają
beta; publikacja stabilnego wydania npm może jawnie wskazaćlatestza pomocą danych wejściowych przepływu pracy. - Modyfikacja dist-tag npm oparta na tokenie znajduje się 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 wyłącznie do walidacji; jeśli tag istnieje tylko na gałęzi wydania, ale przepływ pracy jest wywoływany zmain, ustawpublic_release_branch=release/YYYY.M.PATCH. - Rzeczywista publikacja macOS musi przejść pomyślnie kontrole macOS
preflight_run_idivalidate_run_id. - Rzeczywiste ścieżki publikacji promują przygotowane artefakty zamiast ponownie je kompilować.
- Rzeczywista publikacja npm musi przejść pomyślną wstępną kontrolę npm
-
W przypadku stabilnych wydań korygujących, takich jak
YYYY.M.PATCH-N, weryfikator po publikacji sprawdza również tę samą ścieżkę aktualizacji z prefiksem tymczasowym zYYYY.M.PATCHdoYYYY.M.PATCH-N, aby poprawki wydania nie mogły niezauważenie pozostawić starszych instalacji globalnych z podstawowym stabilnym ładunkiem. -
Wstępna kontrola wydania npm kończy się niepowodzeniem, jeśli tarball nie zawiera zarówno
dist/control-ui/index.html, jak i niepustego ładunkudist/control-ui/assets/, aby nie opublikować ponownie pustego panelu przeglądarkowego. -
Weryfikacja po publikacji sprawdza również, czy opublikowane punkty wejścia pluginów i metadane pakietów są obecne w układzie zainstalowanego rejestru. Wydanie bez wymaganych ładunków środowiska uruchomieniowego pluginów nie przechodzi weryfikatora po publikacji i nie może zostać promowane do
latest. -
pnpm test:install:smokeegzekwuje również budżetunpackedSizedla npm pack względem tarballa aktualizacji kandydata, dzięki czemu instalacyjne e2e wykrywa przypadkowe zwiększenie rozmiaru paczki przed ścieżką publikacji wydania. -
Jeśli prace nad wydaniem obejmowały planowanie CI, manifesty czasów rozszerzeń lub macierze testów rozszerzeń, przed zatwierdzeniem ponownie wygeneruj i przejrzyj wyniki macierzy
plugin-prerelease-extension-shardnależące do planera z.github/workflows/plugin-prerelease.yml, aby informacje o wydaniu nie opisywały nieaktualnego układu CI. -
Gotowość stabilnego wydania macOS obejmuje również powierzchnie aktualizatora: wydanie GitHub musi ostatecznie zawierać spakowane
.zip,.dmgi.dSYM.zip;appcast.xmlwmainmusi po publikacji wskazywać nowy stabilny plik zip (przepływ publikacji macOS zatwierdza go automatycznie lub otwiera PR appcast, gdy bezpośrednie wypchnięcie jest zablokowane); spakowana aplikacja musi zachować identyfikator pakietu inny niż debugowy, niepusty adres URL kanału Sparkle orazCFBundleVersionna poziomie co najmniej kanonicznego minimum kompilacji Sparkle dla tej wersji wydania.
Środowiska testowe wydania
Full Release Validation umożliwia operatorom uruchomienie pełnej macierzy produktu z jednego punktu wejścia. Użyj narzędzia pomocniczego, aby każdy podrzędny przepływ pracy działał z tymczasowej gałęzi przypiętej do jednego zaufanego SHA przepływu pracy main, podczas gdy żądany commit pozostaje testowanym kandydatem:
pnpm ci:full-release \ --sha <code-sha> \ --target-ref release/YYYY.M.PATCHNarzędzie pomocnicze pobiera bieżący origin/main, wypycha release-ci/<workflow-sha>-... z tym zaufanym commitem przepływu pracy, wyprowadza beta z wersji pakietów alfa/beta, a w pozostałych przypadkach stable, wywołuje Full Release Validation z tymczasowej gałęzi z ref=<target-sha>, sprawdza, czy każdy podrzędny przepływ pracy headSha odpowiada przypiętemu SHA nadrzędnego przepływu pracy, a następnie usuwa tymczasową gałąź. Przekaż -f reuse_evidence=false, aby wymusić nowy przebieg, -f release_profile=full dla szerokiego opcjonalnego przeglądu lub --workflow-sha <trusted-main-sha>, aby przypiąć starszy commit, który nadal jest osiągalny z bieżącego origin/main. Sam przepływ pracy nigdy nie zapisuje referencji repozytorium. Dzięki temu narzędzia wydania dostępne wyłącznie na gałęzi main pozostają dostępne bez dodawania commitów narzędziowych do kandydata i można uniknąć przypadkowego potwierdzenia nowszego podrzędnego przebiegu main.
Gdy Code SHA ma stan zielony, zatwierdź wyłącznie CHANGELOG.md i uruchom to samo narzędzie pomocnicze z Release SHA:
pnpm ci:full-release \ --sha <release-sha> \ --target-ref release/YYYY.M.PATCHDrugi przebieg nadrzędny ponownie wykorzystuje dowody produktu tylko wtedy, gdy GitHub potwierdzi, że Release SHA pochodzi od Code SHA, a pełny zestaw zmienionych ścieżek to dokładnie CHANGELOG.md. Rejestruje changelog-only-release-v1 i nie wywołuje żadnych procesów podrzędnych produktu. Wstępna kontrola npm oraz akceptacja pakietu/instalacji nadal działają na Release SHA, ponieważ zmieniły się bajty jego tarballa.
Dla nowego Code SHA przepływ pracy rozpoznaje cel, wywołuje ręczny CI, a następnie OpenClaw Release Checks. OpenClaw Release Checks rozdziela test dymny instalacji, kontrole wydania między systemami operacyjnymi, pokrycie ścieżki wydania Docker na żywo/E2E, gdy włączony jest test długotrwały, akceptację pakietu z kanonicznym E2E pakietu Telegram, zgodność QA Lab, Matrix na żywo i Telegram na żywo. Pełny przebieg typu all jest akceptowalny tylko wtedy, gdy podsumowanie Full Release Validation wskazuje normal_ci, plugin_prerelease i release_checks jako zakończone powodzeniem, chyba że ukierunkowane ponowne uruchomienie celowo pominęło osobny proces podrzędny Plugin Prerelease. Używaj samodzielnego procesu podrzędnego 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 przebiegu podrzędnego, dzięki czemu menedżer wydania może zobaczyć bieżącą ścieżkę krytyczną bez pobierania dzienników.
Proces podrzędny wydajności produktu w tej ścieżce wydania działa wyłącznie na artefaktach. Nadrzędny
przepływ wywołuje go z publish_reports=false, a walidacja zostaje odrzucona,
jeśli jego zabezpieczenie trybu wyłącznie artefaktowego nie potwierdzi, że publikator raportu Clawgrit pozostał
pominięty.
Pełną macierz etapów, dokładne nazwy zadań przepływu pracy, różnice między profilem stabilnym a pełnym, artefakty oraz uchwyty ukierunkowanych ponownych uruchomień opisano w sekcji Pełna walidacja wydania.
Podrzędne przepływy pracy są wywoływane z zaufanej referencji przypiętej do SHA, która uruchamia Full Release Validation. Każdy przebieg podrzędny musi używać dokładnego SHA nadrzędnego przepływu pracy. Nie używaj bezpośrednich wywołań --ref main -f ref=<sha> jako dowodu wydania; użyj pnpm ci:full-release --sha <target-sha> --target-ref release/YYYY.M.PATCH.
Użyj release_profile, aby wybrać zakres działania na żywo/dostawców:
beta: najszybsza, krytyczna dla wydania ścieżka OpenAI/core na żywo i Dockerstable: wersja beta oraz pokrycie stabilnych dostawców/backendów do zatwierdzenia wydaniafull: profil stabilny oraz szerokie opcjonalne pokrycie dostawców/multimediów
Walidacja stabilna i pełna zawsze uruchamiają przed promocją wyczerpujące testy na żywo/E2E, ścieżkę wydania Docker oraz ograniczony przegląd zachowania aktualizacji opublikowanych pakietów. Użyj run_release_soak=true, aby zażądać tego samego przeglądu dla wersji beta. Przegląd obejmuje cztery najnowsze stabilne pakiety oraz przypięte poziomy bazowe 2026.4.23 i 2026.5.2, a także pokrycie starszych 2026.4.15; zduplikowane poziomy bazowe są usuwane, a każdy poziom bazowy jest dzielony na osobne zadanie runnera Docker.
OpenClaw Release Checks używa zaufanej referencji przepływu pracy, aby jednokrotnie rozpoznać referencję docelową jako release-package-under-test, i ponownie wykorzystuje ten artefakt w kontrolach między systemami operacyjnymi, akceptacji pakietu oraz kontrolach ścieżki wydania Docker podczas testu długotrwałego. Dzięki temu wszystkie środowiska dotyczące pakietu używają tych samych bajtów i unikają wielokrotnych kompilacji pakietu. Gdy wersja beta jest już dostępna w npm, ustaw [email protected], aby kontrole wydania jednokrotnie pobrały opublikowany pakiet, wyodrębniły SHA źródła kompilacji z dist/build-info.json i ponownie wykorzystały ten artefakt w kontrolach między systemami operacyjnymi, akceptacji pakietu, ścieżce wydania Docker oraz ścieżkach pakietu Telegram.
Międzysystemowy test dymny instalacji OpenAI używa OPENCLAW_CROSS_OS_OPENAI_MODEL, gdy ustawiono zmienną repozytorium/organizacji, a w przeciwnym razie openai/gpt-5.6-luna, ponieważ ta ścieżka potwierdza instalację pakietu, wdrażanie, uruchomienie Gateway oraz pojedynczy przebieg agenta na żywo, a nie porównuje możliwości najbardziej zaawansowanego modelu. Szersza macierz dostawców na żywo pozostaje miejscem pokrycia specyficznego dla modeli.
Użyj tych wariantów zależnie od etapu wydania:
# Zweryfikuj SHA kodu kompletnego produktu.pnpm ci:full-release \ --sha <code-sha> \ --target-ref release/YYYY.M.PATCH # Zweryfikuj SHA wydania obejmującego tylko dziennik zmian, ponownie wykorzystując dowody produktu dla SHA kodu.pnpm ci:full-release \ --sha <release-sha> \ --target-ref release/YYYY.M.PATCH # Po opublikowaniu wersji beta dodaj test E2E Telegram dla opublikowanego pakietu.pnpm ci:full-release \ --sha <release-sha> \ --target-ref release/YYYY.M.PATCH \ -f [email protected] \ -f [email protected] \ -f npm_telegram_provider_mode=mock-openaiNie używaj pełnego procesu nadrzędnego jako pierwszego ponownego uruchomienia po ukierunkowanej poprawce. Jeśli jedno środowisko zakończy się niepowodzeniem, jako kolejnego dowodu użyj zakończonego niepowodzeniem podrzędnego przepływu pracy, zadania, ścieżki Docker, profilu pakietu, dostawcy modelu lub ścieżki QA. Ponownie uruchom pełny proces nadrzędny tylko wtedy, gdy poprawka zmieniła współdzieloną orkiestrację wydania lub zdezaktualizowała wcześniejsze dowody ze wszystkich środowisk. Końcowy weryfikator procesu nadrzędnego ponownie sprawdza zapisane identyfikatory uruchomień podrzędnych przepływów pracy, dlatego po pomyślnym ponownym uruchomieniu podrzędnego przepływu pracy uruchom ponownie tylko zakończone niepowodzeniem zadanie nadrzędne Verify full validation.
rerun_group=all może ponownie wykorzystać wcześniejsze pomyślne uruchomienie procesu nadrzędnego, gdy profil wydania,
obowiązujące ustawienie testu długotrwałego i dane wejściowe walidacji są zgodne, a docelowy SHA
jest identyczny albo nowy cel jest potomkiem, którego pełny zestaw zmienionych ścieżek
to dokładnie CHANGELOG.md. Ponowne wykorzystanie dokładnego celu zapisuje
exact-target-full-validation-v1; SHA wydania po walidacji zapisuje
changelog-only-release-v1. Ten drugi wariant ponownie wykorzystuje wyłącznie walidację produktu. Wstępna
kontrola npm, bajty pakietu, pochodzenie informacji o wydaniu oraz akceptacja instalacji/aktualizacji
muszą nadal zostać przeprowadzone względem SHA wydania. Każda zmiana wersji, źródła, wygenerowanych
elementów, zależności, pakietu lub celu należącego do przepływu pracy wymaga nowego SHA kodu
i nowej pełnej walidacji. Nowsze uruchomienia procesu nadrzędnego dla tego samego odwołania release/* i
grupy ponownych uruchomień automatycznie zastępują trwające uruchomienia. Przekaż
reuse_evidence=false, aby wymusić nowe pełne uruchomienie.
W celu ograniczonego odzyskiwania przekaż rerun_group do procesu nadrzędnego. all jest właściwym uruchomieniem kandydata do wydania, ci uruchamia wyłącznie standardowy podrzędny proces CI, plugin-prerelease uruchamia wyłącznie podrzędny proces Plugin przeznaczony tylko dla wydania, release-checks uruchamia wszystkie środowiska 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/wszystkie uruchomienia korzystają z kanonicznego testu E2E Telegram pakietu w ramach akceptacji pakietu. Ukierunkowane ponowne uruchomienia między systemami operacyjnymi mogą dodać cross_os_suite_filter=windows/packaged-upgrade lub inny filtr systemu operacyjnego/zestawu. Niepowodzenia kontroli wydania QA blokują standardową walidację wydania, w tym wymagane wykrywanie rozbieżności dynamicznych narzędzi OpenClaw w standardowym poziomie. Uruchomienia alfa Tideclaw mogą nadal traktować ścieżki kontroli wydania niezwiązane z bezpieczeństwem pakietu jako informacyjne. Przy release_profile=beta zestawy dostawców działających na żywo Run repo/live E2E validation są informacyjne (ostrzeżenia, nie blokady); profile stabilne i pełne nadal traktują je jako blokujące. Gdy live_suite_filter jawnie żąda kontrolowanej ścieżki QA działającej na żywo, takiej jak Discord, WhatsApp lub Slack, odpowiednia zmienna repozytorium OPENCLAW_RELEASE_QA_*_LIVE_CI_ENABLED musi być włączona; w przeciwnym razie przechwytywanie danych wejściowych kończy się niepowodzeniem zamiast po cichu pomijać ścieżkę.
Vitest
Środowisko Vitest jest ręcznym podrzędnym przepływem pracy CI. Ręczny proces CI celowo pomija ograniczanie zakresu według zmian i wymusza standardowy graf testów dla kandydata do wydania: fragmenty Linux Node, fragmenty dołączonych Pluginów, fragmenty kontraktów Pluginów i kanałów, zgodność z Node 22, check-*, check-additional-*, testy dymne zbudowanych artefaktów, kontrole dokumentacji, Skills Python, Windows, macOS oraz internacjonalizację interfejsu Control UI. Android jest uwzględniany, gdy Full Release Validation uruchamia środowisko, ponieważ proces nadrzędny przekazuje include_android=true; samodzielny ręczny proces CI wymaga include_android=true, aby objąć Androida.
Użyj tego środowiska, aby odpowiedzieć na pytanie „czy drzewo źródłowe przeszło pełny standardowy zestaw testów?”. Nie jest to to samo co walidacja produktu na ścieżce wydania. Dowody, które należy zachować:
- podsumowanie
Full Release Validationzawierające adres URL uruchomionego procesuCI - pomyślne uruchomienie
CIdla dokładnego docelowego SHA - nazwy zakończonych niepowodzeniem lub powolnych fragmentów z zadań CI podczas badania regresji
- artefakty pomiarów czasu Vitest, takie jak
.artifacts/vitest-shard-timings.json, gdy uruchomienie wymaga analizy wydajności
Uruchom ręczny proces CI bezpośrednio tylko wtedy, gdy wydanie wymaga deterministycznego standardowego procesu CI, ale nie środowisk Docker, QA Lab, działających na żywo, między systemami operacyjnymi ani pakietowych. Użyj pierwszego polecenia dla bezpośredniego procesu CI bez Androida. Dodaj include_android=true, gdy bezpośredni proces 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
Środowisko Docker znajduje się w OpenClaw Release Checks poprzez openclaw-live-and-e2e-checks-reusable.yml, wraz z przepływem pracy install-smoke w trybie wydania. Weryfikuje ono kandydata do wydania za pomocą spakowanych środowisk Docker, a nie wyłącznie testów na poziomie źródeł.
Zakres Docker dla wydania obejmuje:
- pełny test dymny instalacji z włączonym powolnym testem dymnym globalnej instalacji Bun
- przygotowanie/ponowne wykorzystanie obrazu testu dymnego głównego pliku Dockerfile według docelowego SHA, z zadaniami testów dymnych QR, root/Gateway oraz instalatora/Bun działającymi jako osobne fragmenty testów dymnych instalacji
- ś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, odplugins-runtime-install-adoplugins-runtime-install-horazopenwebui - zakres OpenWebUI na dedykowanym środowisku wykonawczym z dużym dyskiem, gdy jest wymagany
- rozdzielone ścieżki instalacji/dezinstalacji dołączonych Pluginów od
bundled-plugin-install-uninstall-0dobundled-plugin-install-uninstall-23 - zestawy dostawców działających na żywo/E2E oraz zakres modeli działających na żywo w Dockerze, gdy kontrole wydania obejmują zestawy działające na żywo
Przed ponownym uruchomieniem użyj artefaktów Docker. Harmonogram ścieżki wydania przesyła .artifacts/docker-tests/ z dziennikami ścieżek, summary.json, failures.json, czasami faz, planem harmonogramu w formacie JSON i poleceniami ponownego uruchomienia. W celu ukierunkowanego odzyskiwania użyj docker_lanes=<lane[,lane]> w wielokrotnego użytku przepływie pracy działającym na żywo/E2E zamiast ponownie uruchamiać wszystkie fragmenty wydania. Wygenerowane polecenia ponownego uruchomienia zawierają wcześniejsze package_artifact_run_id i przygotowane dane wejściowe obrazu Docker, jeśli są dostępne, dzięki czemu zakończona niepowodzeniem ścieżka może ponownie użyć tego samego archiwum tar i obrazów GHCR.
QA Lab
Środowisko QA Lab jest również częścią OpenClaw Release Checks. Jest to bramka wydania dotycząca zachowania agentowego i poziomu kanału, oddzielna od mechaniki pakietów Vitest i Docker.
Zakres QA Lab dla wydania obejmuje:
- ścieżkę zgodności z atrapami, porównującą ścieżkę kandydata OpenAI z punktem odniesienia
anthropic/claude-opus-4-8przy użyciu pakietu zgodności agentowej - profil wydania adaptera Matrix działającego na żywo przy użyciu środowiska
qa-live-shared - ścieżkę QA Telegram działającą na żywo przy użyciu 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 dowodu lokalnego
Użyj tego środowiska, aby odpowiedzieć na pytanie „czy wydanie zachowuje się poprawnie w scenariuszach QA i przepływach kanałów działających na żywo?”. Podczas zatwierdzania wydania zachowaj adresy URL artefaktów dla ścieżek zgodności, Matrix i Telegram. Pełny zakres Matrix pozostaje dostępny jako ręczne, podzielone na fragmenty uruchomienie QA Lab, a nie jako domyślna ścieżka krytyczna dla wydania.
Pakiet
Środowisko pakietu jest bramką instalowalnego produktu. Jest obsługiwane przez Package Acceptance i mechanizm rozpoznawania scripts/resolve-openclaw-package-candidate.mjs. Mechanizm rozpoznawania normalizuje kandydata do archiwum package-under-test używanego przez Docker E2E, weryfikuje zawartość pakietu, zapisuje wersję pakietu i SHA-256 oraz utrzymuje odwołanie środowiska przepływu pracy oddzielnie od odwołania źródła pakietu.
Obsługiwane źródła kandydatów:
source=npm:openclaw@beta,openclaw@latestlub dokładna wersja wydania OpenClawsource=ref: spakuj zaufaną gałąźpackage_ref, tag lub pełny SHA commitu przy użyciu wybranego środowiskaworkflow_refsource=url: pobierz publiczny zasób HTTPS.tgzz wymaganympackage_sha256; poświadczenia w adresie URL, niestandardowe porty HTTPS, prywatne/wewnętrzne/specjalnego przeznaczenia nazwy hostów lub rozpoznane adresy oraz niebezpieczne przekierowania są odrzucanesource=trusted-url: pobierz zasób HTTPS.tgzz wymaganymipackage_sha256itrusted_source_idz nazwanej polityki w.github/package-trusted-sources.json; używaj tego dla należących do opiekunów firmowych serwerów lustrzanych lub prywatnych repozytoriów pakietów zamiast dodawania dosource=urlobejścia sieci prywatnej na poziomie danych wejściowychsource=artifact: ponownie użyj.tgzprzesłanego przez inne uruchomienie GitHub Actions
OpenClaw Release Checks uruchamia akceptację pakietu 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 root-managed-vps-upgrade update-restart-auth plugins-offline plugin-update plugin-binding-command-escape, telegram_mode=mock-openai. Akceptacja pakietu zachowuje migrację, aktualizację, aktualizację VPS zarządzanego przez użytkownika root, ponowne uruchomienie po aktualizacji ze skonfigurowanym uwierzytelnianiem, instalację Skills z ClawHub działającego na żywo, usuwanie nieaktualnych zależności Pluginów, działające offline dane testowe Pluginów, aktualizację Pluginów, zabezpieczenie przed ucieczką z powiązań poleceń Pluginów oraz QA pakietu Telegram względem tego samego rozpoznanego archiwum tar. Blokujące kontrole wydania używają domyślnego punktu odniesienia najnowszego opublikowanego pakietu; profil beta z run_release_soak=true, release_profile=stable lub release_profile=full rozszerza test zachowania zgodności po aktualizacji opublikowanych pakietów do last-stable-4 oraz przypiętych punktów odniesienia 2026.4.23, 2026.5.2 i 2026.4.15 ze scenariuszami reported-issues. Użyj akceptacji pakietu z source=npm dla już wydanego kandydata, source=ref dla lokalnego archiwum tar npm opartego na SHA przed publikacją, source=trusted-url dla należącego do opiekunów firmowego/prywatnego serwera lustrzanego lub source=artifact dla przygotowanego archiwum tar przesłanego przez inne uruchomienie GitHub Actions.
Jest to natywny dla GitHub zamiennik większości zakresu pakietów/aktualizacji, który wcześniej wymagał Parallels. Kontrole wydania między systemami operacyjnymi nadal mają znaczenie dla wdrażania, instalatora i zachowania specyficznego dla systemu operacyjnego, ale walidacja produktu dotycząca pakietów/aktualizacji powinna preferować akceptację pakietu.
Kanoniczną listą kontrolną walidacji aktualizacji i Pluginów jest Testowanie aktualizacji i Pluginów. Użyj jej podczas ustalania, która lokalna ścieżka, ścieżka Docker, akceptacji pakietu lub kontroli wydania stanowi dowód zmiany instalacji/aktualizacji Pluginu, czyszczenia przez doctor lub migracji opublikowanego pakietu. Wyczerpująca migracja aktualizacji ze wszystkich stabilnych pakietów 2026.4.23+ jest oddzielnym ręcznym przepływem pracy Update Migration, a nie częścią pełnego procesu CI wydania.
Ułatwienia starszego mechanizmu akceptacji pakietów są celowo ograniczone czasowo. Pakiety do 2026.4.25 włącznie mogą korzystać ze ścieżki zgodności dla braków metadanych już opublikowanych w npm: prywatnych wpisów spisu QA brakujących w archiwum tar, brakującego gateway install --wrapper, brakujących plików poprawek w danych testowych git utworzonych z archiwum tar, brakującego utrwalonego update.channel, starszych lokalizacji rekordów instalacji Pluginów, brakującego utrwalania rekordów instalacji z platformy marketplace oraz migracji metadanych konfiguracji podczas plugins update. Opublikowany pakiet 2026.4.26 może ostrzegać o lokalnych plikach znaczników metadanych kompilacji, które zostały już wydane. Późniejsze pakiety muszą spełniać nowoczesne kontrakty pakietów; te same braki powodują niepowodzenie walidacji wydania.
Użyj szerszych profili akceptacji pakietu, gdy pytanie dotyczące wydania odnosi się do 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 [email protected]Typowe profile pakietów:
smoke: szybka instalacja pakietu/kanału/agenta, sieć Gateway oraz ścieżki przeładowania konfiguracjipackage: kontrakty instalacji/aktualizacji/ponownego uruchomienia/pakietów pluginów oraz dowód instalacji na żywo umiejętności ClawHub; jest to domyślna kontrola wydaniaproduct:packageoraz kanały MCP, czyszczenie zadań cron/subagentów, wyszukiwanie internetowe OpenAI i OpenWebUIfull: fragmenty ścieżki wydania Docker z OpenWebUIcustom: dokładna listadocker_lanesdo ukierunkowanych ponownych uruchomień
Aby zweryfikować Telegram dla kandydata pakietu, należy włączyć telegram_mode=mock-openai lub telegram_mode=live-frontier w Package Acceptance. Przepływ pracy przekazuje rozwiązany plik tarball package-under-test do ścieżki Telegram; samodzielny przepływ pracy Telegram nadal przyjmuje opublikowaną specyfikację npm na potrzeby kontroli po publikacji.
Automatyzacja publikacji regularnego wydania
W przypadku wersji beta, latest, pluginu, GitHub Release i publikacji na platformach
OpenClaw Release Publish jest standardowym punktem wejścia wprowadzającym zmiany. Comiesięczna
ścieżka extended-stable .33+ obejmująca wyłącznie npm nie używa tego koordynatora. Ten
regularny przepływ pracy koordynuje przepływy pracy zaufanego wydawcy w kolejności wymaganej
przez wydanie:
- Pobierz tag wydania i rozwiąż SHA jego commitu.
- Sprawdź, czy tag jest osiągalny z
mainlubrelease/*(albo z gałęzi alfa Tideclaw w przypadku wydań wstępnych alfa). - 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, tagiem dystrybucyjnym npm i zapisanympreflight_run_idpo zweryfikowaniu zapisanegofull_release_validation_run_idoraz dokładnej próby uruchomienia. - W przypadku wydań stabilnych utwórz lub zaktualizuj wydanie GitHub jako wersję roboczą, wywołaj
Windows Node Releasez jawnymwindows_node_tagi zatwierdzonym dla kandydatawindows_node_installer_digests, a następnie zweryfikuj kanoniczne zasoby instalatora Windows i sum kontrolnych. Wywołaj równieżAndroid Release, aby zbudować podpisany plik APK dokładnie dla danego tagu wraz z sumą kontrolną i pochodzeniem. Przed opublikowaniem wersji roboczej zweryfikuj oba kontrakty zasobów natywnych.
Przykład publikacji wersji beta:
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=betaPublikacja wersji stabilnej do domyślnego tagu dystrybucyjnego 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=betaBezpośrednia promocja wersji stabilnej do latest jest jawna:
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=latestPrzepływów pracy niższego poziomu Plugin NPM Release i Plugin ClawHub Release należy używać wyłącznie do ukierunkowanych napraw lub ponownej publikacji. OpenClaw Release Publish odrzuca plugin_publish_scope=selected, gdy publish_openclaw_npm=true, aby pakiet podstawowy nie mógł zostać wydany bez wszystkich możliwych do opublikowania oficjalnych pluginów, w tym @openclaw/diffs-language-pack. W przypadku naprawy wybranego pluginu należy ustawić publish_openclaw_npm=false wraz z plugin_publish_scope=selected i plugins=@openclaw/name albo wywołać bezpośrednio podrzędny przepływ pracy.
Wyjątkiem jest początkowe uruchomienie pierwszej publikacji ClawHub: należy wywołać Plugin ClawHub New
z zaufanego main i przekazać pełny SHA docelowego wydania przez ref.
Nigdy nie należy uruchamiać samego przepływu początkowego z tagu ani gałęzi wydania:
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=trueWalidacja przed utworzeniem tagu wymaga dry_run=true, odrzuca dane wejściowe
tagu wydania i uruchomienia nadrzędnego oraz przyjmuje wyłącznie dokładny cel osiągalny z main lub release/*.
Nie ładuje danych uwierzytelniających ClawHub, nie publikuje bajtów pakietu ani nie zmienia konfiguracji
zaufanego wydawcy. Przepływ pracy nadal rozwiązuje plan rejestru na żywo,
pobiera i pakuje cel wyłącznie w zadaniu bez sekretów, materializuje
zablokowany zestaw narzędzi ClawHub oraz weryfikuje niezmienny artefakt i slug/tożsamość
pakietu przed powstaniem tagu wydania. Środowisko
clawhub-plugin-bootstrap należy zatwierdzić dopiero po zakończeniu zadań pakowania bez sekretów;
to chronione zadanie walidacyjne nie ma danych uwierzytelniających ani poleceń wprowadzających zmiany.
Zatwierdzone uruchomienie próbne lub rzeczywiste uruchomienie początkowe po utworzeniu tagu musi zawierać dokładny
tag wydania oraz identyfikator uruchomienia nadrzędnego OpenClaw Release Publish, próbę i
gałąź. Element nadrzędny poświadcza SHA własnego przepływu pracy oraz oddzielny, dokładny, zaufany
SHA main dla Plugin ClawHub New; uruchomienie podrzędne i każde zatwierdzenie chronionego
środowiska muszą odpowiadać temu zatwierdzonemu podrzędnemu SHA. Tag wydania jest
ponownie sprawdzany przed każdą próbą publikacji i zmianą zaufanego wydawcy.
Zadanie pakowania
przesyła jeden niezmienny artefakt, którego nazwa, identyfikator/suma skrótu artefaktu Actions,
uruchomienie/próba producenta, docelowy SHA oraz SHA-256/rozmiar pliku tarball każdego pakietu są
przenoszone do zadań walidacyjnych i chronionych. Chronione zadanie pobiera wyłącznie zaufane narzędzia main,
weryfikuje krotkę artefaktu za pośrednictwem interfejsu API GitHub, pobiera
według dokładnego identyfikatora artefaktu, ponownie oblicza skrót każdego pliku tarball oraz weryfikuje lokalne ścieżki TAR i
tożsamość pakietu zgodnie z regułami kanonizacji USTAR przypiętego CLI. Każdy
kandydat następnie przechodzi próbne uruchomienie publikacji przypiętego CLI, które kończy się przed
wyszukiwaniem w rejestrze lub uwierzytelnianiem. Filtr wstępny zadania z danymi uwierzytelniającymi ogranicza skompresowane ClawPacks
do 120 MiB, łączną zawartość plików do 50 MiB, rozwinięte dane TAR do 64 MiB, a
liczbę wpisów TAR do 10,000. Naprawa zaufanego wydawcy istniejącego pakietu nadal
ogranicza się do konfiguracji, ale wciąż pakuje cel i wymaga zgodności żądanego tagu
oraz dokładnych bajtów i metadanych rejestru przed zmianą konfiguracji zaufanego wydawcy.
Weryfikacja po publikacji pobiera artefakt ClawHub i
wymaga identycznego SHA-256 i rozmiaru. Odzyskiwanie za pomocą ponownego uruchomienia nieudanych zadań może ponownie wykorzystać artefakt pakietu z wcześniejszej
próby wyłącznie wtedy, gdy dokładne zadanie producenta zakończyło się
pomyślnie. Końcowy materiał dowodowy wiąże również zablokowaną wersję ClawHub, SHA-256
pliku blokady oraz integralność npm. Niezgodność wymaga nowej wersji pakietu.
Dane wejściowe przepływu pracy NPM
OpenClaw NPM Release przyjmuje następujące dane wejściowe kontrolowane przez operatora:
tag: wymagany tag wydania, taki jakv2026.4.2,v2026.4.2-1,v2026.4.2-beta.1lubv2026.4.2-alpha.1; gdypreflight_only=true, może to być również bieżący pełny, 40-znakowy SHA commitu gałęzi przepływu pracy na potrzeby wstępnej walidacjipreflight_only:truewyłącznie do walidacji/budowania/pakowania,falsedla rzeczywistej ścieżki publikacjipreflight_run_id: identyfikator istniejącego pomyślnego uruchomienia wstępnego, wymagany na rzeczywistej ścieżce publikacji, aby przepływ pracy ponownie wykorzystał przygotowany plik tarball zamiast go przebudowywaćfull_release_validation_run_id: identyfikator pomyślnego uruchomieniaFull Release Validationdla tego tagu/SHA, wymagany do rzeczywistej publikacji. Publikacje beta mogą być kontynuowane wyłącznie na podstawie kontroli wstępnej z ostrzeżeniem, ale promocja wersji stabilnej/latestnadal go wymaga.full_release_validation_run_attempt: dokładna dodatnia próba uruchomienia powiązana zfull_release_validation_run_id; wymagana zawsze, gdy podano identyfikator uruchomienia, aby ponowne uruchomienia nie mogły zmienić materiału autoryzacyjnego podczas publikacji.release_publish_run_id: identyfikator zatwierdzonego uruchomieniaOpenClaw Release Publish; wymagany, gdy ten przepływ pracy jest wywoływany przez ten element nadrzędny (wywołania rzeczywistej publikacji przez aktora-bota)plugin_npm_run_id: identyfikator pomyślnego uruchomieniaPlugin NPM Releasedokładnie dla bieżącego punktu HEAD; wymagany do rzeczywistej publikacji podstawowego pakietuextended-stablenpm_dist_tag: docelowy tag npm dla ścieżki publikacji; przyjmujealpha,beta,latestlubextended-stable, a wartością domyślną jestbeta. Końcowy patch33i późniejsze muszą używaćextended-stable; domyślnieextended-stableodrzuca wcześniejsze patche i zawsze odrzuca tagi niekońcowe.bypass_extended_stable_guard: wartość logiczna wyłącznie do testów, domyślniefalse; w połączeniu znpm_dist_tag=extended-stableomija comiesięczne kryteria kwalifikacji extended-stable, zachowując kontrole tożsamości wydania, artefaktu, zatwierdzenia i odczytu zwrotnego.
Plugin NPM Release przyjmuje npm_dist_tag=default dla istniejącego zachowania
wydania lub npm_dist_tag=extended-stable dla chronionej ścieżki comiesięcznej. Opcja
extended-stable wymaga publish_scope=all-publishable, pustej wartości wejściowej
plugins, końcowego patcha na poziomie 33 lub wyższym oraz kanonicznej
gałęzi extended-stable/YYYY.M.33 dokładnie na jej końcu. Nigdy nie przenosi pluginów
latest ani beta. Nowe wersje pakietów otrzymują extended-stable atomowo
za pośrednictwem zaufanej publikacji OIDC (npm publish --tag extended-stable); ten
źródłowy przepływ pracy nie używa uwierzytelnianego tokenem npm dist-tag add. Ponowne próby
pomijają dokładne wersje już obecne w npm, a następnie kończą się błędem w trybie zamkniętym, chyba że pełny
odczyt zwrotny potwierdzi zbieżność każdego dokładnego pakietu i tagu extended-stable.
OpenClaw Release Publish przyjmuje następujące dane wejściowe kontrolowane przez operatora:
tag: wymagany tag wydania; musi już istniećpreflight_run_id: identyfikator pomyślnego uruchomienia wstępnegoOpenClaw NPM Release; wymagany, gdypublish_openclaw_npm=truelubplugin_publish_scope=all-publishablefull_release_validation_run_id: identyfikator pomyślnego uruchomieniaFull Release Validation; wymagany, gdypublish_openclaw_npm=truelubplugin_publish_scope=all-publishablefull_release_validation_run_attempt: dokładna dodatnia próba powiązana zfull_release_validation_run_id; wymagana zawsze, gdy podano identyfikator uruchomieniawindows_node_tag: dokładny tag wydaniaopenclaw/openclaw-windows-node, który nie jest tagiem wydania wstępnego; wymagany do publikacji stabilnej wersji OpenClawwindows_node_installer_digests: zatwierdzona dla kandydata kompaktowa mapa JSON bieżących nazw instalatorów Windows na ich przypięte sumy skrótusha256:; wymagana do publikacji stabilnej wersji OpenClawnpm_telegram_run_id: opcjonalny identyfikator pomyślnego uruchomieniaNPM Telegram Beta E2E, który ma zostać uwzględniony w końcowym materiale dowodowym wydanianpm_dist_tag: docelowy tag npm dla pakietu OpenClaw, jeden zalpha,betalublatestplugin_publish_scope: domyślnieall-publishable; wartościselectednależy używać wyłącznie do ukierunkowanych napraw dotyczących tylko pluginów wraz zpublish_openclaw_npm=falseplugins: rozdzielone przecinkami nazwy pakietów@openclaw/*, gdyplugin_publish_scope=selectedpublish_openclaw_npm: domyślnietrue; wartośćfalsenależy ustawiać wyłącznie podczas używania przepływu pracy jako koordynatora napraw dotyczących tylko pluginówrelease_profile: profil pokrycia wydania używany w podsumowaniach materiału dowodowego wydania; domyślniefrom-validation, co powoduje odczyt z manifestu walidacji, albo można go zastąpić wartościąbeta,stablelubfullwait_for_clawhub: domyślniefalse, aby dostępność npm nie była blokowana przez proces pomocniczy ClawHub; wartośćtruenależy ustawić wyłącznie wtedy, gdy ukończenie przepływu pracy musi obejmować ukończenie ClawHub
OpenClaw Release Checks przyjmuje następujące dane wejściowe kontrolowane przez operatora:
ref: gałąź, tag lub pełny SHA commitu do zweryfikowania. Kontrole wykorzystujące sekrety wymagają, aby wskazany commit był osiągalny z gałęzi OpenClaw lub tagu wydania.run_release_soak: włącza wyczerpujące testy live/E2E, ścieżkę wydania Docker oraz długotrwałe testy przetrwania aktualizacji ze wszystkich wcześniejszych wersji na potrzeby kontroli wydania beta. Jest wymuszane przezrelease_profile=stableirelease_profile=full.
Reguły:
- Zwykłe wersje finalne i korygujące poniżej poprawki
33mogą być publikowane dobetalublatest. Wersje finalne z poprawką33lub wyższą muszą być publikowane doextended-stable, a wersje z sufiksem korygującym na tej granicy są odrzucane. - Tagi wersji przedpremierowych beta mogą być publikowane wyłącznie do
beta; tagi wersji przedpremierowych alpha mogą być publikowane wyłącznie doalpha - W przypadku
OpenClaw NPM Releasepodanie pełnego SHA commitu jest dozwolone wyłącznie wtedy, gdypreflight_only=true OpenClaw Release ChecksiFull Release Validationzawsze służą wyłącznie do walidacji- Rzeczywista ścieżka publikacji musi używać tego samego
npm_dist_tag, którego użyto podczas kontroli wstępnej; przepływ pracy weryfikuje te metadane przed kontynuowaniem publikacji
Standardowa sekwencja wydania beta/najnowszego stabilnego
Ta starsza sekwencja dotyczy standardowego, koordynowanego wydania, które obejmuje również pluginy, wydanie GitHub, system Windows i prace na innych platformach. Nie jest to udokumentowana na początku tej strony comiesięczna ścieżka rozszerzonego wydania stabilnego .33+ przeznaczona wyłącznie dla npm.
Podczas przygotowywania standardowego, koordynowanego wydania stabilnego:
- Uruchom
OpenClaw NPM Releasezpreflight_only=true. Zanim powstanie tag, można użyć bieżącego pełnego SHA commitu gałęzi przepływu pracy do próbnego uruchomienia przepływu kontroli wstępnej, służącego wyłącznie do walidacji. - Wybierz
npm_dist_tag=betadla normalnego przepływu rozpoczynającego się od wersji beta albolatesttylko wtedy, gdy celowo wymagane jest bezpośrednie opublikowanie wersji stabilnej. - Uruchom
Full Release Validationna gałęzi wydania, tagu wydania lub pełnym SHA commitu, aby jeden ręczny przepływ pracy wykonał standardowe CI oraz objął pamięć podręczną promptów live, Docker, QA Lab, Matrix i Telegram. Jeśli celowo potrzebny jest wyłącznie deterministyczny, standardowy graf testów, uruchom zamiast tego ręczny przepływ pracyCIdla odwołania wydania. - Wybierz dokładny, nieprzedpremierowy tag wydania
openclaw/openclaw-windows-node, którego podpisane instalatory x64 i ARM64 mają zostać wydane. Zapisz go jakowindows_node_tag, a mapę zweryfikowanych skrótów instalatorów jakowindows_node_installer_digests. Narzędzie pomocnicze kandydata do wydania zapisuje obie wartości i uwzględnia je w wygenerowanym poleceniu publikacji. - Zapisz wartości z pomyślnie zakończonych
preflight_run_id,full_release_validation_run_idoraz dokładną wartośćfull_release_validation_run_attempt. - Uruchom
OpenClaw Release Publishz zaufanegomain, używając tego samegotag, tego samegonpm_dist_tag, wybranegowindows_node_tag, jego zapisanej wartościwindows_node_installer_digests, zapisanej wartościpreflight_run_id,full_release_validation_run_idorazfull_release_validation_run_attempt. Publikuje to wydzielone pluginy w npm i ClawHub przed promowaniem pakietu OpenClaw w npm. - Jeśli wydanie trafiło do
beta, użyj przepływu pracyopenclaw/releases/.github/workflows/openclaw-npm-dist-tags.yml, aby wypromować tę wersję stabilną zbetadolatest. - Jeśli wydanie celowo opublikowano bezpośrednio do
latest, abetama natychmiast wskazywać tę samą stabilną kompilację, użyj tego samego przepływu wydania, aby skierować oba tagi dystrybucyjne na wersję stabilną, albo pozwól zaplanowanej synchronizacji samonaprawczej przenieśćbetapóźniej.
Modyfikacja tagów dystrybucyjnych znajduje się w repozytorium rejestru wydań, ponieważ nadal wymaga NPM_TOKEN, natomiast 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 rozpoczynająca się od wersji beta pozostają udokumentowane i widoczne dla operatora.
Jeśli opiekun musi awaryjnie skorzystać z lokalnego uwierzytelniania npm, wszystkie polecenia CLI 1Password (op) należy uruchamiać wyłącznie w dedykowanej sesji tmux. Nie należy wywoływać op bezpośrednio z głównej powłoki agenta; uruchamianie go wewnątrz tmux zapewnia widoczność monitów, alertów i obsługi OTP oraz zapobiega powtarzającym się alertom hosta.
Odwołania publiczne
.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
Opiekunowie korzystają z prywatnej dokumentacji wydań w openclaw/maintainers/release/README.md, zawierającej właściwą instrukcję wykonania.