11 KiB
11 KiB
| read_when | summary | title | x-i18n | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Canali di rilascio pubblici, denominazione delle versioni e cadenza | Politica di rilascio |
|
Politica di rilascio
OpenClaw ha tre canali di rilascio pubblici:
- stable: release taggate che pubblicano su npm
betaper impostazione predefinita, oppure su npmlatestquando richiesto esplicitamente - beta: tag di prerelease che pubblicano su npm
beta - dev: la testa mobile di
main
Denominazione delle versioni
- Versione di rilascio stable:
YYYY.M.D- Tag Git:
vYYYY.M.D
- Tag Git:
- Versione di rilascio stable correttiva:
YYYY.M.D-N- Tag Git:
vYYYY.M.D-N
- Tag Git:
- Versione di prerelease beta:
YYYY.M.D-beta.N- Tag Git:
vYYYY.M.D-beta.N
- Tag Git:
- Non aggiungere zeri iniziali a mese o giorno
latestindica l'attuale release npm stable promossabetaindica l'attuale destinazione di installazione beta- Le release stable e stable correttive pubblicano su npm
betaper impostazione predefinita; gli operatori di rilascio possono scegliere esplicitamentelatest, oppure promuovere in seguito una build beta verificata - Ogni release di OpenClaw distribuisce insieme il pacchetto npm e l'app macOS
Cadenza di rilascio
- Le release passano prima da beta
- Stable segue solo dopo che l'ultima beta è stata convalidata
- La procedura di rilascio dettagliata, le approvazioni, le credenziali e le note di ripristino sono riservate ai maintainer
Controlli preliminari del rilascio
- Esegui
pnpm build && pnpm ui:buildprima dipnpm release:checkin modo che gli artifact di rilasciodist/*previsti e il bundle della Control UI esistano per il passaggio di convalida del pack - Esegui
pnpm release:checkprima di ogni release taggata - I controlli di rilascio ora vengono eseguiti in un workflow manuale separato:
OpenClaw Release Checks - Questa separazione è intenzionale: mantiene il percorso reale di rilascio npm breve, deterministico e focalizzato sugli artifact, mentre i controlli live più lenti restano nel proprio canale così da non rallentare o bloccare la pubblicazione
- I controlli di rilascio devono essere avviati dal workflow ref di
mainin modo che la logica del workflow e i segreti restino canonici - Quel workflow accetta un tag di rilascio esistente oppure l'attuale commit SHA completo di 40 caratteri di
main - In modalità commit-SHA accetta solo l'attuale HEAD di
origin/main; usa un tag di rilascio per commit di rilascio precedenti - Anche il controllo preliminare di sola convalida
OpenClaw NPM Releaseaccetta l'attuale commit SHA completo di 40 caratteri dimainsenza richiedere un tag già pubblicato - Quel percorso SHA è solo di convalida e non può essere promosso a una pubblicazione reale
- In modalità SHA il workflow sintetizza
v<package.json version>solo per il controllo dei metadati del pacchetto; la pubblicazione reale richiede comunque un vero tag di rilascio - Entrambi i workflow mantengono il percorso reale di pubblicazione e promozione su runner ospitati da GitHub, mentre il percorso di convalida non mutante può usare i runner Linux Blacksmith più grandi
- Quel workflow esegue
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheusando entrambi i secret di workflowOPENAI_API_KEYeANTHROPIC_API_KEY - Il controllo preliminare della release npm non aspetta più il canale separato dei controlli di rilascio
- Esegui
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(o il tag beta/correttivo corrispondente) prima dell'approvazione - Dopo la pubblicazione su npm, esegui
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(o la versione beta/correttiva corrispondente) per verificare il percorso di installazione del registro pubblicato in un prefisso temporaneo pulito - L'automazione di rilascio dei maintainer ora usa il modello preflight-then-promote:
- la reale pubblicazione npm deve superare con esito positivo un
preflight_run_idnpm - le release npm stable usano
betaper impostazione predefinita - la pubblicazione npm stable può scegliere esplicitamente
latesttramite input del workflow - la promozione npm stable da
betaalatestè ancora disponibile come modalità manuale esplicita nel workflow attendibileOpenClaw NPM Release - le pubblicazioni stable dirette possono anche eseguire una modalità esplicita di sincronizzazione dei dist-tag che punta sia
latestsiabetaalla versione stable già pubblicata - queste modalità dei dist-tag richiedono comunque un
NPM_TOKENvalido nell'ambientenpm-releaseperché la gestione deidist-tagdi npm è separata dalla pubblicazione attendibile macOS Releasepubblico è solo di convalida- la vera pubblicazione privata mac deve superare con esito positivo i valori
preflight_run_idevalidate_run_iddel preflight mac privato - i percorsi di pubblicazione reali promuovono artifact preparati invece di ricostruirli di nuovo
- la reale pubblicazione npm deve superare con esito positivo un
- Per release stable correttive come
YYYY.M.D-N, il verificatore post-pubblicazione controlla anche lo stesso percorso di aggiornamento con prefisso temporaneo daYYYY.M.DaYYYY.M.D-N, così le correzioni di rilascio non possono lasciare silenziosamente installazioni globali più vecchie sul payload stable di base - Il controllo preliminare della release npm fallisce in modalità closed se il tarball non include sia
dist/control-ui/index.htmlsia un payloaddist/control-ui/assets/non vuoto, così evitiamo di distribuire di nuovo una dashboard browser vuota - Se il lavoro di rilascio ha toccato la pianificazione CI, i manifest di temporizzazione delle estensioni o le matrici di test delle estensioni, rigenera e rivedi gli output della matrice del workflow
checks-node-extensionsgestiti dal planner da.github/workflows/ci.ymlprima dell'approvazione, così le note di rilascio non descriveranno un layout CI obsoleto - La prontezza della release stable macOS include anche le superfici dell'updater:
- la release GitHub deve finire con i file pacchettizzati
.zip,.dmge.dSYM.zip appcast.xmlsumaindeve puntare al nuovo zip stable dopo la pubblicazione- l'app pacchettizzata deve mantenere un bundle id non di debug, un URL del feed Sparkle non vuoto e un
CFBundleVersionpari o superiore alla soglia canonica di build Sparkle per quella versione di rilascio
- la release GitHub deve finire con i file pacchettizzati
Input del workflow NPM
OpenClaw NPM Release accetta questi input controllati dall'operatore:
tag: tag di rilascio obbligatorio comev2026.4.2,v2026.4.2-1, oppurev2026.4.2-beta.1; quandopreflight_only=true, può anche essere l'attuale commit SHA completo di 40 caratteri dimainper un preflight solo di convalidapreflight_only:trueper sola convalida/build/package,falseper il percorso di pubblicazione realepreflight_run_id: obbligatorio nel percorso di pubblicazione reale così il workflow riutilizza il tarball preparato dall'esecuzione di preflight riuscitanpm_dist_tag: tag npm di destinazione per il percorso di pubblicazione; il valore predefinito èbetapromote_beta_to_latest:trueper saltare la pubblicazione e spostare sulatestuna build stablebetagià pubblicatasync_stable_dist_tags:trueper saltare la pubblicazione e far puntare sialatestsiabetaa una versione stable già pubblicata
OpenClaw Release Checks accetta questi input controllati dall'operatore:
ref: tag di rilascio esistente oppure l'attuale commit SHA completo di 40 caratteri dimainda convalidare
Regole:
- I tag stable e correttivi possono pubblicare su
betaolatest - I tag di prerelease beta possono pubblicare solo su
beta - L'input SHA del commit completo è consentito solo quando
preflight_only=true - La modalità commit-SHA dei controlli di rilascio richiede anche l'attuale HEAD di
origin/main - Il percorso di pubblicazione reale deve usare lo stesso
npm_dist_tagusato durante il preflight; il workflow verifica quei metadati prima di continuare la pubblicazione - La modalità promozione deve usare un tag stable o correttivo,
preflight_only=false, unpreflight_run_idvuoto enpm_dist_tag=beta - La modalità di sincronizzazione dei dist-tag deve usare un tag stable o correttivo,
preflight_only=false, unpreflight_run_idvuoto,npm_dist_tag=latestepromote_beta_to_latest=false - Le modalità promozione e sincronizzazione dei dist-tag richiedono anche un
NPM_TOKENvalido perchénpm dist-tag addrichiede ancora l'autenticazione npm normale; la pubblicazione attendibile copre solo il percorso di pubblicazione del pacchetto
Sequenza di rilascio npm stable
Quando prepari una release npm stable:
- Esegui
OpenClaw NPM Releaseconpreflight_only=true- Prima che esista un tag, puoi usare l'attuale commit SHA completo di
mainper una prova a secco solo di convalida del workflow di preflight
- Prima che esista un tag, puoi usare l'attuale commit SHA completo di
- Scegli
npm_dist_tag=betaper il normale flusso beta-first, oppurelatestsolo quando vuoi intenzionalmente una pubblicazione stable diretta - Esegui separatamente
OpenClaw Release Checkscon lo stesso tag o con l'attuale commit SHA completo dimainquando vuoi una copertura live della cache dei prompt- Questo è separato di proposito così la copertura live resta disponibile senza riaccoppiare controlli lunghi o instabili al workflow di pubblicazione
- Salva il
preflight_run_idriuscito - Esegui di nuovo
OpenClaw NPM Releaseconpreflight_only=false, lo stessotag, lo stessonpm_dist_tage ilpreflight_run_idsalvato - Se la release è arrivata su
beta, esegui successivamenteOpenClaw NPM Releasecon lo stessotagstable,promote_beta_to_latest=true,preflight_only=false,preflight_run_idvuoto enpm_dist_tag=betaquando vuoi spostare quella build pubblicata sulatest - Se la release è stata intenzionalmente pubblicata direttamente su
latestebetadeve seguire la stessa build stable, eseguiOpenClaw NPM Releasecon lo stessotagstable,sync_stable_dist_tags=true,promote_beta_to_latest=false,preflight_only=false,preflight_run_idvuoto enpm_dist_tag=latest
Le modalità promozione e sincronizzazione dei dist-tag richiedono comunque l'approvazione dell'ambiente npm-release e un NPM_TOKEN valido accessibile a quell'esecuzione del workflow.
Questo mantiene sia il percorso di pubblicazione diretta sia il percorso di promozione beta-first documentati e visibili agli operatori.
Riferimenti pubblici
.github/workflows/openclaw-npm-release.yml.github/workflows/openclaw-release-checks.ymlscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
I maintainer usano la documentazione privata di rilascio in
openclaw/maintainers/release/README.md
per la runbook effettiva.