Polityka wydań
OpenClaw ma trzy publiczne ścieżki wydań:- stable: tagowane wydania publikowane domyślnie do npm
beta, albo do npmlatest, gdy zostanie to jawnie zażądane - beta: tagi prerelease publikowane do npm
beta - dev: ruchoma głowa
main
Nazewnictwo wersji
- Wersja wydania stable:
YYYY.M.D- Tag Git:
vYYYY.M.D
- Tag Git:
- Wersja poprawkowego wydania stable:
YYYY.M.D-N- Tag Git:
vYYYY.M.D-N
- Tag Git:
- Wersja prerelease beta:
YYYY.M.D-beta.N- Tag Git:
vYYYY.M.D-beta.N
- Tag Git:
- Nie dopełniaj miesiąca ani dnia zerami
latestoznacza bieżące promowane wydanie stable w npmbetaoznacza bieżący cel instalacji beta- Wydania stable i poprawkowe stable są domyślnie publikowane do npm
beta; operatorzy wydań mogą jawnie kierować dolatestalbo później promować zweryfikowany build beta - Każde wydanie stable OpenClaw dostarcza razem pakiet npm i aplikację macOS; wydania beta zwykle najpierw walidują i publikują ścieżkę npm/package, a budowanie/podpisywanie/notaryzacja aplikacji macOS są zarezerwowane dla stable, chyba że jawnie zażądano inaczej
Harmonogram wydań
- Wydania przechodzą najpierw przez beta
- Stable następuje dopiero po zwalidowaniu najnowszej beta
- Maintainerzy zwykle wycinają wydania z gałęzi
release/YYYY.M.Dutworzonej z bieżącegomain, aby walidacja wydań i poprawki nie blokowały nowego rozwoju namain - Jeśli tag beta został już wypchnięty lub opublikowany i wymaga poprawki, maintainerzy tworzą
kolejny tag
-beta.Nzamiast usuwać lub odtwarzać stary tag beta - Szczegółowa procedura wydania, zgody, poświadczenia i uwagi dotyczące odzyskiwania są przeznaczone tylko dla maintainerów
Preflight wydania
- Uruchom
pnpm check:test-typesprzed preflightem wydania, aby testowy TypeScript nadal był objęty kontrolą poza szybszą lokalną bramkąpnpm check - Uruchom
pnpm check:architectureprzed preflightem wydania, aby szersze kontrole cykli importów i granic architektury były zielone poza szybszą lokalną bramką - Uruchom
pnpm build && pnpm ui:buildprzedpnpm release:check, aby oczekiwane artefakty wydaniadist/*i bundel Control UI istniały na potrzeby kroku walidacji pack - Uruchom
pnpm release:checkprzed każdym tagowanym wydaniem - Kontrole wydania są teraz uruchamiane w oddzielnym ręcznym workflow:
OpenClaw Release Checks - Międzyplatformowa walidacja środowiska instalacji i aktualizacji jest uruchamiana z
prywatnego workflow wywołującego
openclaw/releases-private/.github/workflows/openclaw-cross-os-release-checks.yml, który wywołuje publiczny workflow wielokrotnego użytku.github/workflows/openclaw-cross-os-release-checks-reusable.yml - Ten podział jest celowy: utrzymuj rzeczywistą ścieżkę wydania npm krótką, deterministyczną i skupioną na artefaktach, podczas gdy wolniejsze testy na żywo pozostają na własnej ścieżce, aby nie opóźniały ani nie blokowały publikacji
- Kontrole wydania muszą być uruchamiane z referencji workflow
mainalbo z referencji workflowrelease/YYYY.M.D, aby logika workflow i sekrety pozostawały pod kontrolą - Ten workflow akceptuje albo istniejący tag wydania, albo bieżący pełny 40-znakowy SHA commita gałęzi workflow
- W trybie SHA commita akceptuje tylko bieżący HEAD gałęzi workflow; dla starszych commitów wydania użyj tagu wydania
- Preflight tylko do walidacji
OpenClaw NPM Releasetakże akceptuje bieżący pełny 40-znakowy SHA commita gałęzi workflow bez wymagania wypchniętego tagu - Ta ścieżka SHA służy tylko do walidacji i nie może zostać promowana do realnej publikacji
- W trybie SHA workflow syntetyzuje
v<package.json version>tylko na potrzeby sprawdzenia metadanych pakietu; prawdziwa publikacja nadal wymaga prawdziwego tagu wydania - Oba workflow utrzymują rzeczywistą ścieżkę publikacji i promocji na runnerach hostowanych przez GitHub, podczas gdy niemutująca ścieżka walidacji może używać większych runnerów Linux Blacksmith
- Ten workflow uruchamia
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cachez użyciem sekretów workflowOPENAI_API_KEYiANTHROPIC_API_KEY - Preflight wydania npm nie czeka już na oddzielną ścieżkę kontroli wydania
- Uruchom
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(albo pasujący tag beta/poprawkowy) przed zatwierdzeniem - Po publikacji npm uruchom
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(albo pasującą wersję beta/poprawkową), aby zweryfikować opublikowaną ścieżkę instalacji z rejestru w świeżym tymczasowym prefiksie - Automatyzacja wydań maintainerów używa teraz modelu preflight-then-promote:
- prawdziwa publikacja npm musi przejść pomyślny
preflight_run_idnpm - prawdziwa publikacja npm musi zostać uruchomiona z tej samej gałęzi
mainalborelease/YYYY.M.D, co udany preflight run - wydania stable npm domyślnie kierują do
beta - publikacja stable npm może jawnie kierować do
latestprzez input workflow - mutacja npm dist-tag oparta na tokenie znajduje się teraz w
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlze względów bezpieczeństwa, ponieważnpm dist-tag addnadal wymagaNPM_TOKEN, podczas gdy publiczne repo utrzymuje publikację tylko z OIDC - publiczne
macOS Releasesłuży tylko do walidacji - prawdziwa prywatna publikacja mac musi przejść pomyślne prywatne identyfikatory
preflight_run_idivalidate_run_id - ścieżki prawdziwej publikacji promują przygotowane artefakty zamiast budować je ponownie
- prawdziwa publikacja npm musi przejść pomyślny
- Dla poprawkowych wydań stable, takich jak
YYYY.M.D-N, weryfikator po publikacji sprawdza także tę samą ścieżkę aktualizacji zYYYY.M.DdoYYYY.M.D-Nw tymczasowym prefiksie, aby poprawki wydania nie mogły po cichu pozostawić starszych globalnych instalacji na bazowym ładunku stable - Preflight wydania npm kończy się bezpieczną odmową, jeśli tarball nie zawiera zarówno
dist/control-ui/index.html, jak i niepustego ładunkudist/control-ui/assets/, abyśmy nie wysłali znowu pustego panelu przeglądarkowego pnpm test:install:smokewymusza też budżetunpackedSizenpm pack na kandydującym tarballu aktualizacji, aby instalator e2e wychwytywał przypadkowe zwiększenie rozmiaru pack przed ścieżką publikacji wydania- Jeśli prace nad wydaniem dotyczyły planowania CI, manifestów czasów rozszerzeń albo
macierzy testów rozszerzeń, przed zatwierdzeniem wygeneruj ponownie i przejrzyj
wyjścia macierzy workflow
checks-node-extensionsnależące do planera z.github/workflows/ci.yml, aby informacje o wydaniu nie opisywały nieaktualnego układu CI - Gotowość wydania stable macOS obejmuje też powierzchnie aktualizatora:
- wydanie GitHub musi ostatecznie zawierać spakowane
.zip,.dmgi.dSYM.zip appcast.xmlnamainmusi po publikacji wskazywać nowy stabilny zip- spakowana aplikacja musi zachować nie-debugowe bundle id, niepusty URL feedu Sparkle
i
CFBundleVersionna poziomie co najmniej kanonicznego progu buildów Sparkle dla tej wersji wydania
- wydanie GitHub musi ostatecznie zawierać spakowane
Inputy workflow NPM
OpenClaw NPM Release akceptuje te inputy kontrolowane przez operatora:
tag: wymagany tag wydania, taki jakv2026.4.2,v2026.4.2-1albov2026.4.2-beta.1; gdypreflight_only=true, może to być także bieżący pełny 40-znakowy SHA commita gałęzi workflow dla preflightu tylko do walidacjipreflight_only:truetylko dla walidacji/build/package,falsedla rzeczywistej ścieżki publikacjipreflight_run_id: wymagane w rzeczywistej ścieżce publikacji, aby workflow ponownie użył przygotowanego tarballa z udanego preflightunpm_dist_tag: docelowy tag npm dla ścieżki publikacji; domyślniebeta
OpenClaw Release Checks akceptuje te inputy kontrolowane przez operatora:
ref: istniejący tag wydania albo bieżący pełny 40-znakowy SHA commitamaindo walidacji przy uruchomieniu zmain; z gałęzi wydania użyj istniejącego tagu wydania albo bieżącego pełnego 40-znakowego SHA commita gałęzi wydania
- Tagi stable i poprawkowe mogą publikować albo do
beta, albo dolatest - Tagi prerelease beta mogą publikować tylko do
beta - Dla
OpenClaw NPM Releasepełny input SHA commita jest dozwolony tylko wtedy, gdypreflight_only=true OpenClaw Release Checkszawsze służy tylko do walidacji i także akceptuje bieżący SHA commita gałęzi workflow- Tryb SHA commita dla kontroli wydania wymaga też bieżącego HEAD gałęzi workflow
- Rzeczywista ścieżka publikacji musi używać tego samego
npm_dist_tag, który był użyty podczas preflightu; workflow weryfikuje te metadane przed kontynuacją publikacji
Sekwencja wydania stable npm
Przy wycinaniu wydania stable npm:- Uruchom
OpenClaw NPM Releasezpreflight_only=true- Zanim tag zacznie istnieć, możesz użyć bieżącego pełnego SHA commita gałęzi workflow do walidacyjnego dry run workflow preflight
- Wybierz
npm_dist_tag=betadla zwykłego przepływu beta-first albolatesttylko wtedy, gdy celowo chcesz bezpośredniej publikacji stable - Uruchom osobno
OpenClaw Release Checksz tym samym tagiem albo pełnym bieżącym SHA commita gałęzi workflow, gdy chcesz pokrycia na żywo dla prompt cache- To jest rozdzielone celowo, aby pokrycie na żywo pozostawało dostępne bez ponownego sprzęgania długo działających lub niestabilnych testów z workflow publikacji
- Zachowaj udany
preflight_run_id - Uruchom ponownie
OpenClaw NPM Releasezpreflight_only=false, tym samymtag, tym samymnpm_dist_tagi zapisanympreflight_run_id - Jeśli wydanie trafiło do
beta, użyj prywatnego workflowopenclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml, aby promować tę wersję stable zbetadolatest - Jeśli wydanie zostało celowo opublikowane bezpośrednio do
latest, abetapowinno od razu wskazywać ten sam build stable, użyj tego samego prywatnego workflow, aby skierować oba dist-tagi na wersję stable, albo pozwól, aby jego zaplanowana samonaprawiająca synchronizacja przesunęłabetapóźniej
NPM_TOKEN, podczas gdy publiczne repo utrzymuje publikację tylko z OIDC.
Dzięki temu zarówno ścieżka bezpośredniej publikacji, jak i ścieżka promocji beta-first pozostają
udokumentowane i widoczne dla operatora.
Publiczne odwołania
.github/workflows/openclaw-npm-release.yml.github/workflows/openclaw-release-checks.yml.github/workflows/openclaw-cross-os-release-checks-reusable.ymlscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
openclaw/maintainers/release/README.md
jako właściwego runbooka.