Release and CI
Zasady wydawania wersji
OpenClaw udostępnia obecnie trzy kanały aktualizacji przeznaczone dla użytkowników:
- stable: istniejący promowany kanał wydań, który nadal jest rozwiązywany przez npm
latest, dopóki nie zostanie osiągnięty etap wdrożenia oddzielnego kanału CLI - beta: tagi wersji przedpremierowych publikowane w npm
beta - dev: przesuwający się wierzchołek gałęzi
main
Niezależnie od tego operatorzy wydań mogą publikować pakiet rdzenia z ostatniego
zakończonego miesiąca w npm extended-stable, począwszy od poprawki 33. Regularna
linia wydań finalnych z bieżącego miesiąca pozostaje w npm latest; ten podział
publikacji po stronie operatora sam w sobie nie zmienia sposobu rozwiązywania
kanałów aktualizacji CLI.
Wersje alfa Tideclaw stanowią oddzielną wewnętrzną ścieżkę wydań przedpremierowych (tag dystrybucyjny npm alpha), opisaną w sekcjach Parametry workflow npm i Środowiska testowe wydań.
Nazewnictwo wersji
- Wersja comiesięcznego wydania npm extended-stable:
YYYY.M.PATCH, gdziePATCH >= 33, tag gitvYYYY.M.PATCH - Wersja codziennego/regularnego wydania finalnego:
YYYY.M.PATCH, gdziePATCH < 33, tag gitvYYYY.M.PATCH - Wersja regularnego wydania korygującego w trybie awaryjnym:
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 uzupełniaj miesiąca ani numeru poprawki zerami wiodącymi
PATCHjest kolejnym numerem w miesięcznym cyklu wydań, a nie dniem kalendarzowym. Regularne wydania finalne i beta przesuwają bieżący cykl; tagi zawierające wyłącznie wersję 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 zawierające wyłącznie wersję alfa z wyższymi numerami poprawek.- Wersje alfa/nocne używają następnego niewydanego cyklu poprawek i przy kolejnych kompilacjach zwiększają wyłącznie
alpha.N. Gdy dana poprawka otrzyma wersję beta, nowe wersje alfa przechodzą do kolejnej poprawki. - Wersje npm są niezmienne: nigdy nie usuwaj, nie publikuj ponownie ani nie wykorzystuj ponownie opublikowanego tagu. Zamiast tego utwórz kolejny numer wersji przedpremierowej lub kolejną miesięczną poprawkę.
latestnadal wskazuje bieżącą regularną/codzienną linię npm;betajest bieżącym celem instalacji wersji betaextended-stableoznacza obsługiwany pakiet npm z poprzedniego miesiąca, począwszy od poprawki33; poprawka34i kolejne są wydaniami konserwacyjnymi tej miesięcznej linii- Regularne wydania finalne i regularne wydania korygujące są domyślnie publikowane w npm
beta; operatorzy wydań mogą jawnie wskazaćlatestlub później promować zweryfikowaną wersję beta - Dedykowana miesięczna ścieżka extended-stable publikuje pakiet rdzenia npm oraz każdy oficjalny Plugin możliwy do opublikowania w npm dokładnie w tej samej wersji. Nie publikuje Pluginów w ClawHub ani artefaktów dla systemów macOS lub Windows, wydania GitHub, tagów dystrybucyjnych prywatnych repozytoriów, obrazów Docker, artefaktów mobilnych ani plików do pobrania z witryny.
- Każde regularne wydanie finalne dostarcza razem pakiet npm, aplikację macOS, podpisany samodzielny pakiet APK dla systemu Android oraz podpisane instalatory Windows Hub. Wydania beta zwykle najpierw weryfikują i publikują ścieżkę npm/pakietu, natomiast kompilowanie, podpisywanie, notaryzacja i promowanie aplikacji natywnych są zarezerwowane dla regularnego wydania finalnego, chyba że zostaną jawnie zażądane.
Harmonogram wydań
- Wydania najpierw trafiają do kanału beta; kanał stable otrzymuje je dopiero po zweryfikowaniu najnowszej wersji beta
- Opiekunowie zwykle przygotowują wydania z gałęzi
release/YYYY.M.PATCHutworzonej na podstawie bieżącegomain, 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ą kolejny tag
-beta.N, zamiast usuwać lub ponownie tworzyć stary - Szczegółowa procedura wydania, zatwierdzenia, dane uwierzytelniające i informacje o odzyskiwaniu są dostępne wyłącznie dla opiekunów
Comiesięczna publikacja extended-stable wyłącznie w npm
Jest to dedykowany wyjątek od opisanej poniżej regularnej procedury wydania. Dla
zakończonego miesiąca YYYY.M utwórz extended-stable/YYYY.M.33; publikuj
vYYYY.M.33 i późniejsze poprawki konserwacyjne z tej samej gałęzi. Tag wydania,
wierzchołek gałęzi, kopia robocza, wersja pakietu, kontrola wstępna npm i przebieg
pełnej weryfikacji wydania muszą wskazywać ten sam commit. Chroniona gałąź main
musi już zawierać wersję finalną ze ściśle późniejszego miesiąca kalendarzowego,
z numerem poprawki niższym niż 33; poprawki konserwacyjne pozostają
dopuszczalne także wtedy, gdy main wyprzedza tę wersję o więcej niż jeden
miesiąc.
Na właściwej gałęzi extended-stable zmień wersję pakietu głównego na YYYY.M.P,
uruchom pnpm release:prep i sprawdź, czy każdy pakiet rozszerzenia możliwy do
opublikowania ma tę samą wersję. Zatwierdź i wypchnij wszystkie wygenerowane
zmiany, utwórz i wypchnij niezmienny tag vYYYY.M.P wskazujący ten commit,
a następnie zapisz wynikowy pełny SHA. Workflow używają tego przygotowanego
drzewa; nie zwiększają ani nie synchronizują wersji za Ciebie.
Uruchom kontrolę wstępną npm oraz pełną weryfikację wydania z dokładnie tego przygotowanego wierzchołka gałęzi, a następnie zapisz identyfikatory obu przebiegów oraz 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 poziomu szczegółowości
weryfikacji; jest niezależny od tagu dystrybucyjnego npm extended-stable
i celowo pozostaje niezmieniony.
Po pomyślnym zakończeniu obu przebiegów opublikuj każdy oficjalny Plugin możliwy
do opublikowania w npm z dokładnie tego samego wierzchołka gałęzi. Poprawka P
musi mieć wartość 33 lub większą. Przekaż pełny SHA wydania jako ref,
zaczekaj na ukończenie całej macierzy i zwrotne odczytanie rejestru, a następnie
zapisz identyfikator pomyślnego 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-stableWorkflow używa regularnego, przygotowanego spisu pakietów all-publishable,
w tym pakietów, których kod źródłowy nie uległ zmianie. Przed pomyślnym
zakończeniem weryfikuje każdy konkretny pakiet i każdy tag Pluginu
extended-stable. Jeśli częściowy przebieg zakończy się niepowodzeniem,
uruchom ponownie 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 pełny zestaw
pakietów.
Po pomyślnym zakończeniu workflow Pluginów i przygotowaniu środowiska wydania npm
opublikuj dokładny plik tarball rdzenia z kontroli wstępnej. Publikacja rdzenia
sprawdza, czy wskazany przebieg Pluginów ma stan completed/success dla tej samej
kanonicznej gałęzi i dokładnie tego samego SHA źródła:
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 albo zasady miesiąca chronionej gałęzi main, dodaj
-f bypass_extended_stable_guard=true zarówno do wywołania kontroli wstępnej
npm, jak i publikacji. Wartością domyślną jest false. Obejście jest akceptowane
wyłącznie z npm_dist_tag=extended-stable i zostaje odnotowane w podsumowaniu
workflow. Nie omija ono wymogu kanonicznego odwołania workflow
extended-stable/YYYY.M.33, zgodności wierzchołka gałęzi, tagu i kopii roboczej,
składni tagu finalnego, zgodności wersji pakietu i tagu, tożsamości wskazanego
przebiegu i manifestu, pochodzenia pliku tarball, zatwierdzenia środowiska,
zwrotnego odczytu rejestru ani dowodów naprawy selektora.
Workflow publikacji weryfikuje tożsamość wskazanych przebiegów kontroli wstępnej, weryfikacji i Pluginów, skrót przygotowanego pliku tarball oraz selektory rdzenia w rejestrze. Po pomyślnym zakończeniu workflow niezależnie potwierdź wynik:
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
zwrotny odczyt selektora zakończy się niepowodzeniem, nie publikuj ponownie
niezmiennej wersji pakietu. Użyj pojedynczego polecenia naprawczego
npm dist-tag add openclaw@YYYY.M.P extended-stable, wydrukowanego w zawsze
wykonywanym podsumowaniu nieudanego workflow, a następnie powtórz oba niezależne
odczyty zwrotne. Wycofanie selektora do poprzedniej wartości jest oddzielną
decyzją operatora, a nie ścieżką naprawy odczytu zwrotnego.
Publiczna dokumentacja pomocy technicznej początkowo wskazuje Slack, Discord i Codex jako objęte obsługą powierzchnie Pluginów extended-stable. Ta lista jest deklaracją zakresu 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 wersje beta, latest, wydanie
GitHub, Pluginy, macOS, Windows i publikację na innych platformach. Nie wykonuj
tych kroków dla tej ścieżki extended-stable przeznaczonej wyłącznie dla npm.
Regularna lista kontrolna operatora wydania
Ta lista kontrolna przedstawia publiczny kształt procesu wydania. Prywatne dane uwierzytelniające, podpisywanie, notaryzacja, odzyskiwanie tagów dystrybucyjnych i szczegóły awaryjnego wycofywania pozostają w podręczniku wydań dostępnym wyłącznie dla opiekunów.
-
Zacznij od aktualnej gałęzi
main: pobierz najnowsze zmiany, potwierdź, że docelowy commit został wypchnięty, i upewnij się, że stan CI gałęzimainpozwala na utworzenie z niej nowej gałęzi. -
Wygeneruj najwyższą sekcję pliku
CHANGELOG.mdna podstawie scalonych PR-ów i wszystkich bezpośrednich commitów od ostatniego osiągalnego tagu wydania. Zadbaj, aby wpisy były przeznaczone dla użytkowników, usuń powielające się wpisy dotyczące tych samych PR-ów i bezpośrednich commitów, wykonaj commit, wypchnij zmiany, a przed utworzeniem gałęzi jeszcze raz wykonaj rebase lub pobierz zmiany. Gdy rozbieżny opublikowany tag lub późniejsze przeniesienie zmian do przodu ponownie powiąże już wydane PR-y, przekaż ten tag jawnie jako--shipped-ref; weryfikator korzysta z jawnych wierszy PR-ów pochodzących z kompletnych rekordów wkładu w numerowanych sekcjach migawki tagu, ignoruje sekcjęUnreleasedoraz zapisuje dokładną listę i liczbę wykluczonych PR-ów. -
Przejrzyj rekordy zgodności wydań w
src/plugins/compat/registry.tsorazsrc/commands/doctor/shared/deprecation-compat.ts. Usuwaj wygasłą zgodność tylko wtedy, gdy ścieżka aktualizacji nadal jest obsługiwana, albo zapisz, dlaczego jest celowo zachowywana. -
Utwórz gałąź
release/YYYY.M.PATCHz aktualnej gałęzimain. Nie wykonuj zwykłych prac związanych z wydaniem bezpośrednio namain. -
Zaktualizuj wszystkie wymagane wystąpienia wersji dla tagu, a następnie uruchom
pnpm release:prep. Polecenie odświeża kolejno wersje pluginów, pliki shrinkwrap npm, spis pluginów, bazowy schemat konfiguracji, metadane konfiguracji wbudowanych kanałów, bazową wersję dokumentacji konfiguracji, eksporty SDK pluginów oraz bazową wersję API SDK pluginów. Przed utworzeniem tagu zatwierdź wszelkie wygenerowane różnice, a następnie uruchom lokalne, deterministyczne sprawdzenia wstępne:pnpm check:test-types,pnpm check:architecture,pnpm build && pnpm ui:buildorazpnpm release:check. -
Uruchom
OpenClaw NPM Releasez parametrempreflight_only=true. Zanim powstanie tag, dozwolony jest pełny, 40-znakowy SHA gałęzi wydania na potrzeby sprawdzenia wstępnego służącego wyłącznie do walidacji. Sprawdzenie wstępne generuje dowody wydania zależności dla dokładnego grafu zależności z aktualnie pobranej kopii i zapisuje je w artefakcie sprawdzenia wstępnego npm. Zachowaj wartośćpreflight_run_idzakończonego pomyślnie uruchomienia. -
Uruchom wszystkie testy przedwydaniowe za pomocą
Full Release Validationdla gałęzi wydania, tagu lub pełnego SHA commitu. Jest to jedyny ręczny punkt wejścia dla czterech dużych zestawów testów wydania: Vitest, Docker, QA Lab i Package. Zachowaj wartościfull_release_validation_run_idoraz dokładnąfull_release_validation_run_attempt; obie są wymaganymi danymi wejściowymi dlaOpenClaw NPM ReleaseiOpenClaw Release Publish. -
Jeśli walidacja zakończy się niepowodzeniem, wprowadź poprawkę na gałęzi wydania i ponownie uruchom najmniejszy zestaw — plik, ścieżkę, zadanie przepływu pracy, profil pakietu, dostawcę lub listę dozwolonych modeli — który potwierdzi poprawkę. Uruchamiaj ponownie pełny nadrzędny zestaw tylko wtedy, gdy zmieniony obszar powoduje, że wcześniejsze dowody są nieaktualne.
-
Dla oznaczonego tagiem kandydata beta uruchom
pnpm release:candidate -- --tag vYYYY.M.PATCH-beta.Nz odpowiadającej mu gałęzirelease/YYYY.M.PATCH. Dla wydania stabilnego przekaż również wymagane wydanie źródłowe Windows:pnpm release:candidate -- --tag vYYYY.M.PATCH --windows-node-tag vX.Y.Z. Narzędzie pomocnicze używa zaufanej gałęzimainjako źródła przepływu pracy, a każdy przepływ pracy kieruje na dokładny tag. Utrwala niezmienną tożsamość kandydata i narzędzi oraz identyfikatory uruchomionych przebiegów w.artifacts/release-candidate/<tag>/release-candidate-state.json; ponowne uruchomienie tego samego polecenia wznawia dokładnie te przebiegi, natomiast każda zmiana kandydata, narzędzi, profilu lub opcji powoduje bezpieczne przerwanie. Przed uruchomieniem pełnej macierzy walidacji narzędzie deterministycznie renderuje dokładną treść wydania GitHub dla danego tagu i odrzuca brak nagłówka wersji, treść przekraczającą limit, dla której nie można użyć kanonicznej skróconej postaci, lub pochodzenie bazowego i docelowego rekordu wkładu, które nie jest osiągalne z tagu. Waliduje również wszelkie jawne metadane wykluczeń bazowej wersji wydania względem wskazanych skumulowanych rekordów tagów. Następnie uruchamia lokalne sprawdzenia wygenerowanego wydania, uruchamia lub weryfikuje pełną walidację wydania i dowody sprawdzenia wstępnego npm, wykonuje w Parallels testy czystej instalacji i aktualizacji względem dokładnie przygotowanego archiwum tar wraz z testem pakietu Telegram, zapisuje plany npm i ClawHub dla pluginów oraz wyświetla dokładne polecenieOpenClaw Release Publishdopiero po pomyślnej weryfikacji całego zestawu dowodów.OpenClaw Release Publishrównolegle publikuje wybrane lub wszystkie możliwe do opublikowania pakiety pluginów w npm oraz ten sam zestaw w ClawHub, a następnie, po pomyślnym opublikowaniu pluginów w npm, promuje przygotowany artefakt sprawdzenia wstępnego npm OpenClaw z odpowiednim tagiem dystrybucyjnym. Kopia robocza wydania pozostaje głównym źródłem produktu i danych, natomiast planowanie i końcowa weryfikacja są wykonywane z dokładnej, zaufanej kopii roboczej źródła przepływu pracy, dzięki czemu starszy commit wydania nie może po cichu użyć przestarzałych narzędzi wydawniczych. Przed uruchomieniem któregokolwiek podrzędnego procesu publikacji renderuje i zapisuje w pamięci podręcznej dokładną treść wydania GitHub. Gdy kompletna, odpowiadająca wydaniu sekcjaCHANGELOG.mdmieści się w limicie GitHub wynoszącym 125 000 znaków oraz w odpowiadającym mu limicie bezpieczeństwa renderera wynoszącym 125 000 bajtów, strona zawiera dokładnie tę sekcję## YYYY.M.PATCHwraz z nagłówkiem. Gdy sekcja źródłowa się nie mieści, strona zachowuje dokładne, pogrupowane uwagi redakcyjne i zastępuje zbyt obszerny rekord wkładu stabilnym odnośnikiem do pełnego rekordu w przypiętym do tagu plikuCHANGELOG.md; częściowe rekordy ani ucięte punkty listy nigdy nie są publikowane. Przepływ pracy wybiera pełną lub skróconą treść przed dodaniem sekcji### Weryfikacja wydania; jeśli końcowa część z dowodami przekroczyłaby limit, zachowuje kanoniczną treść i opiera się na dołączonych, niezmiennych dowodach. Stabilne wydania opublikowane w npm z tagiemlateststają się najnowszym wydaniem GitHub, natomiast stabilne wydania konserwacyjne zachowane w npm pod tagiembetasą tworzone z ustawieniem GitHublatest=false. Przepływ pracy przesyła również do wydania GitHub dowody zależności ze sprawdzenia wstępnego, manifest pełnej walidacji oraz dowody weryfikacji rejestru po publikacji na potrzeby obsługi incydentów powydaniowych. Natychmiast wyświetla identyfikatory podrzędnych uruchomień, automatycznie zatwierdza te bramki środowiska wydania, które token przepływu pracy ma prawo zatwierdzić, podsumowuje zakończone niepowodzeniem zadania podrzędne wraz z końcowymi fragmentami dzienników, z wyprzedzeniem tworzy wersję roboczą strony wydania GitHub i równolegle z publikacją OpenClaw w npm promuje artefakty Windows i Android, finalizuje stronę wydania i dowody zależności po pomyślnym zakończeniu tych etapów, czeka na ClawHub zawsze wtedy, gdy publikowany jest OpenClaw w npm, a następnie uruchamia weryfikator wersji beta z zaufanej gałęzimaini przesyła dowody powydaniowe dotyczące wydania GitHub, pakietu npm, wybranych pakietów pluginów w npm, wybranych pakietów ClawHub, identyfikatorów podrzędnych przepływów pracy oraz opcjonalnego identyfikatora uruchomienia NPM Telegram. Weryfikator rozruchowy ClawHub wymaga dokładnej ścieżki i SHA zaufanego przepływu pracy z gałęzimain, numerów prób uruchomienia procesu wytwarzającego i końcowego, SHA wydania, żądanego zestawu pakietów, niezmiennej krotki artefaktu pakietu oraz końcowego artefaktu odczytu zwrotnego z rejestru; pomyślnie zakończone starsze uruchomienie dla referencji wydania nie jest akceptowane.Następnie uruchom powydaniową akceptację pakietu dla opublikowanego pakietu
openclaw@YYYY.M.PATCH-beta.Nlubopenclaw@beta. Jeśli wypchnięte lub opublikowane wydanie wstępne wymaga poprawki, utwórz kolejne wydanie wstępne z następnym odpowiadającym numerem; nigdy nie usuwaj ani nie przepisuj poprzedniego. -
W przypadku wydania stabilnego kontynuuj dopiero wtedy, gdy zweryfikowana wersja beta lub kandydat do wydania ma wymagane dowody walidacji. Stabilna publikacja npm również odbywa się za pośrednictwem
OpenClaw Release Publish, z ponownym użyciem pomyślnie zweryfikowanego artefaktu sprawdzenia wstępnego poprzezpreflight_run_id. Gotowość stabilnego wydania macOS wymaga również obecności spakowanych plików.zip,.dmg,.dSYM.ziporaz zaktualizowanego plikuappcast.xmlna gałęzimain; przepływ pracy publikacji macOS automatycznie publikuje podpisany plik appcast w publicznej gałęzimainpo zweryfikowaniu artefaktó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 obecności podpisanych artefaktówOpenClawCompanion-Setup-x64.exe,OpenClawCompanion-Setup-arm64.exeorazOpenClawCompanion-SHA256SUMS.txtw wydaniu OpenClaw na GitHub. Przekaż dokładny tag podpisanego wydaniaopenclaw/openclaw-windows-nodejakowindows_node_tagoraz zatwierdzoną dla kandydata mapę skrótów instalatora jakowindows_node_installer_digests;OpenClaw Release Publishzachowuje wersję roboczą wydania, uruchamiaWindows Node Releasei weryfikuje wszystkie trzy artefakty przed publikacją. -
Po publikacji uruchom powydaniowy weryfikator npm, opcjonalny niezależny test E2E Telegram dla opublikowanego pakietu npm, gdy potrzebujesz powydaniowego potwierdzenia działania kanału, w razie potrzeby wykonaj promocję tagu dystrybucyjnego, zweryfikuj wygenerowaną stronę wydania GitHub, przeprowadź kroki ogłoszenia wydania, a następnie ukończ procedurę Finalizacja stabilnego wydania na gałęzi main, zanim uznasz stabilne wydanie za zakończone.
Finalizacja stabilnego wydania na gałęzi main
Publikacja stabilnego wydania nie jest ukończona, dopóki gałąź main nie zawiera faktycznie opublikowanego stanu wydania.
- Zacznij od świeżo zaktualizowanej gałęzi
main. Porównaj z niąrelease/YYYY.M.PATCHi przenieś do przodu rzeczywiste poprawki, których brakuje wmain. Nie scalaj automatycznie z nowszą gałęziąmainadapterów zgodności, testowych ani walidacyjnych przeznaczonych wyłącznie dla wydania. - Ustaw na gałęzi
mainopublikowaną stabilną wersję, a nie hipotetyczną wersję kolejnego cyklu wydawniczego. Po zmianie wersji głównej uruchompnpm release:prep, a następniepnpm deps:shrinkwrap:generate. - Doprowadź sekcję
## YYYY.M.PATCHplikuCHANGELOG.mdna gałęzimaindo dokładnej zgodności z otagowaną gałęzią wydania. Uwzględnij stabilną aktualizacjęappcast.xml, jeśli została opublikowana przez wydanie dla macOS. - Nie dodawaj do gałęzi
mainwersjiYYYY.M.PATCH+1, wersji beta ani pustej sekcji przyszłych zmian, dopóki operator jawnie 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żdym prywatnym ćwiczeniu wycofania aktualizuj zmienne repozytorium
RELEASE_ROLLBACK_DRILL_IDorazRELEASE_ROLLBACK_DRILL_DATE.
OpenClaw Stable Main Closeout rozpoczyna działanie od wypchnięcia do gałęzi main, które po stabilnej publikacji zawiera opublikowaną wersję, dziennik zmian i plik appcast. Odczytuje niezmienne dowody powydaniowe, aby powiązać opublikowany tag z uruchomieniami Full Release Validation i Publish, a następnie weryfikuje stabilny stan gałęzi main, wydanie, obowiązkowy okres stabilizacji oraz wymagane dowody wydajnościowe. Dołącza do wydania GitHub niezmienny manifest finalizacji i sumę kontrolną. Automatyczny wyzwalacz wypchnięcia pomija starsze wydania sprzed wprowadzenia niezmiennych dowodów powydaniowych i nigdy nie uznaje takiego pominięcia za ukończoną finalizację.
Pełna finalizacja wymaga obu artefaktów oraz zgodnej sumy kontrolnej. Częściowy manifest odtwarza zapisane SHA gałęzi main i ćwiczenie wycofania, aby ponownie 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 dotyczących ćwiczenia wycofania zostaje pominięte bez ukończenia finalizacji; brakujący lub starszy niż 90 dni rekord ćwiczenia nadal blokuje ręczną finalizację opartą na dowodach. Prywatne polecenia odzyskiwania pozostają w podręczniku dostępnym wyłącznie dla opiekunów. Ręcznego uruchomienia używaj wyłącznie do naprawy lub ponownego odtworzenia stabilnej finalizacji opartej na dowodach.
Starszy awaryjny tag korekcyjny może ponownie wykorzystać dowody pakietu bazowego tylko wtedy, gdy tag korekcyjny wskazuje ten sam commit źródłowy co bazowy tag stabilny. Jego wydanie na Androida ponownie wykorzystuje zweryfikowany plik APK tagu bazowego i dodaje pochodzenie tagu korekcyjnego. Korekta z innym źródłem musi opublikować i zweryfikować własne dowody pakietu oraz użyć wyższego versionCode.
Sprawdzenie wstępne wydania
-
Uruchom
pnpm check:test-typesprzed wstępną weryfikacją wydania, aby typy TypeScript testów pozostawały objęte kontrolą poza szybszą lokalną bramkąpnpm check. -
Uruchom
pnpm check:architectureprzed wstępną weryfikacją wydania, aby szersze kontrole cykli importów i granic architektury przechodziły 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 pakowania. -
Uruchom
pnpm release:preppo podniesieniu wersji głównego pakietu i przed utworzeniem tagu. Polecenie uruchamia wszystkie deterministyczne generatory wydania, których wyniki często tracą spójność po zmianie wersji, konfiguracji lub API: wersje pluginów, pliki shrinkwrap npm, wykaz pluginów, bazowy schemat konfiguracji, metadane konfiguracji wbudowanych kanałów, bazowy stan dokumentacji konfiguracji, eksporty zestawu SDK pluginów oraz bazowy stan API zestawu SDK pluginów.pnpm release:checkponownie uruchamia te zabezpieczenia w trybie kontroli (wraz z kontrolą budżetu powierzchni zestawu SDK pluginów) i zgłasza w jednym przebiegu wszystkie błędy rozbieżności wygenerowanych plików przed uruchomieniem kontroli wydania pakietów. -
Synchronizacja wersji pluginów domyślnie aktualizuje przeznaczony do publikacji pakiet środowiska wykonawczego
@openclaw/ai, wersje oficjalnych pakietów pluginów oraz istniejące minimalne wersjeopenclaw.compat.pluginApido wersji wydania OpenClaw. Traktuj to pole jako minimalną wersję API zestawu SDK/środowiska wykonawczego pluginów, a nie tylko kopię wersji pakietu: w przypadku wydań obejmujących wyłącznie pluginy, które celowo zachowują zgodność ze starszymi hostami OpenClaw, pozostaw minimalną wersję na poziomie najstarszego obsługiwanego API hosta i udokumentuj ten wybór w dowodach wydania pluginu. -
Uruchom ręczny przepływ pracy
Full Release Validationprzed zatwierdzeniem wydania, aby z jednego punktu wejścia uruchomić wszystkie przedwydaniowe środowiska testowe. Przyjmuje on gałąź, tag lub pełny SHA commitu, wyzwala ręczny przepływCIoraz wyzwalaOpenClaw Release Checksdla testów dymnych instalacji, akceptacji pakietu, międzyplatformowych kontroli pakietu, zgodności QA Lab oraz ścieżek Matrix i Telegram. Przebiegi stabilne i pełne zawsze obejmują wyczerpujące testy na żywo/E2E oraz długotrwałe testy ścieżki wydania w Dockerze;run_release_soak=truepozostaje dostępne do jawnego długotrwałego testu wersji beta. Package Acceptance zapewnia kanoniczny test E2E Telegram dla pakietu podczas walidacji kandydata, dzięki czemu nie jest potrzebny drugi równoległy mechanizm odpytywania na żywo.Podaj
release_package_specpo opublikowaniu wersji beta, aby ponownie użyć wydanego pakietu npm w kontrolach wydania, Package Acceptance oraz teście E2E Telegram dla 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 Package Acceptance ma używać innego opublikowanego pakietu niż określony dla wydania. Podajevidence_package_spec, gdy raport dowodów wydania ma wykazać, że walidacja odpowiada opublikowanemu pakietowi npm, bez wymuszania testu E2E Telegram.bash gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.PATCH -
Uruchom ręczny przepływ pracy
Package Acceptance, gdy chcesz uzyskać niezależne dowody dla kandydata na pakiet podczas kontynuowania prac nad wydaniem. Użyjsource=npmdlaopenclaw@beta,openclaw@latestlub dokładnej wersji wydania;source=ref, aby spakować zaufaną gałąź, tag lub SHApackage_refza pomocą 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 inny przebieg GitHub Actions.Przepływ pracy przekształca kandydata w
package-under-test, ponownie wykorzystuje harmonogram testów E2E wydania w Dockerze dla tego archiwum tar i może uruchamiać kontrolę jakości Telegram dla tego samego archiwum za pomocątelegram_mode=mock-openailubtelegram_mode=live-frontier. Gdy wybrane ścieżki Dockera obejmująpublished-upgrade-survivor, artefakt pakietu jest kandydatem, apublished_upgrade_survivor_baselinewskazuje opublikowaną wersję bazową.update-restart-authużywa pakietu kandydata zarówno jako zainstalowanego CLI, jak ipackage-under-test, 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 published_upgrade_survivor_baseline=openclaw@2026.4.26 -f telegram_mode=mock-openaiTypowe profile:
smoke: ścieżki instalacji/kanału/agenta, sieci Gateway oraz przeładowania konfiguracjipackage: natywne dla artefaktu ścieżki pakietu/aktualizacji/ponownego uruchomienia/pluginów bez OpenWebUI ani działającego ClawHubproduct: profil pakietu rozszerzony o kanały MCP, porządkowanie Cron/podagentów, wyszukiwanie internetowe OpenAI oraz OpenWebUIfull: fragmenty ścieżki wydania w Dockerze z OpenWebUIcustom: dokładny wybórdocker_lanesdo ukierunkowanego ponownego przebiegu
-
Uruchom ręczny przepływ pracy
CIbezpośrednio, gdy potrzebujesz jedynie deterministycznego pokrycia standardowego CI dla kandydata do wydania. Ręcznie wyzwolone przebiegi CI pomijają ograniczanie zakresu według zmian i wymuszają fragmenty Linux Node, fragmenty wbudowanych pluginów, fragmenty kontraktów pluginów i kanałów, zgodność z Node 22, kontrolecheck-*icheck-additional-*, testy dymne zbudowanych artefaktów, kontrole dokumentacji, Skills w Pythonie, Windows, macOS oraz ścieżki internacjonalizacji Control UI. Samodzielny ręczny przebieg CI uruchamia Androida tylko po wyzwoleniu zinclude_android=true;Full Release Validationprzekazuje tę wartość wejściową podrzędnemu przebiegowi CI.bash gh workflow run ci.yml --ref release/YYYY.M.PATCH -f include_android=true -
Uruchom
pnpm qa:otel:smokepodczas walidacji telemetrii wydania. Polecenie sprawdza QA Lab za pośrednictwem lokalnego odbiornika OTLP/HTTP i weryfikuje eksport śladów, metryk i dzienników, a także ograniczone atrybuty śladów oraz redagowanie treści i identyfikatorów bez wymagania Opik, Langfuse ani innego zewnętrznego kolektora. -
Uruchom
pnpm qa:otel:collector-smokepodczas walidacji zgodności z kolektorem. Polecenie kieruje ten sam eksport OTLP z QA Lab przez rzeczywisty kontener Docker OpenTelemetry Collector przed wykonaniem asercji lokalnego odbiornika. -
Uruchom
pnpm qa:prometheus:smokepodczas walidacji chronionego pobierania danych przez Prometheus. Polecenie sprawdza QA Lab, odrzuca nieuwierzytelnione pobieranie danych i weryfikuje, że rodziny metryk kluczowe dla wydania nie zawierają treści promptów, surowych identyfikatorów, tokenów uwierzytelniających ani ścieżek lokalnych. -
Uruchom
pnpm qa:observability:smoke, aby kolejno wykonać ścieżki testów dymnych OpenTelemetry i Prometheus dla kopii roboczej kodu źródłowego. -
Uruchom
pnpm release:checkprzed każdym wydaniem oznaczonym tagiem. -
Wstępna weryfikacja
OpenClaw NPM Releasegeneruje dowody dotyczące zależności wydania przed spakowaniem archiwum tar npm. Bramka luk w zabezpieczeniach z ostrzeżeń npm blokuje wydanie. Ryzyko manifestu zależności przechodnich, powierzchnia własności/instalacji zależności oraz raporty zmian zależności służą wyłącznie jako dowody wydania. Raport zmian zależności porównuje kandydata do wydania z poprzednim osiągalnym tagiem wydania. Wstępna weryfikacja przesyła dowody zależności jakoopenclaw-release-dependency-evidence-<tag>, a także osadza je w katalogudependency-evidence/wewnątrz przygotowanego artefaktu wstępnej weryfikacji npm. Właściwa ścieżka publikacji ponownie wykorzystuje ten artefakt wstępnej weryfikacji, a następnie dołącza te same dowody do wydania GitHub jakoopenclaw-<version>-dependency-evidence.zip. -
Uruchom
OpenClaw Release Publish, aby wykonać sekwencję publikacji wprowadzającą zmiany po utworzeniu tagu. Wyzwalaj standardowe publikacje beta i stabilne z zaufanej gałęzimain; tag wydania nadal wskazuje dokładny docelowy commit i może wskazywać narelease/YYYY.M.PATCH. Publikacje alfa Tideclaw pozostają na odpowiadającej im gałęzi alfa. Przekaż zakończony powodzeniempreflight_run_idnpm OpenClaw, zakończony powodzeniemfull_release_validation_run_idoraz dokładnyfull_release_validation_run_attempt, a domyślny zakres publikacji pluginów pozostaw jakoall-publishable, chyba że celowo wykonujesz ukierunkowaną naprawę. Przepływ pracy wykonuje kolejno publikację pluginów npm, publikację pluginów w ClawHub oraz publikację npm OpenClaw, aby główny pakiet nie został opublikowany przed swoimi wydzielonymi pluginami; promocja dla Windows i Androida działa równolegle z publikacją głównego pakietu npm względem roboczej strony wydania. Ponowne przebiegi publikacji można wznawiać: jeśli główna wersja npm została już opublikowana, przepływ pomija wyzwolenie publikacji głównego pakietu po wykazaniu, że archiwum tar w rejestrze odpowiada artefaktowi wstępnej weryfikacji dla tagu, a promocja dla Windows/Androida jest pomijana, gdy wydanie zawiera już zweryfikowany kontrakt artefaktów, dzięki czemu ponowna próba wykonuje tylko etapy zakończone niepowodzeniem. Ukierunkowane naprawy obejmujące wyłącznie pluginy wymagająplugin_publish_scope=selectedoraz niepustej listy pluginów. Przebiegiall-publishableobejmujące wyłącznie pluginy wymagają kompletnych, niezmiennych dowodów wstępnej weryfikacji i Full Release Validation; częściowe dowody są odrzucane. -
Stabilny przebieg
OpenClaw Release Publishwymaga dokładnegowindows_node_tagpo utworzeniu odpowiadającego mu wydaniaopenclaw/openclaw-windows-node, które nie jest wersją wstępną, oraz zatwierdzonej dla kandydata mapywindows_node_installer_digests. Przed wyzwoleniem 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 odpowiada zatwierdzonej mapie. Następnie wyzwalaWindows Node Release, gdy wydanie OpenClaw jest jeszcze wersją roboczą, przekazując przypiętą mapę skrótów instalatorów bez zmian. Podrzędny przepływ pracy pobiera podpisane instalatory Windows Hub z dokładnie tego tagu, porównuje je z przypiętymi skrótami, sprawdza na maszynie wykonawczej Windows, czy ich podpisy Authenticode używają oczekiwanego podmiotu 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 i weryfikuje ich obecność w manifeście oraz skróty. Proces nadrzędny weryfikuje bieżący kontrakt artefaktów x64, ARM64 i sum kontrolnych przed publikacją. Bezpośrednie odzyskiwanie odrzuca nieoczekiwane nazwy artefaktówOpenClawCompanion-*przed zastąpieniem oczekiwanych artefaktów kontraktu przypiętymi bajtami źródłowymi.Ręcznie wyzwalaj
Windows Node Releasewyłącznie w celu odzyskiwania i zawsze przekazuj dokładny tag — nigdylatest— wraz z jawną mapą JSONexpected_installer_digestsz zatwierdzonego wydania źródłowego. Odnośniki pobierania w witrynie powinny wskazywać dokładne adresy URL artefaktów bieżącego stabilnego wydania OpenClaw alboreleases/latest/download/...dopiero po sprawdzeniu, że przekierowanie GitHub do najnowszego wydania wskazuje to samo wydanie; nie zamieszczaj odnośnika wyłącznie do strony wydania repozytorium aplikacji towarzyszącej. -
Kontrole wydania są teraz uruchamiane w osobnym ręcznym przepływie pracy:
OpenClaw Release Checks. Przed zatwierdzeniem wydania uruchamia on również ścieżkę zgodności atrap QA Lab, szybki profil rzeczywistego środowiska Matrix oraz ścieżkę QA Telegram. Ścieżki rzeczywistego środowiska używają środowiskaqa-live-shared; Telegram używa także dzierżaw poświadczeń Convex CI. Uruchom ręczny przepływ pracyQA-Lab - All Laneszmatrix_profile=allimatrix_shards=true, gdy chcesz równolegle przetestować pełny zestaw transportu Matrix, multimediów i E2EE. -
Międzyplatformowa walidacja instalacji i aktualizacji w czasie działania jest częścią publicznych przepływów
OpenClaw Release ChecksiFull Release Validation, które bezpośrednio wywołują przepływ 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 w rzeczywistym środowisku 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ć za pośrednictwem
Full Release Validationalbo z referencji przepływu pracymain/wydania, 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 albo tagu wydania. -
Przebieg wstępny
OpenClaw NPM Releasesłużący tylko do walidacji również przyjmuje 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 tworzyv<package.json version>tylko na potrzeby kontroli metadanych pakietu; rzeczywista publikacja nadal wymaga rzeczywistego tagu wydania. -
Oba przepływy pracy utrzymują rzeczywistą ścieżkę publikacji i promocji na runnerach hostowanych przez GitHub, natomiast niemodyfikująca ścieżka walidacji może używać 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 sekretów przepływu pracyOPENAI_API_KEYiANTHROPIC_API_KEY. -
Przebieg wstępny wydania npm nie czeka już na osobną ścieżkę kontroli wydania.
-
Przed lokalnym otagowaniem kandydata do wydania uruchom
RELEASE_TAG=vYYYY.M.PATCH-beta.N pnpm release:fast-pretag-check. Narzędzie pomocnicze uruchamia szybkie zabezpieczenia wydania, kontrole wydań npm/ClawHub pluginów, kompilację, kompilację interfejsu użytkownika orazrelease:openclaw:npm:checkw kolejności pozwalającej wykryć typowe błędy blokujące zatwierdzenie, zanim rozpocznie się przepływ publikacji GitHub. -
Przed zatwierdzeniem uruchom
RELEASE_TAG=vYYYY.M.PATCH node --import tsx scripts/openclaw-npm-release-check.ts(lub odpowiedni tag wydania wstępnego/korekty). -
Po publikacji npm uruchom
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.PATCH(lub odpowiednią wersję beta/korekty), aby zweryfikować ścieżkę instalacji opublikowanego pakietu z rejestru w świeżym prefiksie tymczasowym. -
Po publikacji wersji 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ć wdrożenie zainstalowanego pakietu, konfigurację Telegram oraz rzeczywiste E2E Telegram względem opublikowanego pakietu npm, używając współdzielonej puli dzierżawionych poświadczeń Telegram. W jednorazowych lokalnych uruchomieniach opiekunowie 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 świeżego środowiska docelowego w Parallels, wywołujeNPM Telegram Beta E2E, odpytuje dokładny 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. Jest on celowo wyłącznie ręczny i nie jest uruchamiany po każdym scaleniu. -
Automatyzacja wydań dla opiekunów stosuje model przebieg wstępny, a następnie promocja:
- Rzeczywista publikacja npm wymaga pomyślnego
preflight_run_idnpm. - Standardowa orkiestracja i przebieg wstępny publikacji wersji beta oraz stabilnej używają zaufanej gałęzi
mainwzględem dokładnego tagu docelowego. Publikacja i przebieg wstępny wersji alfa Tideclaw używają odpowiedniej gałęzi alfa. - Stabilne wydania npm domyślnie używają
beta; publikacja stabilnej wersji npm może jawnie wskazaćlatestza pomocą danych wejściowych przepływu pracy. - Modyfikacja dist-tagów 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; gdy tag istnieje tylko na gałęzi wydania, ale przepływ pracy jest uruchamiany zmain, ustawpublic_release_branch=release/YYYY.M.PATCH. - Rzeczywista publikacja macOS wymaga pomyślnych
preflight_run_idivalidate_run_idmacOS. - Rzeczywiste ścieżki publikacji promują przygotowane artefakty zamiast ponownie je kompilować.
- Rzeczywista publikacja npm wymaga pomyślnego
-
W przypadku stabilnych wydań korygujących, takich jak
YYYY.M.PATCH-N, weryfikator po publikacji sprawdza również tę samą ścieżkę aktualizacji w prefiksie tymczasowym zYYYY.M.PATCHdoYYYY.M.PATCH-N, aby korekty wydania nie pozostawiały po cichu starszych instalacji globalnych z bazową stabilną zawartością. -
Przebieg wstępny wydania npm kończy się niepowodzeniem w razie braku jednoznacznego potwierdzenia, chyba że archiwum tar zawiera zarówno
dist/control-ui/index.html, jak i niepustą zawartośćdist/control-ui/assets/, aby ponownie nie opublikować pustego panelu przeglądarkowego. -
Walidacja po publikacji sprawdza również obecność punktów wejścia opublikowanych pluginów oraz metadanych pakietu w układzie instalacji z rejestru. Wydanie bez wymaganej zawartości środowiska wykonawczego pluginów nie przechodzi weryfikatora po publikacji i nie może zostać promowane do
latest. -
pnpm test:install:smokewymusza także budżetunpackedSizepaczki npm dla kandydującego archiwum aktualizacji, dzięki czemu instalacyjne E2E wykrywa przypadkowy wzrost rozmiaru paczki przed ścieżką publikacji wydania. -
Jeśli prace nad wydaniem obejmowały planowanie CI, manifesty czasów wykonania rozszerzeń lub macierze testów rozszerzeń, przed zatwierdzeniem ponownie wygeneruj i przejrzyj zarządzane przez planer wyniki 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 również mechanizmy aktualizacji: wydanie GitHub musi ostatecznie zawierać spakowane pliki
.zip,.dmgi.dSYM.zip; plikappcast.xmlnamainmusi po publikacji wskazywać nowy stabilny plik zip (przepływ publikacji macOS zatwierdza go automatycznie albo otwiera PR appcastu, gdy bezpośrednie wypchnięcie jest zablokowane); spakowana aplikacja musi zachować identyfikator pakietu inny niż debugowy, niepusty adres URL kanału Sparkle orazCFBundleVersionrówny lub wyższy od kanonicznej minimalnej wersji kompilacji Sparkle dla tej wersji wydania.
Środowiska testowe wydania
Full Release Validation umożliwia operatorom uruchomienie wszystkich testów przedwydaniowych z jednego punktu wejścia. Aby uzyskać dowód dla przypiętego commitu na szybko zmieniającej się gałęzi, użyj narzędzia pomocniczego, dzięki czemu każdy podrzędny przepływ pracy zostanie uruchomiony z gałęzi tymczasowej przypiętej do jednego zaufanego SHA przepływu pracy main, podczas gdy żądany commit pozostanie testowanym kandydatem:
pnpm ci:full-release --sha <full-sha>Narzędzie pomocnicze pobiera bieżący origin/main, wypycha release-ci/<workflow-sha>-... wskazujący ten zaufany commit przepływu pracy, uruchamia Full Release Validation z gałęzi tymczasowej z ref=<target-sha>, ponownie wykorzystuje rygorystyczne dowody dla dokładnego celu, jeśli są dostępne, weryfikuje, czy headSha każdego podrzędnego przepływu pracy odpowiada przypiętemu SHA nadrzędnego przepływu pracy, a następnie usuwa gałąź tymczasową. Przekaż -f reuse_evidence=false, aby wymusić świeże uruchomienie, albo --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 tylko na main pozostają dostępne bez dodawania commitów narzędziowych do kandydata i bez ryzyka przypadkowego potwierdzenia nowszego podrzędnego przebiegu z main.
W celu walidacji gałęzi lub tagu wydania uruchom ją z zaufanej referencji przepływu pracy main i przekaż gałąź albo tag wydania 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.NPrzepływ pracy rozpoznaje docelową referencję, uruchamia ręczny CI z target_ref=<release-ref>, a następnie uruchamia OpenClaw Release Checks. OpenClaw Release Checks rozdziela zadania na test dymny instalacji, międzyplatformowe kontrole wydania, pokrycie ścieżki wydania w rzeczywistym środowisku/E2E Docker po włączeniu testu długotrwałego, akceptację pakietu z kanonicznym E2E pakietu Telegram, zgodność QA Lab, rzeczywisty Matrix i rzeczywisty Telegram. Pełny przebieg obejmujący wszystkie elementy jest akceptowalny tylko wtedy, gdy podsumowanie Full Release Validation wskazuje powodzenie normal_ci, plugin_prerelease i release_checks, chyba że ukierunkowane ponowne uruchomienie celowo pominęło osobny podrzędny przepływ Plugin Prerelease. Samodzielnego podrzędnego przepływu npm-telegram używaj wyłącznie do ukierunkowanego ponownego uruchomienia dla opublikowanego pakietu z release_package_spec lub npm_telegram_package_spec. Końcowe podsumowanie weryfikatora zawiera tabele najwolniejszych zadań dla każdego podrzędnego przebiegu, dzięki czemu kierownik wydania może zobaczyć bieżącą ścieżkę krytyczną bez pobierania dzienników.
Podrzędny przepływ wydajności produktu w tej ścieżce wydania generuje wyłącznie artefakty. Nadrzędny przepływ uruchamia go z publish_reports=false, a walidacja zostaje odrzucona, jeśli zabezpieczenie trybu wyłącznie artefaktowego nie potwierdzi, że publikator raportów 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 parametry ukierunkowanego ponownego uruchamiania opisano w dokumencie Pełna walidacja wydania.
Podrzędne przepływy pracy są uruchamiane z zaufanej referencji wykonującej Full Release Validation, zwykle --ref main, nawet gdy docelowe ref wskazuje starszą gałąź lub tag wydania. Każdy podrzędny przebieg musi używać dokładnego SHA nadrzędnego przepływu pracy; jeśli main zmieni się przed rozpoznaniem uruchomienia podrzędnego przepływu, nadrzędny przepływ kończy się niepowodzeniem w razie braku jednoznacznego potwierdzenia. Nie istnieje osobne wejście referencji przepływu pracy Full Release Validation; zaufany mechanizm wybiera się przez wskazanie referencji uruchomienia przepływu pracy. Nie używaj --ref main -f ref=<sha> do uzyskania dowodu dokładnego commitu na zmieniającej się gałęzi main; nieprzetworzone SHA commitów nie mogą być referencjami uruchomienia przepływu pracy, dlatego użyj pnpm ci:full-release --sha <target-sha>, aby utworzyć gałąź tymczasową na zaufanym origin/main, zachowując docelowy SHA jako dane wejściowe kandydata.
Użyj release_profile, aby wybrać zakres rzeczywistego środowiska/dostawców:
minimum: najszybsza, krytyczna dla wydania ścieżka OpenAI/podstawowa w rzeczywistym środowisku i Dockerstable: profil minimalny oraz stabilne pokrycie dostawców/zaplecza wymagane do zatwierdzenia wydaniafull: profil stabilny oraz szerokie, pomocnicze pokrycie dostawców/multimediów
Walidacja stabilna i pełna zawsze uruchamia przed promocją wyczerpujący zestaw testów rzeczywistego środowiska/E2E, ścieżki wydania Docker oraz ograniczony przegląd zachowania opublikowanych aktualizacji. Ustaw run_release_soak=true, aby zażądać tego samego zestawu dla wersji beta. Zestaw obejmuje cztery najnowsze stabilne pakiety, przypięte wersje bazowe 2026.4.23 i 2026.5.2 oraz starszą wersję 2026.4.15; zduplikowane wersje bazowe są usuwane, a każda wersja bazowa trafia do osobnego zadania 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ędzyplatformowych, akceptacji pakietu oraz kontrolach ścieżki wydania Docker podczas testu długotrwałego. Dzięki temu wszystkie środowiska używające pakietu działają na tych samych bajtach i unikają wielokrotnego kompilowania pakietu. Gdy wersja beta jest już dostępna w npm, ustaw release_package_spec=openclaw@YYYY.M.PATCH-beta.N, 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ędzyplatformowych, akceptacji pakietu, Dockerowej ścieżce wydania oraz ścieżkach pakietu Telegram.
Międzyplatformowy test dymny instalacji OpenAI używa OPENCLAW_CROSS_OS_OPENAI_MODEL, gdy ustawiona jest zmienna repozytorium/organizacji; w przeciwnym razie używa openai/gpt-5.6-luna, ponieważ ta ścieżka potwierdza instalację pakietu, wdrożenie, uruchomienie Gateway i jeden rzeczywisty przebieg agenta, a nie porównuje wydajności najbardziej zaawansowanego modelu. Szersza macierz dostawców rzeczywistego środowiska pozostaje miejscem pokrycia właściwego dla poszczególnych modeli.
W zależności od etapu wydania użyj następujących wariantów:
# 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łnego nadrzędnego przepływu jako pierwszego ponownego uruchomienia po ukierunkowanej poprawce. Jeśli jeden obszar zawiedzie, do następnej weryfikacji użyj zakończonego niepowodzeniem podrzędnego przepływu pracy, zadania, ścieżki Docker, profilu pakietu, dostawcy modelu lub ścieżki QA. Uruchom ponownie pełny nadrzędny przepływ tylko wtedy, gdy poprawka zmieniła współdzieloną orkiestrację wydania lub zdezaktualizowała wcześniejsze dowody ze wszystkich obszarów. Końcowy weryfikator nadrzędnego przepływu 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 zakończone powodzeniem uruchomienie nadrzędnego przepływu tylko wtedy, gdy zweryfikowało dokładnie ten sam docelowy SHA, profil wydania, efektywne ustawienie testów długotrwałych i dane wejściowe walidacji. Jest to ograniczony mechanizm odzyskiwania na potrzeby ponownego uruchomienia tego samego kandydata, a nie ponowne wykorzystywanie dowodów między różnymi SHA. W przypadku zmienionego kandydata, w tym commitu zmieniającego wyłącznie dziennik zmian lub wersję, uruchom ponownie każdą bramkę pakietu, artefaktu, instalacji, Docker lub dostawcy, na którą wpływają zmienione ścieżki lub skróty artefaktów. Nowsze uruchomienia nadrzędnego przepływu dla tego samego odwołania release/* i tej samej grupy ponownego uruchomienia automatycznie zastępują trwające uruchomienia. Przekaż reuse_evidence=false, aby wymusić nowe pełne uruchomienie.
W celu ograniczonego odzyskiwania przekaż rerun_group do nadrzędnego przepływu. all jest właściwym uruchomieniem kandydata do wydania, ci uruchamia tylko standardowy podrzędny przepływ CI, plugin-prerelease uruchamia tylko podrzędny przepływ Plugin przeznaczony wyłącznie dla wydania, release-checks uruchamia wszystkie obszary 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; uruchomienia pełne lub all korzystają z kanonicznego testu E2E Telegram pakietu w ramach Package Acceptance. Ukierunkowane ponowne uruchomienia między systemami operacyjnymi mogą dodać cross_os_suite_filter=windows/packaged-upgrade lub inny filtr systemu operacyjnego albo zestawu. Niepowodzenia kontroli wydania QA blokują standardową walidację wydania, w tym wymagane wykrywanie rozbieżności dynamicznych narzędzi OpenClaw na poziomie standardowym. Uruchomienia alfa Tideclaw mogą nadal traktować ścieżki kontroli wydania niezwiązane z bezpieczeństwem pakietu jako doradcze. Przy release_profile=beta zestawy z rzeczywistymi dostawcami w Run repo/live E2E validation są doradcze (ostrzeżenia, a nie blokady); profile stabilny i pełny nadal traktują je jako blokujące. Gdy live_suite_filter jawnie żąda kontrolowanej bramką ścieżki QA 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
Obszar Vitest jest ręcznym podrzędnym przepływem pracy CI. Ręczne CI celowo pomija ograniczanie zakresu na podstawie 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 w Pythonie, Windows, macOS oraz internacjonalizację Control UI. Android jest uwzględniany, gdy Full Release Validation uruchamia ten obszar, ponieważ nadrzędny przepływ przekazuje include_android=true; samodzielne ręczne CI wymaga include_android=true, aby objąć Androida.
Używaj tego obszaru, 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 w ścieżce wydania. Dowody, które należy zachować:
- podsumowanie
Full Release Validationpokazujące adres URL uruchomionego przepływuCI - zakończone powodzeniem uruchomienie
CIdla dokładnego docelowego SHA - nazwy zakończonych niepowodzeniem lub powolnych fragmentów z zadań CI podczas badania regresji
- artefakty czasów wykonania Vitest, takie jak
.artifacts/vitest-shard-timings.json, gdy uruchomienie wymaga analizy wydajności
Uruchamiaj ręczne CI bezpośrednio tylko wtedy, gdy wydanie wymaga deterministycznego standardowego CI, ale nie obszarów Docker, QA Lab, testów na żywo, między systemami operacyjnymi ani pakietu. 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
Obszar Docker znajduje się w OpenClaw Release Checks za pośrednictwem openclaw-live-and-e2e-checks-reusable.yml, wraz z przepływem pracy install-smoke w trybie wydania. Weryfikuje kandydata do wydania w spakowanych środowiskach Docker, a nie wyłącznie za pomocą 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 lub ponowne wykorzystanie obrazu testu dymnego głównego Dockerfile według docelowego SHA, z zadaniami testów dymnych QR, root/Gateway oraz instalatora/Bun uruchamianymi jako osobne fragmenty
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, odplugins-runtime-install-adoplugins-runtime-install-horazopenwebui - zakres OpenWebUI na dedykowanym runnerze z dużą przestrzenią dyskową, gdy jest wymagany
- podzielone ścieżki instalacji i odinstalowania dołączonych Pluginów od
bundled-plugin-install-uninstall-0dobundled-plugin-install-uninstall-23 - zestawy z rzeczywistymi dostawcami/E2E oraz zakres modeli na żywo w Docker, gdy kontrole wydania obejmują zestawy 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 testów na żywo/E2E zamiast ponownie uruchamiać wszystkie fragmenty wydania. Wygenerowane polecenia ponownego uruchomienia zawierają wcześniejszy 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 wykorzystać ten sam plik tarball i obrazy GHCR.
QA Lab
Obszar QA Lab jest również częścią OpenClaw Release Checks. Jest to bramka wydania dla zachowań agentowych i poziomu kanałów, oddzielna od mechaniki pakietów Vitest i Docker.
Zakres QA Lab dla wydania obejmuje:
- ścieżkę parytetu pozorowanego porównującą ścieżkę kandydata OpenAI z poziomem bazowym
anthropic/claude-opus-4-8przy użyciu pakietu parytetu agentowego - szybki profil QA Matrix na żywo korzystający ze środowiska
qa-live-shared - ścieżkę QA Telegram na żywo korzystającą z 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żywaj tego obszaru, aby odpowiedzieć na pytanie „czy wydanie zachowuje się poprawnie w scenariuszach QA i przepływach kanałów na żywo?”. Podczas zatwierdzania wydania zachowaj adresy URL artefaktów dla ścieżek parytetu, Matrix i Telegram. Pełny zakres Matrix pozostaje dostępny jako ręczne, podzielone na fragmenty uruchomienie QA Lab zamiast domyślnej ścieżki krytycznej dla wydania.
Pakiet
Obszar pakietu jest bramką produktu możliwego do zainstalowania. Jest obsługiwany przez Package Acceptance i resolver scripts/resolve-openclaw-package-candidate.mjs. Resolver normalizuje kandydata do pliku tarball package-under-test używanego przez Docker E2E, weryfikuje zawartość pakietu, zapisuje wersję pakietu i SHA-256 oraz utrzymuje odwołanie uprzęży 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: spakowanie zaufanej gałęzipackage_ref, tagu lub pełnego SHA commitu przy użyciu wybranej uprzężyworkflow_refsource=url: pobranie publicznego pliku HTTPS.tgzz wymaganympackage_sha256; poświadczenia w adresie URL, niestandardowe porty HTTPS, prywatne, wewnętrzne lub specjalnego przeznaczenia nazwy hostów albo rozpoznane adresy oraz niebezpieczne przekierowania są odrzucanesource=trusted-url: pobranie pliku 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 dodawać na poziomie danych wejściowych obejście sieci prywatnej dosource=urlsource=artifact: ponowne użycie 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 root-managed-vps-upgrade update-restart-auth plugins-offline plugin-update plugin-binding-command-escape, telegram_mode=mock-openai. Package Acceptance zachowuje migrację, aktualizację, aktualizację VPS zarządzanego przez użytkownika root, ponowne uruchomienie po aktualizacji ze skonfigurowanym uwierzytelnianiem, instalację Skills z aktywnego ClawHub, czyszczenie nieaktualnych zależności Pluginów, działające offline dane testowe Pluginów, aktualizację Pluginów, zabezpieczenie przed ucieczką z powiązania polecenia Pluginu oraz QA pakietu Telegram względem tego samego rozpoznanego pliku tarball. Blokujące kontrole wydania używają domyślnie najnowszego opublikowanego pakietu jako poziomu bazowego; profil beta z run_release_soak=true, release_profile=stable lub release_profile=full rozszerza przegląd published-upgrade-survivor o last-stable-4 oraz przypięte poziomy bazowe 2026.4.23, 2026.5.2 i 2026.4.15 ze scenariuszami reported-issues. Użyj Package Acceptance z source=npm dla już wydanego kandydata, source=ref dla lokalnego pliku tarball npm opartego na SHA przed publikacją, source=trusted-url dla należącego do opiekunów firmowego lub prywatnego serwera lustrzanego albo source=artifact dla przygotowanego pliku tarball przesłanego przez inne uruchomienie GitHub Actions.
Jest to natywny dla GitHub zamiennik większości zakresu pakietów i aktualizacji, który wcześniej wymagał Parallels. Kontrole wydania między systemami operacyjnymi nadal mają znaczenie dla wdrażania, instalatora i zachowań specyficznych dla platformy, ale walidacja produktu dotycząca pakietów i aktualizacji powinna preferować Package Acceptance.
Kanoniczną listą kontrolną walidacji aktualizacji i Pluginów jest Testowanie aktualizacji i Pluginów. Użyj jej podczas wybierania, która lokalna ścieżka, ścieżka Docker, Package Acceptance lub kontrola wydania potwierdza instalację albo aktualizację Pluginu, czyszczenie przez doctor lub zmianę migracji opublikowanego pakietu. Wyczerpująca migracja aktualizacji opublikowanych pakietów z każdej stabilnej wersji 2026.4.23+ jest osobnym ręcznym przepływem pracy Update Migration, a nie częścią Full Release CI.
Tolerancja starszych wersji Package Acceptance jest celowo ograniczona czasowo. Pakiety do wersji 2026.4.25 włącznie mogą używać ścieżki zgodności dla braków metadanych już opublikowanych w npm: prywatnych wpisów zawartości QA brakujących w pliku tarball, braku gateway install --wrapper, braku plików poprawek w danych testowych git utworzonych z pliku tarball, braku utrwalonego update.channel, starszych lokalizacji rekordów instalacji Pluginów, braku utrwalania rekordów instalacji z 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ć współczesne kontrakty pakietów; te same braki powodują niepowodzenie walidacji wydania.
Używaj szerszych profili Package Acceptance, gdy pytanie dotyczące wydania odnosi się do rzeczywistego pakietu możliwego do zainstalowania:
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 oraz ponownego wczytania konfiguracjipackage: kontrakty instalacji/aktualizacji/ponownego uruchomienia/pakietów Pluginów oraz dowód instalacji Skills na żywo z ClawHub; jest to domyślna opcja kontroli wydaniaproduct:packageoraz kanały MCP, czyszczenie cron/podagentów, wyszukiwanie w sieci OpenAI i OpenWebUIfull: fragmenty ścieżki wydania Docker z OpenWebUIcustom: dokładna listadocker_lanesdo ukierunkowanych ponownych uruchomień
Aby uzyskać dowód Telegram dla kandydata pakietu, włącz telegram_mode=mock-openai lub telegram_mode=live-frontier w Package Acceptance. Przepływ pracy przekazuje rozwiązany plik tar pakietu package-under-test do ścieżki Telegram; samodzielny przepływ pracy Telegram nadal przyjmuje opublikowaną specyfikację npm na potrzeby kontroli po publikacji.
Automatyzacja publikowania regularnych wydań
W przypadku publikacji wersji beta, latest, Pluginów, GitHub Release i publikacji na platformach
standardowym punktem wejścia wprowadzającym zmiany jest OpenClaw Release Publish. Comiesięczna
ścieżka rozszerzonej stabilności .33+, obejmująca wyłącznie npm, nie używa tego koordynatora.
Standardowy przepływ pracy koordynuje przepływy pracy zaufanych wydawców w kolejności wymaganej
przez wydanie:
- Pobierz tag wydania i ustal SHA jego commita.
- Sprawdź, czy tag jest osiągalny z
mainlubrelease/*(albo z gałęzi alfa Tideclaw w przypadku przedpremierowych wersji 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, znacznikiem dystrybucyjnym npm oraz zapisanympreflight_run_idpo zweryfikowaniu zapisanegofull_release_validation_run_idi 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 zatwierdzonymi 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 dla dokładnego 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 stabilna z domyślnym znacznikiem dystrybucyjnym 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średnie promowanie wydania stabilnego do latest jest jawne:
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 używaj wyłącznie do ukierunkowanych napraw lub ponownych publikacji. OpenClaw Release Publish odrzuca plugin_publish_scope=selected, gdy publish_openclaw_npm=true, aby pakiet podstawowy nie mógł zostać wydany bez wszystkich oficjalnych Pluginów możliwych do opublikowania, w tym @openclaw/diffs-language-pack. W przypadku naprawy wybranego Pluginu ustaw publish_openclaw_npm=false wraz z plugin_publish_scope=selected i plugins=@openclaw/name albo wywołaj bezpośrednio podrzędny przepływ pracy.
Wyjątkiem jest inicjalizacja pierwszej publikacji w ClawHub: wywołaj Plugin ClawHub New
z zaufanej gałęzi main i przekaż pełne SHA docelowego wydania przez ref.
Nigdy nie uruchamiaj samego przepływu inicjalizacyjnego 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 akceptuje wyłącznie dokładny cel osiągalny z main lub release/*.
Nie wczytuje 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 identyfikator slug/tożsamość
pakietu przed utworzeniem tagu wydania. Zatwierdź środowisko
clawhub-plugin-bootstrap 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 rzeczywista inicjalizacja po utworzeniu tagu musi zawierać dokładny
tag wydania oraz identyfikator, próbę i gałąź nadrzędnego uruchomienia OpenClaw Release Publish.
Przepływ nadrzędny poświadcza SHA własnego przepływu pracy oraz oddzielne, dokładne SHA zaufanej
gałęzi main dla Plugin ClawHub New; uruchomienie podrzędne i każde zatwierdzenie chronionego
środowiska muszą odpowiadać temu zatwierdzonemu SHA procesu podrzędnego. 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/skrót artefaktu Actions,
uruchomienie/próba producenta, docelowe SHA oraz SHA-256/rozmiar pliku tar każdego pakietu są
przekazywane do zadań walidacyjnych i chronionych. Zadanie chronione pobiera wyłącznie narzędzia
z zaufanej gałęzi main, weryfikuje krotkę artefaktu za pośrednictwem interfejsu GitHub API, pobiera
według dokładnego identyfikatora artefaktu, ponownie oblicza skrót każdego pliku tar oraz weryfikuje lokalne ścieżki TAR i
tożsamość pakietu zgodnie z regułami kanonizacji USTAR przypiętej wersji CLI. Każdy
kandydat przechodzi następnie próbne publikowanie za pomocą przypiętej wersji CLI, które kończy się przed
wyszukiwaniem w rejestrze lub uwierzytelnianiem. Filtr wstępny zadania z danymi uwierzytelniającymi ogranicza skompresowane ClawPacki
do 120 MiB, łączną zawartość plików do 50 MiB, rozwinięte dane TAR do 64 MiB oraz
liczbę wpisów TAR do 10 000. Naprawa zaufanego wydawcy dla istniejącego pakietu pozostaje
ograniczona wyłącznie do konfiguracji, ale nadal pakuje cel i wymaga żądanego tagu
oraz dokładnej zgodności bajtów i metadanych rejestru przed zmianą konfiguracji zaufanego wydawcy.
Weryfikacja po publikacji pobiera artefakt ClawHub i wymaga zgodności SHA-256 oraz rozmiaru.
Odzyskiwanie przez ponowne uruchomienie nieudanych zadań może wykorzystać artefakt pakietu z wcześniejszej
próby wyłącznie wtedy, gdy dokładne zadanie producenta zakończyło się pomyślnie. Końcowy dowód wiąże również
zablokowaną wersję ClawHub, SHA-256 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żące, pełne, 40-znakowe SHA commita gałęzi przepływu pracy na potrzeby wyłącznie walidacyjnej kontroli wstępnejpreflight_only:truewyłącznie dla walidacji/budowania/pakowania,falsedla rzeczywistej ścieżki publikowaniapreflight_run_id: identyfikator istniejącego, pomyślnego uruchomienia kontroli wstępnej, wymagany na rzeczywistej ścieżce publikowania, aby przepływ pracy ponownie wykorzystał przygotowany plik tar zamiast budować go ponowniefull_release_validation_run_id: identyfikator pomyślnego uruchomieniaFull Release Validationdla tego tagu/SHA, wymagany przy rzeczywistej publikacji. Publikacje beta mogą być kontynuowane wyłącznie na podstawie kontroli wstępnej z ostrzeżeniem, ale promocja stabilna/dolatestnadal 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ć dowodu autoryzacji podczas publikowania.release_publish_run_id: identyfikator zatwierdzonego uruchomieniaOpenClaw Release Publish; wymagany, gdy ten przepływ pracy jest wywoływany przez ten proces nadrzędny (wywołania rzeczywistego publikowania przez aktora-bota)plugin_npm_run_id: identyfikator pomyślnego uruchomieniaPlugin NPM Releasedla dokładnego punktu HEAD; wymagany do rzeczywistego wydania podstawowego pakietuextended-stablenpm_dist_tag: docelowy znacznik npm dla ścieżki publikowania; przyjmujealpha,beta,latestlubextended-stable, a domyślniebeta. 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; znpm_dist_tag=extended-stableomija comiesięczne kryteria kwalifikacji do rozszerzonej stabilności, zachowując kontrole tożsamości wydania, artefaktu, zatwierdzenia i odczytu zwrotnego.
Plugin NPM Release przyjmuje npm_dist_tag=default dla dotychczasowego zachowania
wydania lub npm_dist_tag=extended-stable dla chronionej ścieżki comiesięcznej. Opcja
rozszerzonej stabilności wymaga publish_scope=all-publishable, pustego
wejścia plugins, końcowego patcha o numerze co najmniej 33 oraz kanonicznej
gałęzi extended-stable/YYYY.M.33 wskazującej dokładnie swój najnowszy commit. Nigdy nie przesuwa znaczników 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 polecenia npm dist-tag add. Ponowne próby
pomijają dokładne wersje już obecne w npm, a następnie kończą się bezpiecznie błędem, jeśli pełny
odczyt zwrotny nie potwierdzi, że wszystkie dokładne pakiety i znacznik extended-stable osiągnęły zgodność.
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 kontroli wstępnejOpenClaw 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 wersją przedpremierową; wymagany do publikacji stabilnego wydania OpenClawwindows_node_installer_digests: zatwierdzona dla kandydata zwarta mapa JSON bieżących nazw instalatorów Windows do ich przypiętych skrótówsha256:; wymagana do publikacji stabilnego wydania OpenClawnpm_telegram_run_id: opcjonalny identyfikator pomyślnego uruchomieniaNPM Telegram Beta E2E, który ma zostać uwzględniony w końcowym dowodzie wydanianpm_dist_tag: docelowy znacznik npm dla pakietu OpenClaw, jeden zalpha,betalublatestplugin_publish_scope: domyślnieall-publishable; używajselectedwyłącznie do ukierunkowanych napraw dotyczących tylko Pluginów zpublish_openclaw_npm=falseplugins: rozdzielone przecinkami nazwy pakietów@openclaw/*, gdyplugin_publish_scope=selectedpublish_openclaw_npm: domyślnietrue; ustawfalsewyłącznie podczas używania przepływu pracy jako koordynatora napraw dotyczących tylko Pluginówrelease_profile: profil zakresu wydania używany w podsumowaniach dowodów wydania; domyślniefrom-validation, co powoduje odczyt z manifestu walidacji, lub można go zastąpić wartościąbeta,stablealbofullwait_for_clawhub: domyślniefalse, aby dostępność npm nie była blokowana przez proces pomocniczy ClawHub; ustawtruewyłącznie wtedy, gdy zakończenie przepływu pracy musi obejmować zakończenie ClawHub
OpenClaw Release Checks przyjmuje następujące dane wejściowe kontrolowane przez operatora:
ref: gałąź, tag lub pełne SHA commita do zweryfikowania. Kontrole używające sekretów wymagają, aby rozwiązany commit był osiągalny z gałęzi OpenClaw lub tagu wydania.run_release_soak: włącza wyczerpujące testy długotrwałe na żywo/E2E, ścieżki wydania Docker oraz odporności aktualizacji ze wszystkich wcześniejszych wersji dla kontroli wydania beta. Jest wymuszane przezrelease_profile=stableirelease_profile=full.
Zasady:
- Zwykłe wersje finalne i poprawkowe z numerem poprawki poniżej
33mogą być publikowane w kanalebetalublatest. Wersje finalne z numerem poprawki33lub wyższym muszą być publikowane w kanaleextended-stable, a wersje z sufiksem poprawkowym na tej granicy są odrzucane. - Tagi wersji wstępnych beta mogą być publikowane wyłącznie w kanale
beta; tagi wersji wstępnych alfa mogą być publikowane wyłącznie w kanalealpha - W przypadku
OpenClaw NPM Releasepodanie pełnego SHA commitu jest dozwolone tylko wtedy, gdypreflight_only=true OpenClaw Release ChecksiFull Release Validationzawsze służą wyłącznie do walidacji- Właściwa ś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
Zwykła sekwencja stabilnego wydania beta/latest
Ta starsza sekwencja dotyczy zwykłego, zautomatyzowanego wydania, które obejmuje również pluginy, GitHub Release, Windows i prace związane z innymi platformami. Nie jest to comiesięczna ścieżka rozszerzonego wsparcia stabilnego .33+, przeznaczona wyłącznie dla npm i opisana na początku tej strony.
Podczas przygotowywania zwykłego, zautomatyzowanego wydania stabilnego:
- Uruchom
OpenClaw NPM Releasez ustawieniempreflight_only=true. Zanim tag zostanie utworzony, do próbnego uruchomienia przepływu kontroli wstępnej, służącego wyłącznie do walidacji, możesz użyć bieżącego pełnego SHA commitu gałęzi przepływu pracy. - Wybierz
npm_dist_tag=betadla standardowego przepływu rozpoczynającego od wersji beta albolatesttylko wtedy, gdy celowo chcesz opublikować wersję stabilną bezpośrednio. - Uruchom
Full Release Validationdla gałęzi wydania, tagu wydania lub pełnego SHA commitu, gdy chcesz uzyskać w jednym ręcznym przepływie pracy standardowe CI oraz testy rzeczywistej pamięci podręcznej promptów, Docker, QA Lab, Matrix i Telegram. Jeśli celowo potrzebujesz tylko deterministycznego, standardowego grafu testów, uruchom zamiast tego ręczny przepływ pracyCIdla odwołania wydania. - Wybierz dokładny tag wydania bez oznaczenia wersji wstępnej
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 tych instalatorów jakowindows_node_installer_digests. Narzędzie pomocnicze wersji kandydującej zapisuje obie wartości i uwzględnia je w wygenerowanym poleceniu publikacji. - Zapisz wartości zakończonych powodzeniem uruchomień:
preflight_run_id,full_release_validation_run_idoraz dokładną wartośćfull_release_validation_run_attempt. - Uruchom
OpenClaw Release Publishz zaufanej gałęzimain, używając tego samegotag, tego samegonpm_dist_tag, wybranegowindows_node_tag, zapisanej wartościwindows_node_installer_digestsoraz zapisanych wartościpreflight_run_id,full_release_validation_run_idifull_release_validation_run_attempt. Proces publikuje wydzielone pluginy w npm i ClawHub przed promowaniem pakietu npm OpenClaw. - Jeśli wydanie trafiło do kanału
beta, użyj przepływu pracyopenclaw/releases/.github/workflows/openclaw-npm-dist-tags.yml, aby promować tę wersję stabilną z kanałubetadolatest. - Jeśli wydanie zostało celowo opublikowane bezpośrednio w kanale
latest, a kanałbetama natychmiast wskazywać tę samą stabilną kompilację, użyj tego samego przepływu pracy wydania, aby skierować oba tagi dystrybucyjne na wersję stabilną, albo pozwól, aby później zrobiła to jego zaplanowana synchronizacja samonaprawcza.
Modyfikowanie tagów dystrybucyjnych odbywa się w repozytorium rejestru wydań, ponieważ nadal wymaga ono NPM_TOKEN, podczas gdy repozytorium źródłowe używa do publikacji wyłącznie OIDC. Dzięki temu zarówno ścieżka publikacji bezpośredniej, jak i ścieżka promocji rozpoczynająca od wersji beta pozostają udokumentowane i widoczne dla operatorów.
Jeśli opiekun musi awaryjnie użyć lokalnego uwierzytelniania npm, wszystkie polecenia interfejsu CLI 1Password (op) należy uruchamiać wyłącznie w dedykowanej sesji tmux. Nie wywołuj op bezpośrednio z głównej powłoki agenta; umieszczenie go w sesji tmux zapewnia widoczność monitów, alertów i obsługi haseł jednorazowych 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 pliku openclaw/maintainers/release/README.md, który zawiera właściwą procedurę wykonawczą.