Release and CI
Releasebeleid
OpenClaw heeft drie openbare releasebanen:
- stable: getagde releases die standaard naar npm
betapubliceren, of naar npmlatestwanneer dit expliciet wordt gevraagd - beta: prerelease-tags die naar npm
betapubliceren - dev: de bewegende head van
main
Versienaamgeving
- Versie van stabiele release:
YYYY.M.PATCH- Git-tag:
vYYYY.M.PATCH
- Git-tag:
- Versie van stabiele correctierelease:
YYYY.M.PATCH-N- Git-tag:
vYYYY.M.PATCH-N
- Git-tag:
- Versie van beta-prerelease:
YYYY.M.PATCH-beta.N- Git-tag:
vYYYY.M.PATCH-beta.N
- Git-tag:
- Vul maand of patch niet met nullen aan
- Vanaf de update van het releaseproces in juni 2026 is de derde component een sequentieel maandelijks release-trainnummer, geen kalenderdag. Stabiele en beta- releases bepalen de huidige train; tags die alleen alpha zijn verbruiken of verhogen het beta/stable-patchnummer niet. Tags en npm-versies van voor de update behouden hun bestaande namen en blijven geldig; releaseautomatisering blijft ze vergelijken op jaar, maand, patch, kanaal en prerelease- of correctie- nummer.
- Alpha/nightly-builds gebruiken de volgende nog niet uitgebrachte patch-train en verhogen alleen
alpha.Nvoor herhaalde builds. Zodra die patch een beta heeft, gaan nieuwe alpha-builds naar de volgende patch. Negeer verouderde alpha-only-tags met hogere patch- nummers bij het selecteren van een beta- of stable-train. - npm-versies zijn onveranderlijk. Als een beta-tag al is gepubliceerd, mag je die niet
verwijderen, opnieuw publiceren of hergebruiken; maak het volgende beta-nummer of de volgende maandelijkse
patch. Omdat
2026.6.5-beta.1al tijdens de overgang is gepubliceerd, moeten release-trains van juni 2026 patch5of hoger gebruiken. Publiceer geen nieuwe stable- of beta-trains voor juni 2026 als2026.6.2,2026.6.3of2026.6.4. - Na stable
2026.6.5is de volgende nieuwe beta-train2026.6.6-beta.1, zelfs als er al geautomatiseerde alpha-only-tags met hogere patchnummers bestaan. latestbetekent de huidige gepromote stabiele npm-releasebetabetekent het huidige beta-installatiedoel- Stabiele en stabiele correctiereleases publiceren standaard naar npm
beta; release-operators kunnen explicietlatesttargeten, of later een gecontroleerde beta-build promoveren - Elke stabiele OpenClaw-release levert het npm-pakket, de macOS-app en ondertekende Windows Hub-installers samen; beta-releases valideren en publiceren normaal eerst het npm-/pakketpad, waarbij native app build/sign/notarize/promote gereserveerd blijft voor stable tenzij dit expliciet wordt gevraagd
Releasecadans
- Releases gaan eerst via beta
- Stable volgt pas nadat de nieuwste beta is gevalideerd
- Maintainers maken releases normaal vanaf een
release/YYYY.M.PATCH-branch die is aangemaakt vanaf de huidigemain, zodat releasevalidatie en fixes nieuwe ontwikkeling opmainniet blokkeren - Als een beta-tag is gepusht of gepubliceerd en een fix nodig heeft, maken maintainers
de volgende
-beta.N-tag in plaats van de oude beta-tag te verwijderen of opnieuw te maken - Gedetailleerde releaseprocedure, goedkeuringen, credentials en herstelnotities zijn alleen voor maintainers
Checklist voor release-operator
Deze checklist is de openbare vorm van de releaseflow. Privécredentials, ondertekening, notarization, dist-tagherstel en details voor noodrollback blijven in het maintainer-only release-runbook.
- Begin vanaf de huidige
main: pull de nieuwste wijzigingen, bevestig dat de doelcommit is gepusht, en bevestig dat de huidigemain-CI groen genoeg is om er een branch van te maken. - Genereer de bovenste
CHANGELOG.md-sectie uit samengevoegde PR's en alle directe commits sinds de laatst bereikbare release-tag. Houd items gebruikersgericht, dedupliceer overlappende PR-/directe-commititems, commit de herschrijving, push deze, en rebase/pull nog één keer voordat je de branch maakt. - Bekijk releasecompatibiliteitsrecords in
src/plugins/compat/registry.tsensrc/commands/doctor/shared/deprecation-compat.ts. Verwijder verlopen compatibiliteit alleen wanneer het upgradepad gedekt blijft, of leg vast waarom deze bewust wordt behouden. - Maak
release/YYYY.M.PATCHvanaf de huidigemain; doe normaal releasewerk niet direct opmain. - Verhoog elke vereiste versielocatie voor de beoogde tag en voer daarna
pnpm release:prepuit. Dit ververst Plugin-versies, Plugin-inventaris, config- schema, gebundelde kanaalconfigmetadata, baseline voor configdocs, Plugin SDK- exports en Plugin SDK API-baseline in de juiste volgorde. Commit alle gegenereerde drift voordat je tagt. Voer daarna de lokale deterministische preflight uit:pnpm check:test-types,pnpm check:architecture,pnpm build && pnpm ui:buildenpnpm release:check. - Voer
OpenClaw NPM Releaseuit metpreflight_only=true. Voordat er een tag bestaat, is een volledige release-branch-SHA van 40 tekens toegestaan voor validation-only preflight. De preflight genereert dependency-releasebewijs voor de exact uitgecheckte dependencygraph en slaat dit op in het npm-preflight- artifact. Bewaar de succesvollepreflight_run_id. - Start alle prerelease-tests met
Full Release Validationvoor de releasebranch, tag of volledige commit-SHA. Dit is het enige handmatige entrypoint voor de vier grote release-testboxen: Vitest, Docker, QA Lab en Package. - Als validatie mislukt, fix dit op de releasebranch en voer het kleinste mislukte bestand, de lane, workflowjob, pakketprofiel, provider of model-allowlist opnieuw uit die de fix bewijst. Voer de volledige umbrella alleen opnieuw uit wanneer het gewijzigde oppervlak eerder bewijs verouderd maakt.
- Voor een getagde beta-kandidaat voer je
pnpm release:candidate -- --tag vYYYY.M.PATCH-beta.Nuit vanaf de bijbehorenderelease/YYYY.M.PATCH-branch. Voor stable geef je ook de vereiste Windows-bron- release mee:pnpm release:candidate -- --tag vYYYY.M.PATCH --windows-node-tag vX.Y.Z. De helper voert de lokale gegenereerde-releasechecks uit, dispatcht of verifieert de volledige releasevalidatie en het npm-preflightbewijs, voert Parallels fresh/update-bewijs uit tegen de exact voorbereide tarball plus Telegram-pakket- bewijs, registreert Plugin npm- en ClawHub-plannen, en print de exacteOpenClaw Release Publish-opdracht pas nadat de evidencebundle groen is.OpenClaw Release Publishdispatcht de geselecteerde of alle publiceerbare Plugin- pakketten parallel naar npm en dezelfde set naar ClawHub, en promoot daarna het voorbereide OpenClaw npm-preflightartifact met de bijbehorende dist-tag zodra Plugin npm publish slaagt. Nadat de OpenClaw npm publish-child slaagt, maakt of werkt deze de bijbehorende GitHub release-/prereleasepagina bij vanuit de complete overeenkomendeCHANGELOG.md-sectie. Stabiele releases die naar npmlatestworden gepubliceerd, worden de nieuwste GitHub-release; stabiele maintenancereleases die op npmbetablijven, worden aangemaakt met GitHublatest=false. De workflow uploadt ook het preflight- dependencybewijs, het full-validation-manifest en postpublish registry- verificatiebewijs naar de GitHub-release voor incidentrespons na release. De publish-workflow print child-run-ID's direct, keurt release environment gates automatisch goed wanneer de workflowtoken dat mag, vat mislukte childjobs samen met log tails, sluit de GitHub-release en dependency- evidence af zodra OpenClaw npm publish slaagt, wacht op ClawHub wanneer OpenClaw npm wordt gepubliceerd, voert daarnapnpm release:verify-betauit en uploadt postpublish-bewijs voor de GitHub-release, het npm-pakket, geselecteerde Plugin npm-pakketten, geselecteerde ClawHub-pakketten, child workflow-run-ID's en optionele NPM Telegram-run-ID. Het ClawHub-pad probeert tijdelijke CLI- dependency-installatiefouten opnieuw, publiceert plugins die preview passeren zelfs wanneer één previewcel flaket, en eindigt met registryverificatie voor elke verwachte Plugin-versie zodat gedeeltelijke publicaties zichtbaar en opnieuw uitvoerbaar blijven. Voer daarna de post-publish pakketacceptatie uit tegen het gepubliceerdeopenclaw@YYYY.M.PATCH-beta.N- ofopenclaw@beta-pakket. Als een gepushte of gepubliceerde prerelease een fix nodig heeft, maak dan het volgende overeenkomende prereleasenummer; verwijder of herschrijf de oude prerelease niet. - Ga voor stable alleen verder nadat de gecontroleerde beta- of releasekandidaat het
vereiste validatiebewijs heeft. Stable npm publish loopt ook via
OpenClaw Release Publish, met hergebruik van het succesvolle preflightartifact viapreflight_run_id; stable macOS-releasegereedheid vereist ook de verpakte.zip,.dmg,.dSYM.zipen bijgewerkteappcast.xmlopmain. De macOS publish-workflow publiceert de ondertekende appcast automatisch naar openbaremainnadat releaseassets zijn geverifieerd; als branchbescherming de directe push blokkeert, opent of werkt deze een appcast-PR bij. Gereedheid voor Stable Windows Hub vereist de ondertekendeOpenClawCompanion-Setup-x64.exe,OpenClawCompanion-Setup-arm64.exeenOpenClawCompanion-SHA256SUMS.txt-assets op de OpenClaw GitHub-release. Geef de exacte ondertekendeopenclaw/openclaw-windows-noderelease-tag mee alswindows_node_tagen de door de kandidaat goedgekeurde installer-digestmap alswindows_node_installer_digests;OpenClaw Release Publishbewaart de release-draft, dispatchtWindows Node Releaseen verifieert alle drie assets vóór publicatie. - Voer na publicatie de npm post-publish-verifier uit, optioneel standalone published-npm Telegram E2E wanneer je post-publish kanaalbewijs nodig hebt, dist-tagpromotie wanneer nodig, verifieer de gegenereerde GitHub-releasepagina, voer de releaseaankondigingsstappen uit, en voltooi daarna Afsluiting van stabiele main voordat je een stabiele release als afgerond beschouwt.
Afsluiting van stabiele main
Stabiele publicatie is niet compleet totdat main de daadwerkelijk uitgeleverde
releasestatus bevat.
- Begin vanaf een frisse, nieuwste
main. Controleerrelease/YYYY.M.PATCHertegen en forward-port echte fixes die ontbreken opmain. Merge niet blindelings release-only compatibiliteits-, test- of validatie-adapters naar de nieuweremain. - Stel
mainin op de uitgebrachte stabiele versie, niet op een speculatieve volgende trein. Voerpnpm release:prepuit na de wijziging van de rootversie, en daarnapnpm deps:shrinkwrap:generate. - Laat de sectie
## YYYY.M.PATCHinCHANGELOG.mdopmainexact overeenkomen met de getagde release-branch. Neem de stabiele update vanappcast.xmlop wanneer de mac-release er een heeft gepubliceerd. - Voeg geen
YYYY.M.PATCH+1, bètaversie of lege toekomstige changelogsectie toe aanmaintotdat de operator die releasetrein expliciet start. - Voer
pnpm release:generated:check,pnpm deps:shrinkwrap:checkenOPENCLAW_TESTBOX=1 pnpm check:changeduit. Push en verifieer vervolgens datorigin/mainde uitgebrachte versie en changelog bevat voordat je de stabiele release als afgerond beschouwt. - Houd de repositoryvariabelen
RELEASE_ROLLBACK_DRILL_IDenRELEASE_ROLLBACK_DRILL_DATEactueel na elke private rollback-drill.OpenClaw Stable Main Closeoutbegint bij demain-push die na stabiele publicatie de uitgebrachte versie, changelog en appcast bevat. Het leest onveranderlijk postpublish-bewijs om de uitgebrachte tag te koppelen aan de runs Full Release Validation en Publish, en verifieert daarna de stabiele main-status, release, verplichte stabiele soak en blokkerend prestatiebewijs. Het voegt een onveranderlijk closeoutmanifest en controlesom toe aan de GitHub-release. De automatische push-trigger slaat legacy-releases over die ouder zijn dan onveranderlijk postpublish- bewijs; die skip wordt nooit behandeld als een voltooide closeout. Een complete closeout vereist beide assets en een overeenkomende controlesom. Een gedeeltelijk manifest speelt de vastgelegdemain-SHA en rollback-drill opnieuw af om identieke bytes te regenereren, en voegt daarna de ontbrekende controlesom toe; een ongeldig paar, of een controlesom zonder manifest, blijft blokkerend. Een door push getriggerde run zonder repositoryvariabelen voor rollback-drills wordt overgeslagen zonder de closeout te voltooien; een ontbrekend of meer dan 90 dagen oud drillrecord blijft handmatige, door bewijs onderbouwde closeout blokkeren. Private herstelcommando's blijven in het maintainer-only runbook. Gebruik handmatige dispatch alleen om een door bewijs onderbouwde stabiele closeout te repareren of opnieuw af te spelen. Een legacy fallback-correctietag mag base-package-bewijs alleen hergebruiken wanneer de correctietag naar dezelfde source-commit verwijst als de basisstabiele tag. Een correctie met een andere source moet eigen packagebewijs publiceren en verifiëren.
Release-preflight
- Voer
pnpm check:test-typesuit vóór de release-preflight, zodat test-TypeScript gedekt blijft buiten de snellere lokalepnpm check-poort - Voer
pnpm check:architectureuit vóór de release-preflight, zodat de bredere importcyclus- en architectuurgrenscontroles groen zijn buiten de snellere lokale poort - Voer
pnpm build && pnpm ui:builduit vóórpnpm release:check, zodat de verwachtedist/*-releaseartefacten en Control UI-bundel bestaan voor de pack-validatiestap - Voer
pnpm release:prepuit na de root-versieverhoging en vóór het taggen. Het voert elke deterministische releasegenerator uit die vaak afwijkt na een versie-/configuratie-/API-wijziging: pluginversies, plugininventaris, basisconfiguratieschema, configuratiemetadata voor gebundelde kanalen, baseline voor configuratiedocumentatie, plugin-SDK-exports en plugin-SDK API-baseline.pnpm release:checkvoert die waarborgen opnieuw uit in controlemodus en rapporteert elke gegenereerde driftfout die het vindt in één doorgang voordat pakketreleasecontroles worden uitgevoerd. - Pluginversiesynchronisatie werkt officiële pluginpakketversies en bestaande
openclaw.compat.pluginApi-vloeren standaard bij naar de OpenClaw-releaseversie. Behandel dat veld als de plugin-SDK/runtime-API-vloer, niet alleen als een kopie van de pakketversie: houd bij plugin-only releases die bewust compatibel blijven met oudere OpenClaw-hosts de vloer op de oudste ondersteunde host-API en documenteer die keuze in het pluginreleasebewijs. - Voer de handmatige
Full Release Validation-workflow uit vóór releasegoedkeuring om alle prerelease-testboxen vanuit één ingangspunt te starten. Deze accepteert een branch, tag of volledige commit-SHA, dispatcht handmatigCIen dispatchtOpenClaw Release Checksvoor installatiesmoke, pakketacceptatie, cross-OS-pakketcontroles, QA Lab-pariteit, Matrix- en Telegram-lanes. Stabiele en volledige runs bevatten altijd uitputtende live/E2E- en Docker-releasepad-soak;run_release_soak=trueblijft behouden voor een expliciete beta-soak. Package Acceptance levert de canonieke pakket-Telegram E2E tijdens kandidaatvalidatie, waardoor een tweede gelijktijdige live poller wordt vermeden. Geefrelease_package_specop na het publiceren van een beta om het verzonden npm-pakket te hergebruiken in releasecontroles, Package Acceptance en pakket-Telegram E2E zonder de release-tarball opnieuw te bouwen. Geefnpm_telegram_package_specalleen op wanneer Telegram een ander gepubliceerd pakket moet gebruiken dan de rest van de releasevalidatie. Geefpackage_acceptance_package_specop wanneer Package Acceptance een ander gepubliceerd pakket moet gebruiken dan de release package spec. Geefevidence_package_specop wanneer het releasebewijsrapport moet aantonen dat de validatie overeenkomt met een gepubliceerd npm-pakket zonder Telegram E2E af te dwingen. Voorbeeld:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.PATCH - Voer de handmatige
Package Acceptance-workflow uit wanneer je zijkanaalbewijs voor een pakketkandidaat wilt terwijl releasewerk doorgaat. Gebruiksource=npmvooropenclaw@beta,openclaw@latestof een exacte releaseversie;source=refom een vertrouwdepackage_ref-branch/tag/SHA te packen met de huidigeworkflow_ref-harness;source=urlvoor een openbare HTTPS-tarball met een verplichte SHA-256 en strikt openbaar URL-beleid;source=trusted-urlvoor een benoemd trusted-source-beleid met verplichtetrusted_source_iden SHA-256; ofsource=artifactvoor een tarball die door een andere GitHub Actions-run is geüpload. De workflow herleidt de kandidaat naarpackage-under-test, hergebruikt de Docker E2E-releasescheduler tegen die tarball en kan Telegram-QA uitvoeren tegen dezelfde tarball mettelegram_mode=mock-openaioftelegram_mode=live-frontier. Wanneer de geselecteerde Docker-lanespublished-upgrade-survivorbevatten, is het pakketartefact de kandidaat en selecteertpublished_upgrade_survivor_baselinede gepubliceerde baseline.update-restart-authgebruikt het kandidaatpakket als zowel de geïnstalleerde CLI als de package-under-test, zodat het het beheerde herstartpad van het updatecommando van de kandidaat oefent. Voorbeeld: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-openaiVeelgebruikte profielen:smoke: installatie-/kanaal-/agent-, gatewaynetwerk- en configuratieherlaad-lanespackage: artefact-native pakket-/update-/herstart-/plugin-lanes zonder OpenWebUI of live ClawHubproduct: pakketprofiel plus MCP-kanalen, cron-/subagent-opruiming, OpenAI-webzoekopdracht en OpenWebUIfull: Docker-releasepadchunks met OpenWebUIcustom: exactedocker_lanes-selectie voor een gerichte heruitvoering
- Voer de handmatige
CI-workflow rechtstreeks uit wanneer je alleen deterministische normale CI-dekking voor de releasekandidaat nodig hebt. Handmatige CI-dispatches omzeilen changed scoping en forceren de Linux Node-shards, bundled-plugin-shards, plugin- en kanaalcontractshards, Node 22-compatibiliteit,check-*,check-additional-*, built-artifact-smokecontroles, documentatiecontroles, Python-skills, Windows, macOS en Control UI i18n-lanes. Losstaande handmatige CI-runs voeren Android alleen uit wanneer ze zijn gedispatcht metinclude_android=true;Full Release Validationgeeft die invoer door aan zijn CI-child. Voorbeeld met Android:gh workflow run ci.yml --ref release/YYYY.M.PATCH -f include_android=true - Voer
pnpm qa:otel:smokeuit bij het valideren van releasetelemetrie. Het oefent QA-lab via een lokale OTLP/HTTP-ontvanger en verifieert export van traces, metrics en logs plus begrensde traceattributen en redactie van inhoud en identifiers zonder Opik, Langfuse of een andere externe collector te vereisen. - Voer
pnpm qa:otel:collector-smokeuit bij het valideren van collectorcompatibiliteit. Het routeert dezelfde QA-lab-OTLP-export via een echte OpenTelemetry Collector Docker-container vóór de lokale ontvangerasserties. - Voer
pnpm qa:prometheus:smokeuit bij het valideren van beschermd Prometheus-scrapen. Het oefent QA-lab, wijst ongeauthenticeerde scrapes af en verifieert dat releasekritieke metricfamilies vrij blijven van promptinhoud, ruwe identifiers, auth-tokens en lokale paden. - Voer
pnpm qa:observability:smokeuit wanneer je de source-checkout OpenTelemetry- en Prometheus-smoke-lanes direct na elkaar wilt. - Voer
pnpm release:checkuit vóór elke getagde release OpenClaw NPM Release-preflight genereert dependency-releasebewijs voordat het de npm-tarball packt. De npm advisory vulnerability gate blokkeert de release. De transitive manifest risk-, dependency ownership/install surface- en dependency change-rapporten zijn alleen releasebewijs. Het dependency change-rapport vergelijkt de releasekandidaat met de vorige bereikbare releasetag.- De preflight uploadt dependency evidence als
openclaw-release-dependency-evidence-<tag>en sluit het ook in onderdependency-evidence/binnen het voorbereide npm-preflightartefact. Het echte publicatiepad hergebruikt dat preflightartefact en voegt vervolgens hetzelfde bewijs toe aan de GitHub-release alsopenclaw-<version>-dependency-evidence.zip. - Voer
OpenClaw Release Publishuit voor de muterende publicatiereeks nadat de tag bestaat. Dispatch deze vanafrelease/YYYY.M.PATCH(ofmainbij het publiceren van een tag die vanaf main bereikbaar is), geef de releasetag, de succesvolle OpenClaw npmpreflight_run_iden de succesvollefull_release_validation_run_iddoor, en houd de standaard pluginpublicatiescopeall-publishabletenzij je bewust een gerichte reparatie uitvoert. De workflow serialiseert plugin-npm-publicatie, plugin-ClawHub- publicatie en OpenClaw-npm-publicatie, zodat het corepakket niet vóór de geëxternaliseerde plugins wordt gepubliceerd. - Stabiele
OpenClaw Release Publishvereist een exactewindows_node_tagnadat de bijpassende non-prereleaseopenclaw/openclaw-windows-node-release bestaat. Het vereist ook de door de kandidaat goedgekeurdewindows_node_installer_digests-map. Voordat een publish-child wordt gedispatcht, verifieert het dat de bronrelease gepubliceerd is, geen prerelease is, de vereiste x64/ARM64-installers bevat en nog steeds overeenkomt met die goedgekeurde map. Daarna dispatcht hetWindows Node Releaseterwijl de OpenClaw-release nog een concept is, waarbij de gepinde installer-digestmap ongewijzigd wordt meegenomen. De child-workflow downloadt de ondertekende Windows Hub-installers vanaf die exacte tag, vergelijkt ze met de gepinde digests, verifieert op een Windows-runner dat hun Authenticode-handtekeningen de verwachte OpenClaw Foundation-ondertekenaar gebruiken, schrijft een SHA-256-manifest en uploadt de installers plus het manifest naar de canonieke OpenClaw GitHub-release, downloadt daarna de gepromoveerde assets opnieuw en verifieert de manifestlidmaatschappen en hashes. De parent verifieert vóór publicatie het huidige x64-, ARM64- en checksum-assetcontract. Direct herstel wijst onverwachteOpenClawCompanion-*-assetnamen af voordat de verwachte contractassets worden vervangen door de gepinde bronbytes. DispatchWindows Node Releasealleen handmatig voor herstel en geef altijd een exacte tag door, nooitlatest, plus de explicieteexpected_installer_digestsJSON-map uit de goedgekeurde bronrelease. Website-downloadlinks moeten verwijzen naar exacte OpenClaw-release-asset-URL's voor de huidige stabiele release, of naarreleases/latest/download/...alleen na verificatie dat de nieuwste GitHub-redirect naar diezelfde release wijst; link niet alleen naar de releasepagina van de companion-repo. - Releasecontroles draaien nu in een aparte handmatige workflow:
OpenClaw Release Checks OpenClaw Release Checksvoert ook de QA Lab mock parity-lane plus het snelle live Matrix-profiel en de Telegram-QA-lane uit vóór releasegoedkeuring. De live-lanes gebruiken deqa-live-shared-omgeving; Telegram gebruikt ook Convex CI-credentialleases. Voer de handmatigeQA-Lab - All Lanes-workflow uit metmatrix_profile=allenmatrix_shards=truewanneer je volledige Matrix- transport-, media- en E2EE-inventaris parallel wilt.- Cross-OS runtimevalidatie voor installatie en upgrade maakt deel uit van de
openbare
OpenClaw Release ChecksenFull Release Validation, die de herbruikbare workflow.github/workflows/openclaw-cross-os-release-checks-reusable.ymlrechtstreeks aanroepen - Deze splitsing is bewust: houd het echte npm-releasepad kort, deterministisch en artefactgericht, terwijl tragere livecontroles in hun eigen lane blijven zodat ze publicatie niet laten vastlopen of blokkeren
- Releasecontroles met secrets moeten worden gedispatcht via
Full Release Validationof vanaf demain-/release-workflowref, zodat workflowlogica en secrets gecontroleerd blijven OpenClaw Release Checksaccepteert een branch, tag of volledige commit-SHA, zolang de herleide commit bereikbaar is vanaf een OpenClaw-branch of releasetag- De validatie-only preflight van
OpenClaw NPM Releaseaccepteert ook de huidige volledige workflow-branch-commit-SHA van 40 tekens zonder een gepushte tag te vereisen - Dat SHA-pad is alleen voor validatie en kan niet worden gepromoveerd naar een echte publicatie
- In SHA-modus synthetiseert de workflow
v<package.json version>alleen voor de pakketmetadatacontrole; echte publicatie vereist nog steeds een echte releasetag - Beide workflows houden het echte publicatie- en promotiepad op door GitHub gehoste runners, terwijl het niet-muterende validatiepad de grotere Blacksmith Linux-runners kan gebruiken
- Die workflow voert
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheuit met zowel deOPENAI_API_KEY- als deANTHROPIC_API_KEY-workflowsecrets - npm-releasepreflight wacht niet langer op de aparte releasecontrole-lane
- Voer lokaal vóór het taggen van een releasekandidaat
RELEASE_TAG=vYYYY.M.PATCH-beta.N pnpm release:fast-pretag-checkuit. De helper voert de snelle release-guardrails, plugin-npm-/ClawHub-releasecontroles, build, UI-build enrelease:openclaw:npm:checkuit in de volgorde die vaak goedkeuringsblokkerende fouten opvangt voordat de GitHub-publicatieworkflow start. - Voer
RELEASE_TAG=vYYYY.M.PATCH node --import tsx scripts/openclaw-npm-release-check.ts(of de bijpassende beta-/correctietag) uit vóór goedkeuring - Voer na npm-publicatie uit
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.PATCH(of de overeenkomende bèta-/correctieversie) om het gepubliceerde registry- installatiepad in een verse tijdelijke prefix te verifiëren - Voer na een bètapublicatie
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-liveuit om onboarding van het geïnstalleerde pakket, Telegram-configuratie en echte Telegram E2E te verifiëren tegen het gepubliceerde npm-pakket met de gedeelde geleasede Telegram-credential- pool. Lokale eenmalige maintainer-runs mogen de Convex-variabelen weglaten en de drieOPENCLAW_QA_TELEGRAM_*env-credentials rechtstreeks doorgeven. - Gebruik
pnpm release:beta-smoke -- --beta betaNom de volledige post-publicatie bèta-smoke vanaf een maintainer-machine uit te voeren. De helper voert Parallels npm-update-/fresh-target-validatie uit, dispatchtNPM Telegram Beta E2E, pollt de exacte workflow-run, downloadt het artifact en print het Telegram-rapport. - Maintainers kunnen dezelfde post-publicatiecontrole vanuit GitHub Actions uitvoeren via de
handmatige workflow
NPM Telegram Beta E2E. Deze is bewust alleen handmatig en draait niet bij elke merge. - Release-automatisering voor maintainers gebruikt nu preflight-dan-promote:
- echte npm-publicatie moet slagen met een succesvolle npm
preflight_run_id - de echte npm-publicatie moet worden gedispatcht vanaf dezelfde
main- ofrelease/YYYY.M.PATCH-branch als de succesvolle preflight-run - stabiele npm-releases gebruiken standaard
beta - stabiele npm-publicatie kan expliciet op
latestrichten via workflow-invoer - token-gebaseerde npm dist-tag-mutatie staat nu in
openclaw/releases/.github/workflows/openclaw-npm-dist-tags.ymlomdatnpm dist-tag addnog steedsNPM_TOKENnodig heeft terwijl de bronrepo publicatie alleen via OIDC houdt - openbare
macOS Releaseis alleen validatie; wanneer een tag alleen op een release-branch staat maar de workflow vanafmainwordt gedispatcht, stel danpublic_release_branch=release/YYYY.M.PATCHin - echte macOS-publicatie moet slagen met succesvolle macOS
preflight_run_idenvalidate_run_id - de echte publicatiepaden promoveren voorbereide artifacts in plaats van ze opnieuw te bouwen
- echte npm-publicatie moet slagen met een succesvolle npm
- Voor stabiele correctiereleases zoals
YYYY.M.PATCH-Ncontroleert de post-publicatieverificatie ook hetzelfde tijdelijke-prefix-upgradepad vanYYYY.M.PATCHnaarYYYY.M.PATCH-N, zodat releasecorrecties oudere globale installaties niet stilzwijgend op de stabiele basispayload laten staan - npm-release-preflight faalt gesloten tenzij de tarball zowel
dist/control-ui/index.htmlals een niet-lege payloaddist/control-ui/assets/bevat, zodat we niet opnieuw een leeg browserdashboard shippen - Post-publicatieverificatie controleert ook of gepubliceerde Plugin-entrypoints en
pakketmetadata aanwezig zijn in de geïnstalleerde registry-layout. Een release die
ontbrekende Plugin-runtimepayloads shipt, faalt de postpublish-verificatie en
kan niet naar
latestworden gepromoveerd. pnpm test:install:smokedwingt ook het npm pack-unpackedSize-budget af op de kandidaat-update-tarball, zodat installer-e2e toevallige pack-bloat opvangt vóór het releasepublicatiepad- Als het releasewerk CI-planning, timingmanifests voor extensies of
extensietestmatrices heeft geraakt, regenereer en review dan de planner-owned
plugin-prerelease-extension-shard-matrixoutputs uit.github/workflows/plugin-prerelease.ymlvóór goedkeuring, zodat release notes geen verouderde CI-layout beschrijven - Gereedheid voor stabiele macOS-releases omvat ook de updater-oppervlakken:
- de GitHub-release moet uiteindelijk de verpakte
.zip,.dmgen.dSYM.zipbevatten appcast.xmlopmainmoet na publicatie naar de nieuwe stabiele zip wijzen; de macOS-publicatieworkflow commit deze automatisch, of opent een appcast- PR wanneer direct pushen wordt geblokkeerd- de verpakte app moet een niet-debug-bundle-id, een niet-lege Sparkle-feed-
URL en een
CFBundleVersionop of boven de canonieke Sparkle-buildvloer voor die releaseversie behouden
- de GitHub-release moet uiteindelijk de verpakte
Release-testboxen
Full Release Validation is hoe operators alle pre-releasetests starten vanuit
één ingangspunt. Gebruik voor commitbewijs dat op een snel bewegende branch is
vastgezet de helper, zodat elke onderliggende workflow draait vanaf een tijdelijke
branch die op de doel-SHA is vastgezet:
pnpm ci:full-release --sha <full-sha>De helper pusht release-ci/<sha>-..., dispatcht Full Release Validation
vanaf die branch met ref=<sha>, verifieert dat elke onderliggende workflow-headSha
overeenkomt met het doel, en verwijdert daarna de tijdelijke branch. Dit voorkomt
dat je per ongeluk een nieuwere onderliggende main-run bewijst.
Voer releasebranch- of tagvalidatie uit vanaf de vertrouwde main-workflowref
en geef de releasebranch of tag door als 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.NDe workflow lost de doel-ref op, dispatcht handmatige CI met
target_ref=<release-ref>, en dispatcht daarna OpenClaw Release Checks.
OpenClaw Release Checks waaiert uit naar install-smoke, cross-OS-releasechecks,
live/E2E Docker-dekking voor het releasepad wanneer soak is ingeschakeld, Package Acceptance
met de canonieke Telegram-package-E2E, QA Lab-pariteit, live Matrix en live
Telegram. Een volledige/all-run is alleen acceptabel wanneer de samenvatting van
Full Release Validation normal_ci, plugin_prerelease en release_checks als
geslaagd toont, tenzij een gerichte rerun de afzonderlijke onderliggende Plugin Prerelease opzettelijk heeft overgeslagen. Gebruik de zelfstandige onderliggende
npm-telegram alleen voor een gerichte rerun van een gepubliceerd package met
release_package_spec of npm_telegram_package_spec. De uiteindelijke
verifier-samenvatting bevat tabellen met langzaamste jobs voor elke onderliggende run,
zodat de releasemanager het huidige kritieke pad kan zien zonder logs te downloaden.
Zie Volledige releasevalidatie voor de
complete stagematrix, exacte workflowjobnamen, verschillen tussen stabiel en volledig profiel,
artefacten en handles voor gerichte reruns.
Onderliggende workflows worden gedispatcht vanaf de vertrouwde ref die Full Release Validation draait, normaal --ref main, zelfs wanneer de doel-ref naar een
oudere releasebranch of tag wijst. Er is geen afzonderlijke workflow-refinvoer
voor Full Release Validation; kies de vertrouwde harness door de workflow-runref te kiezen.
Gebruik --ref main -f ref=<sha> niet voor exact commitbewijs op bewegende main;
ruwe commit-SHA's kunnen geen workflow-dispatchrefs zijn, dus gebruik
pnpm ci:full-release --sha <sha> om de vastgezette tijdelijke branch te maken.
Gebruik release_profile om live/provider-breedte te selecteren:
minimum: snelste releasekritieke OpenAI/core live- en Docker-padstable: minimum plus stabiele provider/backend-dekking voor releasegoedkeuringfull: stable plus brede adviserende provider/media-dekking
Stabiele en volledige validatie draaien altijd de uitputtende live/E2E-, Docker-
releasepad- en begrensde gepubliceerde upgrade-survivor-sweep vóór promotie.
Gebruik run_release_soak=true om dezelfde sweep voor een bèta aan te vragen. Die sweep dekt
de laatste vier stabiele packages plus vastgezette 2026.4.23- en 2026.5.2-
baselines plus oudere 2026.4.15-dekking, waarbij dubbele baselines worden verwijderd en
elke baseline in een eigen Docker-runnerjob wordt geshard.
OpenClaw Release Checks gebruikt de vertrouwde workflowref om de doel-ref één keer
op te lossen als release-package-under-test en hergebruikt dat artefact in cross-OS,
Package Acceptance en releasepad-Docker-checks wanneer soak draait. Zo blijven
alle packagegerichte boxen op dezelfde bytes en worden herhaalde packagebuilds voorkomen.
Nadat een bèta al op npm staat, stel je release_package_spec=openclaw@YYYY.M.PATCH-beta.N in,
zodat releasechecks het verzonden package één keer downloaden, de buildbron-SHA
uit dist/build-info.json extraheren en dat artefact hergebruiken voor cross-OS,
Package Acceptance, releasepad-Docker en package-Telegram-lanes.
De cross-OS OpenAI-install-smoke gebruikt OPENCLAW_CROSS_OS_OPENAI_MODEL wanneer de
repo/org-variabele is ingesteld, anders openai/gpt-5.4, omdat deze lane
package-installatie, onboarding, Gateway-start en één live agentbeurt bewijst
in plaats van het langzaamste standaardmodel te benchmarken. De bredere live provider-
matrix blijft de plek voor modelspecifieke dekking.
Gebruik deze varianten afhankelijk van de releasestage:
# 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-openaiGebruik de volledige umbrella niet als eerste rerun na een gerichte fix. Als één box
faalt, gebruik dan de mislukte onderliggende workflow, job, Docker-lane, packageprofiel, model-
provider of QA-lane voor het volgende bewijs. Draai de volledige umbrella alleen opnieuw wanneer
de fix gedeelde release-orkestratie heeft gewijzigd of eerder all-box-bewijs
verouderd heeft gemaakt. De uiteindelijke verifier van de umbrella controleert de vastgelegde
run-id's van onderliggende workflows opnieuw, dus nadat een onderliggende workflow succesvol is
herdraaid, herdraai je alleen de mislukte bovenliggende job Verify full validation.
Geef voor begrensd herstel rerun_group door aan de umbrella. all is de echte
releasecandidate-run, ci draait alleen de normale onderliggende CI, plugin-prerelease
draait alleen de release-only onderliggende plugin, release-checks draait elke release-
box, en de smallere releasegroepen zijn install-smoke, cross-os,
live-e2e, package, qa, qa-parity, qa-live en npm-telegram.
Gerichte npm-telegram-reruns vereisen release_package_spec of
npm_telegram_package_spec; volledige/all-runs gebruiken de canonieke package Telegram
E2E binnen Package Acceptance. Gerichte
cross-OS-reruns kunnen cross_os_suite_filter=windows/packaged-upgrade of
een andere OS/suite-filter toevoegen. QA-releasecheckfouten blokkeren normale release-
validatie, inclusief vereiste OpenClaw dynamic tool drift in de standaardtier.
Tideclaw-alpha-runs mogen non-package-safety-releasechecklanes nog steeds als
adviserend behandelen. Wanneer live_suite_filter expliciet een gated QA-live-lane aanvraagt,
zoals Discord, WhatsApp of Slack, moet de overeenkomende
OPENCLAW_RELEASE_QA_*_LIVE_CI_ENABLED-repovariabele zijn ingeschakeld; anders
faalt invoervastlegging in plaats van de lane stilzwijgend over te slaan.
Vitest
De Vitest-box is de handmatige onderliggende CI-workflow. Handmatige CI omzeilt
bewust changed scoping en dwingt de normale testgrafiek af voor de releasecandidate:
Linux Node-shards, shards voor gebundelde plugins, shards voor plugin- en channel-contracts,
Node 22-compatibiliteit, check-*, check-additional-*,
smokechecks voor gebouwde artefacten, docs-checks, Python Skills, Windows, macOS,
en Control UI i18n. Android is inbegrepen wanneer Full Release Validation de
box draait omdat de umbrella include_android=true doorgeeft; zelfstandige handmatige CI
vereist include_android=true voor Android-dekking.
Gebruik deze box om te beantwoorden: "is de source tree geslaagd voor de volledige normale testsuite?" Dit is niet hetzelfde als productvalidatie van het releasepad. Bewijs om te bewaren:
Full Release Validation-samenvatting met de gedispatchteCI-run-URLCI-run groen op de exacte doel-SHA- namen van mislukte of trage shards uit de CI-jobs bij het onderzoeken van regressies
- Vitest-timingartefacten zoals
.artifacts/vitest-shard-timings.jsonwanneer een run prestatieanalyse nodig heeft
Draai handmatige CI alleen direct wanneer de release deterministische normale CI nodig heeft maar
niet de Docker-, QA Lab-, live-, cross-OS- of packageboxen. Gebruik de eerste opdracht
voor directe CI zonder Android. Voeg include_android=true toe wanneer directe
releasecandidate-CI Android moet dekken:
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
De Docker-box zit in OpenClaw Release Checks via
openclaw-live-and-e2e-checks-reusable.yml, plus de release-mode
install-smoke-workflow. Deze valideert de releasecandidate via packaged
Docker-omgevingen in plaats van alleen source-level tests.
Release-Docker-dekking omvat:
- volledige install-smoke met de trage Bun global install-smoke ingeschakeld
- voorbereiding/hergebruik van de root-Dockerfile-smoke-image per doel-SHA, met QR-, root/Gateway- en installer/Bun-smokejobs die als afzonderlijke install-smoke- shards draaien
- repository-E2E-lanes
- Docker-chunks voor het releasepad:
core,package-update-openai,package-update-anthropic,package-update-core,plugins-runtime-plugins,plugins-runtime-services,plugins-runtime-install-a,plugins-runtime-install-b,plugins-runtime-install-c,plugins-runtime-install-d,plugins-runtime-install-e,plugins-runtime-install-f,plugins-runtime-install-genplugins-runtime-install-h - OpenWebUI-dekking binnen de chunk
plugins-runtime-serviceswanneer aangevraagd - gesplitste install/uninstall-lanes voor gebundelde plugins
bundled-plugin-install-uninstall-0tot en metbundled-plugin-install-uninstall-23 - live/E2E-providersuites en Docker live-modeldekking wanneer releasechecks live suites bevatten
Gebruik Docker-artefacten voordat je opnieuw draait. De releasepad-scheduler uploadt
.artifacts/docker-tests/ met lanelogs, summary.json, failures.json,
fasetimings, schedulerplan-JSON en rerun-opdrachten. Gebruik voor gericht herstel
docker_lanes=<lane[,lane]> op de herbruikbare live/E2E-workflow in plaats van
alle releasechunks opnieuw te draaien. Gegenereerde rerun-opdrachten bevatten eerdere
package_artifact_run_id en voorbereide Docker-image-invoer wanneer beschikbaar, zodat een
mislukte lane dezelfde tarball en GHCR-images kan hergebruiken.
QA Lab
De QA Lab-box maakt ook deel uit van OpenClaw Release Checks. Het is de agentic
gedrags- en channel-level releasegate, los van Vitest en Docker-
packagemechanica.
Release-QA Lab-dekking omvat:
- mock-pariteitslane die de OpenAI-candidatelane vergelijkt met de Opus 4.6- baseline met het agentic parity pack
- snel live Matrix-QA-profiel met de omgeving
qa-live-shared - live Telegram-QA-lane met Convex CI-credentialleases
pnpm qa:otel:smoke,pnpm qa:otel:collector-smoke,pnpm qa:prometheus:smokeofpnpm qa:observability:smokewanneer releasetelemetrie expliciet lokaal bewijs nodig heeft
Gebruik deze box om te beantwoorden: "gedraagt de release zich correct in QA-scenario's en live channelflows?" Bewaar de artefact-URL's voor pariteit, Matrix en Telegram- lanes wanneer je de release goedkeurt. Volledige Matrix-dekking blijft beschikbaar als een handmatige gesharde QA-Lab-run in plaats van de standaard releasekritieke lane.
Package
De Package-box is de gate voor het installeerbare product. Deze wordt ondersteund door
Package Acceptance en de resolver
scripts/resolve-openclaw-package-candidate.mjs. De resolver normaliseert een
candidate naar de package-under-test-tarball die door Docker E2E wordt gebruikt, valideert
de package-inventaris, registreert de packageversie en SHA-256, en houdt de
workflow-harnessref gescheiden van de packagebronref.
Ondersteunde candidate-bronnen:
source=npm:openclaw@beta,openclaw@latest, of een exacte OpenClaw-releaseversiesource=ref: verpak een vertrouwdepackage_ref-branch, tag of volledige commit-SHA met de geselecteerdeworkflow_ref-harnesssource=url: download een openbare HTTPS-.tgzmet verplichtepackage_sha256; URL-referenties, niet-standaard HTTPS-poorten, private/interne/special-use hostnamen of opgeloste adressen, en onveilige redirects worden geweigerdsource=trusted-url: download een HTTPS-.tgzmet verplichtepackage_sha256entrusted_source_iduit een benoemd beleid in.github/package-trusted-sources.json; gebruik dit voor door maintainers beheerde enterprise-mirrors of private pakketrepository's in plaats van een invoerniveau-bypass voor private netwerken toe te voegen aansource=urlsource=artifact: hergebruik een.tgzdie door een andere GitHub Actions-run is geüpload
OpenClaw Release Checks draait Package Acceptance met source=artifact, het
voorbereide releasepakketartefact, suite_profile=custom,
docker_lanes=doctor-switch update-channel-switch skill-install update-corrupt-plugin upgrade-survivor published-upgrade-survivor update-restart-auth plugins-offline plugin-update,
telegram_mode=mock-openai. Package Acceptance houdt migratie, update,
herstart van update met geconfigureerde auth, live ClawHub Skills-installatie, opruimen van verouderde plugin-afhankelijkheden, offline plugin-fixtures, plugin-update en Telegram-pakket-QA tegen dezelfde opgeloste tarball. Blokkerende releasecontroles gebruiken de standaardbasislijn van het nieuwste gepubliceerde pakket; het bètaprofiel met run_release_soak=true, release_profile=stable of
release_profile=full breidt uit naar elke stabiele, via npm gepubliceerde basislijn van
2026.4.23 tot en met latest plus fixtures voor gemelde issues. Gebruik
Package Acceptance met source=npm voor een kandidaat die al is uitgebracht,
source=ref voor een door een SHA ondersteunde lokale npm-tarball vóór publicatie,
source=trusted-url voor een door maintainers beheerde enterprise/private mirror, of
source=artifact voor een voorbereide tarball die door een andere GitHub Actions-run is geüpload.
Het is de GitHub-native
vervanging voor het grootste deel van de pakket-/updatedekking waarvoor eerder
Parallels nodig was. Cross-OS-releasecontroles blijven belangrijk voor OS-specifieke onboarding,
installer- en platformgedrag, maar pakket-/updateproductvalidatie moet
Package Acceptance verkiezen.
De canonieke checklist voor update- en pluginvalidatie is
Updates en plugins testen. Gebruik deze bij het
bepalen welke lokale, Docker-, Package Acceptance- of releasecontrole-lane een
plugininstallatie/-update, doctor-opruiming of wijziging in gepubliceerde-pakketmigratie bewijst.
Uitputtende gepubliceerde-updatemigratie vanuit elk stabiel 2026.4.23+-pakket is
een aparte handmatige Update Migration-workflow, geen onderdeel van Full Release CI.
Legacy soepelheid in package-acceptance is bewust tijdgebonden. Pakketten tot en met
2026.4.25 mogen het compatibiliteitspad gebruiken voor metadatagaten die al naar
npm zijn gepubliceerd: private QA-inventoryvermeldingen die ontbreken in de tarball, ontbrekende
gateway install --wrapper, ontbrekende patchbestanden in de uit de tarball afgeleide git-fixture, ontbrekende persistente update.channel, legacy plugininstallatierecordlocaties, ontbrekende persistentie van marketplace-installatierecords, en configmetadatamigratie tijdens plugins update. Het gepubliceerde 2026.4.26-pakket mag waarschuwen
voor lokale buildmetadatastempelbestanden die al zijn uitgebracht. Latere pakketten
moeten aan de moderne pakketcontracten voldoen; dezelfde gaten laten releasevalidatie mislukken.
Gebruik bredere Package Acceptance-profielen wanneer de releasevraag over een daadwerkelijk installeerbaar pakket gaat:
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.26Veelgebruikte pakketprofielen:
smoke: snelle lanes voor pakketinstallatie/kanaal/agent, Gateway-netwerk en configherladenpackage: install-/update-/restart-/pluginpakketcontracten plus live ClawHub Skills-installatiebewijs; dit is de standaard voor releasecontrolesproduct:packageplus MCP-kanalen, cron-/subagent-opruiming, OpenAI-webzoekfunctie en OpenWebUIfull: Docker-releasepadsegmenten met OpenWebUIcustom: exactedocker_lanes-lijst voor gerichte herhalingen
Voor Telegram-bewijs van pakketkandidaten, schakel telegram_mode=mock-openai of
telegram_mode=live-frontier in op Package Acceptance. De workflow geeft de
opgeloste package-under-test-tarball door aan de Telegram-lane; de zelfstandige
Telegram-workflow accepteert nog steeds een gepubliceerde npm-specificatie voor controles na publicatie.
Automatisering voor releasepublicatie
OpenClaw Release Publish is het normale muterende publicatie-ingangspunt. Het
orkestreert de trusted-publisher-workflows in de volgorde die de release nodig heeft:
- Check de releasetag uit en los de bijbehorende commit-SHA op.
- Controleer of de tag bereikbaar is vanuit
mainofrelease/*. - Draai
pnpm plugins:sync:check. - Dispatch
Plugin NPM Releasemetpublish_scope=all-publishableenref=<release-sha>. - Dispatch
Plugin ClawHub Releasemet dezelfde scope en SHA. - Dispatch
OpenClaw NPM Releasemet de releasetag, npm-dist-tag en opgeslagenpreflight_run_idna verificatie van de opgeslagenfull_release_validation_run_id. - Maak of werk voor stabiele releases de GitHub-release bij als concept, dispatch
Windows Node Releasemet de explicietewindows_node_tagen door de kandidaat goedgekeurdewindows_node_installer_digests, en verifieer de canonieke installer-/checksum-assets voordat het concept wordt gepubliceerd.
Voorbeeld van bètapublicatie:
gh workflow run openclaw-release-publish.yml \ --ref release/YYYY.M.PATCH \ -f tag=vYYYY.M.PATCH-beta.N \ -f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \ -f full_release_validation_run_id=<successful-full-release-validation-run-id> \ -f npm_dist_tag=betaStabiele publicatie naar de standaard bèta-dist-tag:
gh workflow run openclaw-release-publish.yml \ --ref release/YYYY.M.PATCH \ -f tag=vYYYY.M.PATCH \ -f windows_node_tag=vX.Y.Z \ -f windows_node_installer_digests='{"OpenClawCompanion-Setup-x64.exe":"sha256:<approved-x64-sha256>","OpenClawCompanion-Setup-arm64.exe":"sha256:<approved-arm64-sha256>"}' \ -f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \ -f full_release_validation_run_id=<successful-full-release-validation-run-id> \ -f npm_dist_tag=betaStabiele promotie rechtstreeks naar latest is expliciet:
gh workflow run openclaw-release-publish.yml \ --ref release/YYYY.M.PATCH \ -f tag=vYYYY.M.PATCH \ -f windows_node_tag=vX.Y.Z \ -f windows_node_installer_digests='{"OpenClawCompanion-Setup-x64.exe":"sha256:<approved-x64-sha256>","OpenClawCompanion-Setup-arm64.exe":"sha256:<approved-arm64-sha256>"}' \ -f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \ -f full_release_validation_run_id=<successful-full-release-validation-run-id> \ -f npm_dist_tag=latestGebruik de lagere-niveauworkflows Plugin NPM Release en Plugin ClawHub Release
alleen voor gericht herstel- of herpublicatiewerk. OpenClaw Release Publish weigert
plugin_publish_scope=selected wanneer publish_openclaw_npm=true, zodat het kernpakket
niet kan worden uitgebracht zonder elke publiceerbare officiële Plugin, inclusief
@openclaw/diffs-language-pack. Stel voor herstel van een geselecteerde Plugin
publish_openclaw_npm=false in met plugin_publish_scope=selected en
plugins=@openclaw/name, of start de onderliggende workflow rechtstreeks.
NPM-workflowinvoer
OpenClaw NPM Release accepteert deze door de operator beheerde invoer:
tag: verplichte releasetag zoalsv2026.4.2,v2026.4.2-1ofv2026.4.2-beta.1; wanneerpreflight_only=true, mag dit ook de huidige volledige 40 tekens lange commit-SHA van de workflowbranch zijn voor een preflight die alleen valideertpreflight_only:truealleen voor validatie/build/package,falsevoor het echte publicatiepadpreflight_run_id: verplicht op het echte publicatiepad, zodat de workflow de voorbereide tarball uit de geslaagde preflightrun hergebruiktnpm_dist_tag: npm-doeltag voor het publicatiepad; standaardbeta
OpenClaw Release Publish accepteert deze door de operator beheerde invoer:
tag: verplichte releasetag; moet al bestaanpreflight_run_id: geslaagde preflightrun-id vanOpenClaw NPM Release; verplicht wanneerpublish_openclaw_npm=truefull_release_validation_run_id: geslaagde run-id vanFull Release Validation; verplicht wanneerpublish_openclaw_npm=truewindows_node_tag: exacte niet-prerelease-releasetag vanopenclaw/openclaw-windows-node; vereist voor stabiele OpenClaw-publicatiewindows_node_installer_digests: door de kandidaat goedgekeurde compacte JSON-map van de huidige namen van Windows-installatieprogramma's naar hun vastgezettesha256:-digests; vereist voor stabiele OpenClaw-publicatienpm_dist_tag: npm-doeltag voor het OpenClaw-pakketplugin_publish_scope: standaardall-publishable; gebruikselectedalleen voor gericht herstelwerk dat alleen Plugins betreft metpublish_openclaw_npm=falseplugins: door komma's gescheiden pakketnamen@openclaw/*wanneerplugin_publish_scope=selectedpublish_openclaw_npm: standaardtrue; stel alleenfalsein wanneer de workflow wordt gebruikt als orchestrator voor herstel dat alleen Plugins betreftwait_for_clawhub: standaardfalse, zodat npm-beschikbaarheid niet wordt geblokkeerd door de ClawHub-sidecar; stel alleentruein wanneer voltooiing van de workflow ook voltooiing van ClawHub moet omvatten
OpenClaw Release Checks accepteert deze door de operator beheerde invoer:
ref: branch, tag of volledige commit-SHA om te valideren. Controles met secrets vereisen dat de opgeloste commit bereikbaar is vanaf een OpenClaw-branch of releasetag.run_release_soak: kies voor een uitgebreide live/E2E-, Docker-releasepad- en all-since upgrade-survivor-duurtest voor bètareleasecontroles. Dit wordt afgedwongen doorrelease_profile=stableenrelease_profile=full.
Regels:
- Stabiele en correctietags mogen naar
betaoflatestpubliceren - Bèta-prereleasetags mogen alleen naar
betapubliceren - Voor
OpenClaw NPM Releaseis invoer met een volledige commit-SHA alleen toegestaan wanneerpreflight_only=true OpenClaw Release ChecksenFull Release Validationzijn altijd uitsluitend voor validatie- Het echte publicatiepad moet dezelfde
npm_dist_taggebruiken als tijdens de preflight; de workflow verifieert die metadata voordat de publicatie doorgaat
Stabiele npm-releasereeks
Wanneer je een stabiele npm-release maakt:
- Voer
OpenClaw NPM Releaseuit metpreflight_only=true- Voordat er een tag bestaat, kun je de huidige volledige commit-SHA van de workflowbranch gebruiken voor een validatie-only dryrun van de preflightworkflow
- Kies
npm_dist_tag=betavoor de normale beta-eerst-flow, of alleenlatestwanneer je bewust rechtstreeks stabiel wilt publiceren - Voer
Full Release Validationuit op de releasebranch, releasetag, of volledige commit-SHA wanneer je normale CI plus live prompt cache, Docker, QA Lab, Matrix en Telegram-dekking vanuit één handmatige workflow wilt - Als je bewust alleen de deterministische normale testgrafiek nodig hebt, voer dan
in plaats daarvan de handmatige
CI-workflow uit op de release-ref - Selecteer de exacte niet-prerelease
openclaw/openclaw-windows-node-releasetag waarvan de ondertekende x64- en ARM64-installatieprogramma's moeten worden geleverd. Sla die op alswindows_node_tag, en sla hun gevalideerde digest-map op alswindows_node_installer_digests. De release-candidate-helper registreert beide en neemt ze op in de gegenereerde publicatieopdracht. - Sla de geslaagde
preflight_run_idenfull_release_validation_run_idop - Voer
OpenClaw Release Publishuit met dezelfdetag, dezelfdenpm_dist_tag, de geselecteerdewindows_node_tag, de opgeslagenwindows_node_installer_digests, de opgeslagenpreflight_run_iden de opgeslagenfull_release_validation_run_id; dit publiceert geëxternaliseerde plugins naar npm en ClawHub voordat het OpenClaw npm-pakket wordt gepromoot - Als de release op
betais geland, gebruik dan deopenclaw/releases/.github/workflows/openclaw-npm-dist-tags.yml-workflow om die stabiele versie vanbetanaarlatestte promoveren - Als de release bewust rechtstreeks naar
latestis gepubliceerd enbetaonmiddellijk dezelfde stabiele build moet volgen, gebruik dan dezelfde releaseworkflow om beide dist-tags naar de stabiele versie te laten wijzen, of laat de geplande self-healing-syncbetalater verplaatsen
De dist-tag-mutatie staat in de release-ledger-repo omdat die nog steeds
NPM_TOKEN vereist, terwijl de sourcerepo publicatie met alleen OIDC behoudt.
Daardoor blijven zowel het rechtstreekse publicatiepad als het beta-eerst-promotiepad gedocumenteerd en zichtbaar voor operators.
Als een maintainer moet terugvallen op lokale npm-authenticatie, voer dan alle
1Password CLI (op)-opdrachten alleen uit binnen een dedicated tmux-sessie. Roep op
niet rechtstreeks aan vanuit de shell van de hoofdagent; door het binnen tmux te
houden, blijven prompts, waarschuwingen en OTP-afhandeling observeerbaar en worden
herhaalde hostwaarschuwingen voorkomen.
Openbare referenties
.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
Maintainers gebruiken de private releasedocumentatie in
openclaw/maintainers/release/README.md
voor het daadwerkelijke draaiboek.