OpenClaw มีช่องทางรีลีสสาธารณะสามช่องทาง:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- stable: รีลีสที่ติดแท็กซึ่งเผยแพร่ไปยัง npm
betaตามค่าเริ่มต้น หรือไปยัง npmlatestเมื่อมีการร้องขออย่างชัดเจน - beta: แท็กก่อนรีลีสที่เผยแพร่ไปยัง npm
beta - dev: หัวล่าสุดที่เปลี่ยนแปลงอยู่ของ
main
การตั้งชื่อเวอร์ชัน
- เวอร์ชันรีลีส stable:
YYYY.M.D- แท็ก Git:
vYYYY.M.D
- แท็ก Git:
- เวอร์ชันรีลีสแก้ไข stable:
YYYY.M.D-N- แท็ก Git:
vYYYY.M.D-N
- แท็ก Git:
- เวอร์ชันก่อนรีลีส beta:
YYYY.M.D-beta.N- แท็ก Git:
vYYYY.M.D-beta.N
- แท็ก Git:
- อย่าเติมศูนย์นำหน้าเดือนหรือวัน
latestหมายถึงรีลีส npm stable ปัจจุบันที่ได้รับการโปรโมตแล้วbetaหมายถึงเป้าหมายการติดตั้ง beta ปัจจุบัน- รีลีส stable และรีลีสแก้ไข stable จะเผยแพร่ไปยัง npm
betaตามค่าเริ่มต้น; ผู้ดำเนินการรีลีสสามารถระบุเป้าหมายเป็นlatestอย่างชัดเจน หรือโปรโมตบิลด์ beta ที่ผ่านการตรวจสอบแล้วในภายหลัง - รีลีส OpenClaw stable ทุกรีลีสจะส่งแพ็กเกจ npm และแอป macOS พร้อมกัน; รีลีส beta โดยปกติจะตรวจสอบและเผยแพร่เส้นทาง npm/package ก่อน โดยสงวน การ build/sign/notarize แอป mac ไว้สำหรับ stable เว้นแต่จะมีการร้องขออย่างชัดเจน
รอบการรีลีส
- รีลีสจะดำเนินไปแบบ beta ก่อน
- stable จะตามมาหลังจาก beta ล่าสุดผ่านการตรวจสอบแล้วเท่านั้น
- โดยปกติผู้ดูแลจะตัดรีลีสจากสาขา
release/YYYY.M.Dที่สร้างจากmainปัจจุบัน เพื่อให้การตรวจสอบรีลีสและการแก้ไขไม่ขัดขวางการพัฒนาใหม่ บนmain - หากแท็ก beta ถูก push หรือเผยแพร่แล้วและต้องมีการแก้ไข ผู้ดูแลจะตัดแท็ก
-beta.Nถัดไปแทนการลบหรือสร้างแท็ก beta เดิมใหม่ - ขั้นตอนรีลีสโดยละเอียด การอนุมัติ ข้อมูลรับรอง และบันทึกการกู้คืน เป็นข้อมูลสำหรับผู้ดูแลเท่านั้น
เช็กลิสต์ผู้ดำเนินการรีลีส
เช็กลิสต์นี้คือรูปแบบสาธารณะของโฟลว์รีลีส ข้อมูลรับรองส่วนตัว การลงนาม การ notarization การกู้คืน dist-tag และรายละเอียด rollback ฉุกเฉินจะอยู่ใน runbook รีลีสสำหรับผู้ดูแลเท่านั้น- เริ่มจาก
mainปัจจุบัน: pull ล่าสุด ยืนยันว่า commit เป้าหมายถูก push แล้ว และยืนยันว่า CI ของmainปัจจุบันเขียวพอที่จะสร้างสาขาจากจุดนั้น - เขียนส่วนบนสุดของ
CHANGELOG.mdใหม่จากประวัติ commit จริงด้วย/changelogรักษารายการให้เป็นมุมมองผู้ใช้ commit รายการนั้น push รายการนั้น และ rebase/pull อีกครั้งก่อนสร้างสาขา - ตรวจทานระเบียนความเข้ากันได้ของรีลีสใน
src/plugins/compat/registry.tsและsrc/commands/doctor/shared/deprecation-compat.tsลบความเข้ากันได้ ที่หมดอายุแล้วเฉพาะเมื่อเส้นทางอัปเกรดยังคงครอบคลุมอยู่ หรือบันทึกเหตุผลว่าทำไมจึงตั้งใจ คงไว้ - สร้าง
release/YYYY.M.Dจากmainปัจจุบัน; อย่าทำงานรีลีสปกติ โดยตรงบนmain - เพิ่มเวอร์ชันในทุกตำแหน่งที่จำเป็นสำหรับแท็กที่ตั้งใจไว้ แล้วรัน
pnpm release:prepคำสั่งนี้จะรีเฟรชเวอร์ชัน Plugin, inventory ของ Plugin, สคีมา config, metadata ของ config ช่องทางที่ bundle มา, baseline เอกสาร config, export ของ plugin SDK และ baseline API ของ plugin SDK ตามลำดับที่ถูกต้อง commit drift ที่สร้างขึ้นก่อนติดแท็ก จากนั้นรัน preflight แบบ deterministic ในเครื่อง:pnpm check:test-types,pnpm check:architecture,pnpm build && pnpm ui:build, และpnpm release:check - รัน
OpenClaw NPM Releaseด้วยpreflight_only=trueก่อนมีแท็ก อนุญาตให้ใช้ SHA ของสาขารีลีสแบบเต็ม 40 อักขระสำหรับ preflight เพื่อการตรวจสอบเท่านั้น บันทึกpreflight_run_idที่สำเร็จไว้ - เริ่มการทดสอบก่อนรีลีสทั้งหมดด้วย
Full Release Validationสำหรับ สาขารีลีส แท็ก หรือ SHA ของ commit แบบเต็ม นี่คือ entrypoint แบบ manual เพียงจุดเดียว สำหรับกล่องทดสอบรีลีสขนาดใหญ่สี่ชุด: Vitest, Docker, QA Lab และ Package - หากการตรวจสอบล้มเหลว ให้แก้บนสาขารีลีสและรันใหม่เฉพาะไฟล์, lane, งาน workflow, package profile, provider หรือ allowlist ของโมเดลที่เล็กที่สุดซึ่งพิสูจน์การแก้ไขได้ รัน umbrella ทั้งหมดใหม่เฉพาะเมื่อพื้นผิวที่เปลี่ยนแปลงทำให้หลักฐานเดิมล้าสมัย
- สำหรับ beta ให้ติดแท็ก
vYYYY.M.D-beta.Nจากนั้นรันOpenClaw Release Publishจาก สาขาrelease/YYYY.M.Dที่ตรงกัน คำสั่งนี้ตรวจสอบpnpm plugins:sync:check, dispatch แพ็กเกจ Plugin ทั้งหมดที่เผยแพร่ได้ไปยัง npm และชุดเดียวกันไปยัง ClawHub แบบขนาน จากนั้นโปรโมต artifact preflight ของ OpenClaw npm ที่เตรียมไว้ ด้วย dist-tag ที่ตรงกันทันทีเมื่อการเผยแพร่ Plugin npm สำเร็จ หลังจาก child ของการเผยแพร่ OpenClaw npm สำเร็จ คำสั่งนี้จะสร้างหรืออัปเดต หน้า GitHub release/prerelease ที่ตรงกันจากส่วนCHANGELOG.mdที่ตรงกันครบถ้วน รีลีส stable ที่เผยแพร่ไปยัง npmlatestจะกลายเป็น GitHub latest release; รีลีสบำรุงรักษา stable ที่คงไว้บน npmbetaจะถูกสร้าง ด้วย GitHublatest=falseการเผยแพร่ ClawHub อาจยังทำงานอยู่ขณะที่ OpenClaw npm เผยแพร่ แต่ workflow release publish จะพิมพ์ child run IDs ทันที ตามค่าเริ่มต้น workflow นี้ จะไม่รอ ClawHub หลังจาก dispatch แล้ว ดังนั้นความพร้อมใช้งานของ OpenClaw npm จะไม่ถูกบล็อกโดยการอนุมัติของ ClawHub หรือการทำงานกับ registry ที่ช้ากว่า; ตั้งค่าwait_for_clawhub=trueเมื่อ ClawHub ต้องบล็อกการจบ workflow เส้นทาง ClawHub จะ retry ความล้มเหลวชั่วคราวของการติดตั้ง dependency ของ CLI, เผยแพร่ Plugin ที่ผ่าน preview แม้เมื่อ preview cell หนึ่งเกิดปัญหาไม่เสถียร และจบด้วย การตรวจสอบ registry สำหรับเวอร์ชัน Plugin ที่คาดไว้ทุกตัวเพื่อให้การเผยแพร่บางส่วน ยังคงมองเห็นได้และ retry ได้ หลังเผยแพร่ ให้รันpnpm release:verify-beta -- YYYY.M.D-beta.N --openclaw-npm-run <run-id> --plugin-npm-run <run-id> --plugin-clawhub-run <run-id>เพื่อตรวจสอบ GitHub prerelease, dist-tags ของ npmbeta, integrity ของ npm, เส้นทางติดตั้งที่เผยแพร่แล้ว, เวอร์ชันที่ตรงกันของ ClawHub, artifacts ของ ClawHub และ ผลลัพธ์ของ child workflow จากคำสั่งเดียว เพิ่ม--rerun-failed-clawhubเมื่อ sidecar ของ ClawHub ล้มเหลวเฉพาะในงานที่ retry ได้และควรถูกรันใหม่ในที่เดิม จากนั้นรัน package acceptance หลังเผยแพร่กับแพ็กเกจopenclaw@YYYY.M.D-beta.Nหรือopenclaw@betaที่เผยแพร่แล้ว หาก prerelease ที่ถูก push หรือเผยแพร่แล้วต้องมีการแก้ไข ให้ตัดหมายเลข prerelease ที่ตรงกันถัดไป; อย่าลบหรือเขียน prerelease เดิมใหม่ - สำหรับ stable ให้ดำเนินต่อเฉพาะหลังจาก beta หรือ release candidate ที่ตรวจสอบแล้วมี
หลักฐานการตรวจสอบตามที่กำหนด การเผยแพร่ stable npm ก็ผ่าน
OpenClaw Release Publishเช่นกัน โดยใช้ artifact preflight ที่สำเร็จแล้วผ่านpreflight_run_id; ความพร้อมของรีลีส macOS stable ยังต้องมี.zip,.dmg,.dSYM.zipที่แพ็กแล้ว และappcast.xmlที่อัปเดตบนmainworkflow เผยแพร่ macOS ส่วนตัวจะเผยแพร่ appcast ที่ลงนามแล้วไปยังmainสาธารณะโดยอัตโนมัติหลังจาก assets รีลีสผ่านการตรวจสอบ; หาก branch protection บล็อก การ push โดยตรง workflow จะเปิดหรืออัปเดต PR ของ appcast - หลังเผยแพร่ ให้รันตัวตรวจสอบหลังเผยแพร่ของ npm, E2E ของ Telegram แบบ standalone published-npm ที่เป็นทางเลือกเมื่อคุณต้องการหลักฐานช่องทางหลังเผยแพร่, การโปรโมต dist-tag เมื่อจำเป็น, ตรวจสอบหน้า GitHub release ที่สร้างขึ้น, และรันขั้นตอนประกาศรีลีส
Release preflight
- รัน
pnpm check:test-typesก่อน release preflight เพื่อให้ TypeScript ของการทดสอบยังถูก ครอบคลุมอยู่นอก gatepnpm checkในเครื่องที่เร็วกว่า - รัน
pnpm check:architectureก่อน release preflight เพื่อให้การตรวจสอบวงจร import และขอบเขตสถาปัตยกรรมที่กว้างกว่านั้นเป็นสีเขียวอยู่นอก gate ในเครื่องที่เร็วกว่า - รัน
pnpm build && pnpm ui:buildก่อนpnpm release:checkเพื่อให้ artifact รีลีสdist/*ที่คาดไว้และบันเดิล Control UI มีอยู่สำหรับขั้นตอนตรวจสอบความถูกต้องของแพ็ก - รัน
pnpm release:prepหลังจาก bump เวอร์ชัน root และก่อนติดแท็ก ซึ่งจะรัน generator รีลีสแบบ deterministic ทุกตัวที่มัก drift หลังจากการเปลี่ยนเวอร์ชัน/config/API: เวอร์ชัน plugin, inventory ของ plugin, schema config พื้นฐาน, metadata config ของช่องทางที่บันเดิล, baseline เอกสาร config, export ของ plugin SDK และ baseline API ของ plugin SDKpnpm release:checkจะรัน guard เหล่านั้นซ้ำในโหมดตรวจสอบ และรายงานความล้มเหลวจาก generated drift ทั้งหมดที่พบในรอบเดียว ก่อนรันการตรวจสอบรีลีสแพ็กเกจ - รัน workflow แบบ manual
Full Release Validationก่อนการอนุมัติรีลีสเพื่อเริ่ม test box ก่อนรีลีสทั้งหมดจาก entrypoint เดียว รับ branch, tag หรือ SHA commit เต็ม, dispatchCIแบบ manual และ dispatchOpenClaw Release Checksสำหรับ install smoke, package acceptance, การตรวจสอบแพ็กเกจข้าม OS, QA Lab parity, Matrix และ Telegram lanes การรัน stable/default จะเก็บ live/E2E แบบครบถ้วนและ Docker release-path soak ไว้หลังrun_release_soak=true;release_profile=fullจะบังคับเปิด soak เมื่อใช้release_profile=fullและrerun_group=allจะรัน package Telegram E2E กับ artifactrelease-package-under-testจาก release checks ด้วย ระบุrelease_package_specหลังจากเผยแพร่ beta เพื่อใช้แพ็กเกจ npm ที่เผยแพร่แล้วซ้ำใน release checks, Package Acceptance และ package Telegram E2E โดยไม่ต้องสร้าง release tarball ใหม่ ระบุnpm_telegram_package_specเฉพาะเมื่อ Telegram ควรใช้แพ็กเกจที่เผยแพร่คนละตัวกับส่วนที่เหลือ ของการตรวจสอบรีลีส ระบุpackage_acceptance_package_specเมื่อ Package Acceptance ควรใช้ แพ็กเกจที่เผยแพร่คนละตัวกับ release package spec ระบุevidence_package_specเมื่อรายงานหลักฐานส่วนตัวควรพิสูจน์ว่าการตรวจสอบตรงกับแพ็กเกจ npm ที่เผยแพร่แล้ว โดยไม่บังคับ Telegram E2E ตัวอย่าง:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.D - รัน workflow แบบ manual
Package Acceptanceเมื่อคุณต้องการหลักฐาน side-channel สำหรับ package candidate ขณะที่งานรีลีสดำเนินต่อ ใช้source=npmสำหรับopenclaw@beta,openclaw@latestหรือเวอร์ชันรีลีสแบบเจาะจง; ใช้source=refเพื่อแพ็ก branch/tag/SHApackage_refที่เชื่อถือได้ด้วย harnessworkflow_refปัจจุบัน; ใช้source=urlสำหรับ HTTPS tarball พร้อม SHA-256 ที่จำเป็น; หรือsource=artifactสำหรับ tarball ที่อัปโหลดโดย GitHub Actions run อื่น workflow จะแก้ candidate เป็นpackage-under-test, ใช้ Docker E2E release scheduler ซ้ำกับ tarball นั้น และสามารถรัน Telegram QA กับ tarball เดียวกันด้วยtelegram_mode=mock-openaiหรือtelegram_mode=live-frontierเมื่อ Docker lanes ที่เลือกมีpublished-upgrade-survivorartifact แพ็กเกจคือ candidate และpublished_upgrade_survivor_baselineจะเลือก baseline ที่เผยแพร่แล้วupdate-restart-authใช้แพ็กเกจ candidate เป็นทั้ง CLI ที่ติดตั้งและ package-under-test เพื่อทดสอบเส้นทาง managed restart ของคำสั่ง update ของ candidate ตัวอย่าง: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-openaiโปรไฟล์ทั่วไป:smoke: lane สำหรับ install/channel/agent, เครือข่าย Gateway และ reload configpackage: lane package/update/restart/plugin แบบ artifact-native ที่ไม่มี OpenWebUI หรือ ClawHub แบบ liveproduct: โปรไฟล์ package พร้อมช่องทาง MCP, การล้าง cron/subagent, การค้นหาเว็บ OpenAI และ OpenWebUIfull: ชิ้นส่วน Docker release-path พร้อม OpenWebUIcustom: การเลือกdocker_lanesแบบเจาะจงสำหรับการ rerun ที่โฟกัส
- รัน workflow แบบ manual
CIโดยตรงเมื่อคุณต้องการเฉพาะ coverage CI ปกติแบบเต็ม สำหรับ release candidate การ dispatch CI แบบ manual จะข้าม changed scoping และบังคับ Linux Node shards, bundled-plugin shards, channel contracts, ความเข้ากันได้กับ Node 22,check,check-additional, build smoke, การตรวจสอบ docs, Python skills, Windows, macOS, Android และ Control UI i18n lanes ตัวอย่าง:gh workflow run ci.yml --ref release/YYYY.M.D - รัน
pnpm qa:otel:smokeเมื่อตรวจสอบ telemetry ของรีลีส โดยจะทดสอบ QA-lab ผ่าน receiver OTLP/HTTP ในเครื่อง และตรวจสอบชื่อ span ของ trace ที่ export, attribute ที่มีขอบเขต และการ redact content/identifier โดยไม่ต้องใช้ Opik, Langfuse หรือ collector ภายนอกอื่น - รัน
pnpm release:checkก่อนทุกรีลีสที่ติดแท็ก - รัน
OpenClaw Release Publishสำหรับลำดับการเผยแพร่ที่เปลี่ยนสถานะหลังจากมีแท็กแล้ว Dispatch จากrelease/YYYY.M.D(หรือmainเมื่อเผยแพร่แท็กที่ main เข้าถึงได้), ส่ง release tag และpreflight_run_idของ OpenClaw npm ที่สำเร็จ และคง scope การเผยแพร่ plugin ค่าเริ่มต้นall-publishableไว้ เว้นแต่คุณตั้งใจรันการซ่อมแบบโฟกัส workflow จะ serialize การเผยแพร่ plugin npm, การเผยแพร่ plugin ClawHub และการเผยแพร่ OpenClaw npm เพื่อไม่ให้ core package ถูกเผยแพร่ก่อน plugin ที่ externalized - Release checks ตอนนี้รันใน workflow แบบ manual แยกต่างหาก:
OpenClaw Release Checks OpenClaw Release Checksยังรัน QA Lab mock parity lane พร้อมโปรไฟล์ Matrix แบบ live ที่รวดเร็วและ Telegram QA lane ก่อนการอนุมัติรีลีส lane แบบ live ใช้ environmentqa-live-shared; Telegram ยังใช้ Convex CI credential leases ด้วย รัน workflow แบบ manualQA-Lab - All Lanesพร้อมmatrix_profile=allและmatrix_shards=trueเมื่อคุณต้องการ inventory transport, media และ E2EE ของ Matrix แบบเต็มขนานกัน- การตรวจสอบ runtime การติดตั้งและ upgrade ข้าม OS เป็นส่วนหนึ่งของ
OpenClaw Release ChecksและFull Release Validationแบบ public ซึ่งเรียก reusable workflow.github/workflows/openclaw-cross-os-release-checks-reusable.ymlโดยตรง - การแยกนี้ตั้งใจทำไว้: รักษาเส้นทางรีลีส npm จริงให้สั้น deterministic และเน้น artifact ขณะที่การตรวจสอบ live ที่ช้ากว่าอยู่ใน lane ของตัวเอง เพื่อไม่ให้หน่วงหรือบล็อกการเผยแพร่
- Release checks ที่มีความลับควรถูก dispatch ผ่าน
Full Release Validationหรือจาก workflow refmain/release เพื่อให้ logic ของ workflow และ secret อยู่ภายใต้การควบคุม OpenClaw Release Checksรับ branch, tag หรือ SHA commit เต็ม ตราบใดที่ commit ที่ resolve ได้เข้าถึงได้จาก branch หรือ release tag ของ OpenClaw- preflight แบบ validation-only ของ
OpenClaw NPM Releaseยังรับ SHA commit ของ workflow-branch ปัจจุบันแบบเต็ม 40 อักขระได้โดยไม่ต้องมีแท็กที่ push แล้ว - เส้นทาง SHA นั้นเป็น validation-only และไม่สามารถ promote เป็นการเผยแพร่จริงได้
- ในโหมด SHA workflow จะสังเคราะห์
v<package.json version>เฉพาะสำหรับการตรวจสอบ metadata ของแพ็กเกจเท่านั้น; การเผยแพร่จริงยังต้องใช้ release tag จริง - ทั้งสอง workflow คงเส้นทางเผยแพร่และ promotion จริงไว้บน runner ที่ GitHub-hosted ขณะที่เส้นทางตรวจสอบที่ไม่เปลี่ยนสถานะสามารถใช้ runner Linux ของ Blacksmith ที่ใหญ่กว่าได้
- workflow นั้นรัน
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheโดยใช้ทั้ง workflow secretsOPENAI_API_KEYและANTHROPIC_API_KEY - npm release preflight ไม่รอ lane release checks แยกต่างหากอีกต่อไป
- ก่อนติดแท็ก release candidate ในเครื่อง ให้รัน
RELEASE_TAG=vYYYY.M.D-beta.N pnpm release:fast-pretag-checkhelper จะรัน guardrail รีลีสแบบเร็ว, การตรวจสอบรีลีส plugin npm/ClawHub, build, UI build และrelease:openclaw:npm:checkตามลำดับที่จับข้อผิดพลาดทั่วไป ซึ่งบล็อกการอนุมัติได้ก่อน workflow เผยแพร่ของ GitHub เริ่มทำงาน - รัน
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(หรือแท็ก beta/correction ที่ตรงกัน) ก่อนการอนุมัติ - หลังเผยแพร่ npm ให้รัน
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(หรือเวอร์ชัน beta/correction ที่ตรงกัน) เพื่อตรวจสอบเส้นทางติดตั้ง registry ที่เผยแพร่แล้วใน temp prefix ใหม่ - หลังเผยแพร่ beta ให้รัน
OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC=openclaw@YYYY.M.D-beta.N OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=ci pnpm test:docker:npm-telegram-liveเพื่อตรวจสอบ onboarding ของแพ็กเกจที่ติดตั้ง, การตั้งค่า Telegram และ Telegram E2E จริงกับแพ็กเกจ npm ที่เผยแพร่แล้ว โดยใช้ credential pool ของ Telegram แบบ leased ที่ใช้ร่วมกัน การรันครั้งเดียวในเครื่องของ maintainer อาจละ Convex vars และส่ง env credentialsOPENCLAW_QA_TELEGRAM_*ทั้งสามตัวโดยตรง - หากต้องการรัน post-publish beta smoke แบบเต็มจากเครื่อง maintainer ให้ใช้
pnpm release:beta-smoke -- --beta betaNhelper จะรันการตรวจสอบ Parallels npm update/fresh-target, dispatchNPM Telegram Beta E2E, poll workflow run ที่เจาะจง, ดาวน์โหลด artifact และพิมพ์รายงาน Telegram - Maintainer สามารถรัน post-publish check เดียวกันจาก GitHub Actions ผ่าน workflow
แบบ manual
NPM Telegram Beta E2Eได้ โดยตั้งใจให้เป็น manual-only และไม่รันทุก merge - automation รีลีสของ maintainer ตอนนี้ใช้ preflight-then-promote:
- การเผยแพร่ npm จริงต้องผ่าน
preflight_run_idของ npm ที่สำเร็จ - การเผยแพร่ npm จริงต้องถูก dispatch จาก branch
mainหรือrelease/YYYY.M.Dเดียวกันกับ preflight run ที่สำเร็จ - รีลีส npm แบบ stable ตั้งค่าเริ่มต้นเป็น
beta - การเผยแพร่ npm แบบ stable สามารถ target
latestได้อย่างชัดเจนผ่าน workflow input - การเปลี่ยน npm dist-tag แบบใช้ token ตอนนี้อยู่ใน
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlเพื่อความปลอดภัย เพราะnpm dist-tag addยังต้องใช้NPM_TOKENขณะที่ repo public คงการเผยแพร่แบบ OIDC-only ไว้ macOS Releaseแบบ public เป็น validation-only; เมื่อแท็กอยู่เฉพาะบน release branch แต่ workflow ถูก dispatch จากmainให้ตั้งpublic_release_branch=release/YYYY.M.D- การเผยแพร่ mac แบบ private จริงต้องผ่าน
preflight_run_idและvalidate_run_idของ private mac ที่สำเร็จ - เส้นทางเผยแพร่จริงจะ promote artifact ที่เตรียมไว้แทนการ build ใหม่อีกครั้ง
- การเผยแพร่ npm จริงต้องผ่าน
- สำหรับรีลีส correction แบบ stable เช่น
YYYY.M.D-Nverifier หลังเผยแพร่ ยังตรวจสอบเส้นทาง upgrade temp-prefix เดียวกันจากYYYY.M.Dไปเป็นYYYY.M.D-Nเพื่อไม่ให้ release correction ปล่อยให้การติดตั้ง global เก่าค้างอยู่บน payload stable พื้นฐานโดยไม่มีสัญญาณ - npm release preflight จะ fail closed เว้นแต่ tarball จะมีทั้ง
dist/control-ui/index.htmlและ payloaddist/control-ui/assets/ที่ไม่ว่าง เพื่อไม่ให้เราส่ง dashboard บนเบราว์เซอร์ที่ว่างเปล่าอีก - การตรวจสอบหลังเผยแพร่ยังตรวจสอบว่า entrypoint ของ plugin ที่เผยแพร่และ
metadata ของแพ็กเกจมีอยู่ใน layout registry ที่ติดตั้งแล้ว รีลีสที่ส่ง payload runtime
ของ plugin หายไปจะ fail postpublish verifier และไม่สามารถ promote เป็น
latestได้ pnpm test:install:smokeยังบังคับใช้งบประมาณunpackedSizeของ npm pack บน tarball update candidate ด้วย เพื่อให้ installer e2e จับ pack bloat ที่ไม่ได้ตั้งใจ ก่อนเส้นทาง release publish- หากงานรีลีสแตะ CI planning, manifest timing ของ extension หรือ matrix การทดสอบ
extension ให้ regenerate และ review matrix outputs
plugin-prerelease-extension-shardที่ planner เป็นเจ้าของจาก.github/workflows/plugin-prerelease.ymlก่อนการอนุมัติ เพื่อไม่ให้ release notes อธิบาย layout CI ที่เก่า - ความพร้อมของรีลีส macOS แบบ stable ยังรวม surface ของ updater ด้วย:
- GitHub release ต้องลงท้ายด้วย
.zip,.dmgและ.dSYM.zipที่แพ็กแล้ว appcast.xmlบนmainต้องชี้ไปยัง zip stable ใหม่หลังเผยแพร่; workflow เผยแพร่ macOS แบบ private จะ commit ให้โดยอัตโนมัติ หรือเปิด appcast PR เมื่อ direct push ถูกบล็อก- แอปที่แพ็กแล้วต้องคง bundle id ที่ไม่ใช่ debug, Sparkle feed
URL ที่ไม่ว่าง และ
CFBundleVersionที่เท่ากับหรือสูงกว่า canonical Sparkle build floor สำหรับเวอร์ชันรีลีสนั้น
- GitHub release ต้องลงท้ายด้วย
กล่องทดสอบรีลีส
Full Release Validation คือวิธีที่ผู้ปฏิบัติงานใช้เริ่มการทดสอบก่อนรีลีสทั้งหมดจาก
จุดเข้าเดียว สำหรับหลักฐานคอมมิตที่ปักหมุดบนแบรนช์ที่เคลื่อนไหวเร็ว ให้ใช้
ตัวช่วยเพื่อให้เวิร์กโฟลว์ลูกทุกตัวรันจากแบรนช์ชั่วคราวที่ตรึงไว้กับ SHA เป้าหมาย:
release-ci/<sha>-..., เรียกใช้ Full Release Validation
จากแบรนช์นั้นด้วย ref=<sha>, ตรวจสอบว่า headSha ของเวิร์กโฟลว์ลูกทุกตัว
ตรงกับเป้าหมาย แล้วลบแบรนช์ชั่วคราว วิธีนี้ช่วยหลีกเลี่ยงการพิสูจน์รันลูกของ
main ที่ใหม่กว่าโดยไม่ตั้งใจ
สำหรับการตรวจสอบแบรนช์หรือแท็กรีลีส ให้รันจาก ref เวิร์กโฟลว์ main ที่เชื่อถือได้
และส่งแบรนช์หรือแท็กรีลีสเป็น ref:
CI แบบแมนนวลด้วย
target_ref=<release-ref>, เรียกใช้ OpenClaw Release Checks, เตรียม
อาร์ติแฟกต์แม่ release-package-under-test สำหรับการตรวจสอบฝั่งแพ็กเกจ และ
เรียกใช้แพ็กเกจ Telegram E2E แบบสแตนด์อโลนเมื่อ release_profile=full พร้อม
rerun_group=all หรือเมื่อมีการตั้งค่า release_package_spec หรือ
npm_telegram_package_spec จากนั้น OpenClaw Release Checks จะกระจายไปยัง
install smoke, การตรวจสอบรีลีสข้ามระบบปฏิบัติการ, ความครอบคลุม live/E2E Docker
ตามเส้นทางรีลีสเมื่อเปิดใช้ soak, Package Acceptance พร้อม Telegram package QA,
ความเท่าเทียมของ QA Lab, live Matrix และ live Telegram รันแบบเต็มจะยอมรับได้
ก็ต่อเมื่อสรุป Full Release Validation แสดงว่า normal_ci และ
release_checks สำเร็จ ในโหมด full/all ลูก npm_telegram ต้องสำเร็จด้วย;
นอกเหนือจาก full/all จะถูกข้าม เว้นแต่มีการให้ release_package_spec หรือ
npm_telegram_package_spec ที่เผยแพร่แล้ว สรุปตัวตรวจสอบสุดท้ายมีตารางงานที่ช้าที่สุด
สำหรับรันลูกแต่ละตัว เพื่อให้ผู้จัดการรีลีสเห็นเส้นทางวิกฤตปัจจุบันโดยไม่ต้องดาวน์โหลดล็อก
ดู การตรวจสอบรีลีสเต็มรูปแบบ สำหรับ
เมทริกซ์สเตจครบถ้วน ชื่องานเวิร์กโฟลว์ที่แน่นอน ความแตกต่างระหว่างโปรไฟล์ stable
กับ full อาร์ติแฟกต์ และแฮนเดิลสำหรับรันซ้ำแบบเจาะจง
เวิร์กโฟลว์ลูกจะถูกเรียกใช้จาก ref ที่เชื่อถือได้ซึ่งรัน Full Release Validation โดยปกติคือ --ref main แม้ว่า ref เป้าหมายจะชี้ไปยังแบรนช์หรือแท็กรีลีส
ที่เก่ากว่า ไม่มีอินพุต workflow-ref แยกต่างหากสำหรับ Full Release Validation;
ให้เลือก harness ที่เชื่อถือได้โดยเลือก ref ของเวิร์กโฟลว์รัน
อย่าใช้ --ref main -f ref=<sha> สำหรับหลักฐานคอมมิตที่แน่นอนบน main ที่เคลื่อนไหวอยู่;
SHA คอมมิตดิบไม่สามารถเป็น workflow dispatch ref ได้ ดังนั้นให้ใช้
pnpm ci:full-release --sha <sha> เพื่อสร้างแบรนช์ชั่วคราวที่ปักหมุดไว้
ใช้ release_profile เพื่อเลือกขอบเขต live/provider:
minimum: เส้นทาง OpenAI/core live และ Docker ที่สำคัญต่อรีลีสและเร็วที่สุดstable: minimum พร้อมความครอบคลุม provider/backend ที่เสถียรสำหรับการอนุมัติรีลีสfull: stable พร้อมความครอบคลุม provider/media เชิงคำแนะนำที่กว้างขึ้น
run_release_soak=true กับ stable เมื่อเลนที่บล็อกรีลีสเป็นสีเขียว
และคุณต้องการ live/E2E แบบละเอียด, เส้นทางรีลีส Docker และ
การกวาดตรวจ upgrade-survivor ที่เผยแพร่แล้วแบบมีขอบเขต ก่อนโปรโมต การกวาดนี้ครอบคลุม
แพ็กเกจ stable ล่าสุดสี่รายการ พร้อม baseline ที่ปักหมุด 2026.4.23 และ 2026.5.2
รวมถึงความครอบคลุม 2026.4.15 ที่เก่ากว่า โดยลบ baseline ที่ซ้ำกันออกและ
แยกแต่ละ baseline เป็นงาน Docker runner ของตัวเอง full หมายถึง
run_release_soak=true
OpenClaw Release Checks ใช้ ref เวิร์กโฟลว์ที่เชื่อถือได้เพื่อแก้ ref เป้าหมาย
ครั้งเดียวเป็น release-package-under-test และใช้อาร์ติแฟกต์นั้นซ้ำใน
การตรวจสอบข้ามระบบปฏิบัติการ, Package Acceptance และ release-path Docker เมื่อ soak ทำงาน
วิธีนี้ทำให้กล่องฝั่งแพ็กเกจทั้งหมดอยู่บนไบต์ชุดเดียวกัน และหลีกเลี่ยงการสร้างแพ็กเกจซ้ำ
หลังจาก beta อยู่บน npm แล้ว ให้ตั้งค่า release_package_spec=openclaw@YYYY.M.D-beta.N
เพื่อให้ release checks ดาวน์โหลดแพ็กเกจที่จัดส่งแล้วครั้งเดียว ดึง SHA ของแหล่งบิลด์จาก
dist/build-info.json และใช้อาร์ติแฟกต์นั้นซ้ำสำหรับเลนข้ามระบบปฏิบัติการ,
Package Acceptance, release-path Docker และ package Telegram
OpenAI install smoke ข้ามระบบปฏิบัติการใช้ OPENCLAW_CROSS_OS_OPENAI_MODEL เมื่อมีการตั้งค่า
ตัวแปร repo/org มิฉะนั้นจะใช้ openai/gpt-5.4 เพราะเลนนี้กำลังพิสูจน์
การติดตั้งแพ็กเกจ onboarding การเริ่ม Gateway และ agent turn แบบ live หนึ่งครั้ง
แทนที่จะ benchmark โมเดลค่าเริ่มต้นที่ช้าที่สุด เมทริกซ์ live provider ที่กว้างกว่า
ยังคงเป็นที่สำหรับความครอบคลุมเฉพาะโมเดล
ใช้ตัวแปรเหล่านี้ตามสเตจรีลีส:
Verify full validation ที่ล้มเหลว
สำหรับการกู้คืนแบบมีขอบเขต ให้ส่ง rerun_group ไปยัง umbrella all คือรันจริงของ
release-candidate, ci รันเฉพาะลูก CI ปกติ, plugin-prerelease
รันเฉพาะลูก Plugin เฉพาะรีลีส, release-checks รันกล่องรีลีสทุกตัว และกลุ่มรีลีสที่แคบกว่า
คือ install-smoke, cross-os, live-e2e, package, qa, qa-parity,
qa-live และ npm-telegram
การรันซ้ำ npm-telegram แบบเจาะจงต้องใช้ release_package_spec หรือ
npm_telegram_package_spec; รัน full/all พร้อม release_profile=full ใช้
อาร์ติแฟกต์แพ็กเกจ release-checks การรันซ้ำข้ามระบบปฏิบัติการแบบเจาะจง
สามารถเพิ่ม cross_os_suite_filter=windows/packaged-upgrade หรือ
ตัวกรอง OS/suite อื่นได้ ความล้มเหลวของ release-checks ฝั่ง QA เป็นเชิงคำแนะนำ;
ความล้มเหลวเฉพาะ QA ไม่บล็อกการตรวจสอบรีลีส
Vitest
กล่อง Vitest คือเวิร์กโฟลว์ลูกCI แบบแมนนวล Manual CI ตั้งใจ
ข้ามการกำหนดขอบเขตตามการเปลี่ยนแปลง และบังคับกราฟทดสอบปกติสำหรับ
release candidate: Linux Node shards, bundled-plugin shards, channel contracts, ความเข้ากันได้กับ Node 22,
check, check-additional, build smoke, docs checks, Python
skills, Windows, macOS, Android และ Control UI i18n
ใช้กล่องนี้เพื่อตอบว่า “ซอร์สทรีผ่านชุดทดสอบปกติเต็มรูปแบบหรือไม่?”
กล่องนี้ไม่เหมือนกับการตรวจสอบผลิตภัณฑ์ตามเส้นทางรีลีส หลักฐานที่ควรเก็บ:
- สรุป
Full Release Validationที่แสดง URL รันCIที่ถูกเรียกใช้ - รัน
CIเป็นสีเขียวบน SHA เป้าหมายที่แน่นอน - ชื่อ shard ที่ล้มเหลวหรือช้า จากงาน CI เมื่อสืบสวน regression
- อาร์ติแฟกต์ timing ของ Vitest เช่น
.artifacts/vitest-shard-timings.jsonเมื่อ รันต้องการการวิเคราะห์ประสิทธิภาพ
Docker
กล่อง Docker อยู่ในOpenClaw Release Checks ผ่าน
openclaw-live-and-e2e-checks-reusable.yml พร้อมเวิร์กโฟลว์ install-smoke
โหมดรีลีส กล่องนี้ตรวจสอบ release candidate ผ่านสภาพแวดล้อม Docker แบบแพ็กเกจ
แทนที่จะใช้เฉพาะการทดสอบระดับซอร์ส
ความครอบคลุม Docker สำหรับรีลีสประกอบด้วย:
- install smoke เต็มรูปแบบที่เปิดใช้ slow Bun global install smoke
- การเตรียม/ใช้ซ้ำอิมเมจ root Dockerfile smoke ตาม SHA เป้าหมาย โดยมีงาน QR, root/gateway และ installer/Bun smoke รันเป็น install-smoke shard แยกกัน
- เลน repository E2E
- ชังก์ release-path Docker:
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-gและplugins-runtime-install-h - ความครอบคลุม OpenWebUI ภายในชังก์
plugins-runtime-servicesเมื่อมีการร้องขอ - เลนติดตั้ง/ถอนการติดตั้ง bundled Plugin ที่แยกไว้
bundled-plugin-install-uninstall-0ถึงbundled-plugin-install-uninstall-23 - ชุด provider live/E2E และความครอบคลุมโมเดล live ของ Docker เมื่อ release checks รวมชุด live
.artifacts/docker-tests/ พร้อมล็อกเลน, summary.json, failures.json,
phase timings, JSON แผน scheduler และคำสั่งรันซ้ำ สำหรับการกู้คืนแบบเจาะจง
ให้ใช้ docker_lanes=<lane[,lane]> บนเวิร์กโฟลว์ live/E2E แบบ reusable แทนการรัน
ชังก์รีลีสทั้งหมดซ้ำ คำสั่งรันซ้ำที่สร้างขึ้นมี package_artifact_run_id
ก่อนหน้าและอินพุตอิมเมจ Docker ที่เตรียมไว้เมื่อมีให้ใช้ ดังนั้นเลนที่ล้มเหลว
สามารถใช้ tarball และอิมเมจ GHCR ชุดเดิมซ้ำได้
QA Lab
กล่อง QA Lab เป็นส่วนหนึ่งของOpenClaw Release Checks เช่นกัน กล่องนี้เป็นเกต
พฤติกรรมเชิง agentic และระดับช่องทางสำหรับรีลีส แยกจากกลไกแพ็กเกจของ Vitest และ Docker
ความครอบคลุม QA Lab สำหรับรีลีสประกอบด้วย:
- เลน mock parity ที่เปรียบเทียบเลน candidate ของ OpenAI กับ baseline Opus 4.6 โดยใช้ agentic parity pack
- โปรไฟล์ fast live Matrix QA ที่ใช้สภาพแวดล้อม
qa-live-shared - เลน live Telegram QA ที่ใช้การเช่าข้อมูลรับรอง Convex CI
pnpm qa:otel:smokeเมื่อ telemetry ของรีลีสต้องการหลักฐาน local ที่ชัดเจน
แพ็กเกจ
กล่องแพ็กเกจคือเกตของผลิตภัณฑ์ที่ติดตั้งได้ กล่องนี้รองรับโดยPackage Acceptance และ resolver
scripts/resolve-openclaw-package-candidate.mjs resolver จะ normalize
candidate ให้เป็น tarball package-under-test ที่ Docker E2E ใช้ ตรวจสอบ
inventory ของแพ็กเกจ บันทึกเวอร์ชันแพ็กเกจและ SHA-256 และแยก ref ของ workflow harness
ออกจาก ref ของซอร์สแพ็กเกจ
แหล่ง candidate ที่รองรับ:
source=npm:openclaw@beta,openclaw@latestหรือเวอร์ชันรีลีส OpenClaw ที่แน่นอนsource=ref: pack แบรนช์ แท็ก หรือ SHA คอมมิตเต็มของpackage_refที่เชื่อถือได้ ด้วย harnessworkflow_refที่เลือกsource=url: ดาวน์โหลด HTTPS.tgzพร้อมpackage_sha256ที่จำเป็นsource=artifact: ใช้.tgzที่อัปโหลดโดยรัน GitHub Actions อื่นซ้ำ
OpenClaw Release Checks เรียกใช้การยอมรับแพ็กเกจด้วย source=artifact, อาร์ติแฟกต์แพ็กเกจรีลีสที่เตรียมไว้, 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 การยอมรับแพ็กเกจจะเก็บการย้ายข้อมูล, การอัปเดต, การรีสตาร์ตหลังอัปเดตพร้อมการยืนยันตัวตนที่กำหนดค่าไว้, การติดตั้ง Skills จาก ClawHub แบบสด, การล้างการพึ่งพาของ Plugin ที่ล้าสมัย, ฟิกซ์เจอร์ Plugin แบบออฟไลน์, การอัปเดต Plugin และ QA แพ็กเกจ Telegram เทียบกับ tarball ที่ resolve แล้วเดียวกัน การตรวจรีลีสที่บล็อกการเผยแพร่จะใช้ baseline แพ็กเกจที่เผยแพร่ล่าสุดตามค่าเริ่มต้น; run_release_soak=true หรือ release_profile=full จะขยายเป็น baseline ที่เผยแพร่บน npm แบบเสถียรทุกตัวตั้งแต่ 2026.4.23 ถึง latest พร้อมฟิกซ์เจอร์ของปัญหาที่รายงาน ใช้การยอมรับแพ็กเกจกับ source=npm สำหรับตัวเลือกที่เผยแพร่ไปแล้ว หรือ source=ref/source=artifact สำหรับ tarball npm ภายในเครื่องที่อ้างอิงด้วย SHA ก่อนเผยแพร่ นี่คือทางเลือกแบบเนทีฟของ GitHub สำหรับความครอบคลุมส่วนใหญ่ของแพ็กเกจ/การอัปเดตที่ก่อนหน้านี้ต้องใช้ Parallels การตรวจรีลีสข้าม OS ยังมีความสำคัญสำหรับ onboarding, ตัวติดตั้ง และพฤติกรรมเฉพาะแพลตฟอร์ม แต่การตรวจสอบผลิตภัณฑ์ด้านแพ็กเกจ/การอัปเดตควรเลือกใช้การยอมรับแพ็กเกจ
เช็กลิสต์มาตรฐานสำหรับการตรวจสอบการอัปเดตและ Plugin คือ
การทดสอบการอัปเดตและ Plugin ใช้เช็กลิสต์นี้เมื่อตัดสินใจว่าเลนแบบ local, Docker, การยอมรับแพ็กเกจ หรือการตรวจรีลีสใดพิสูจน์การติดตั้ง/อัปเดต Plugin, การล้างข้อมูลด้วย doctor หรือการเปลี่ยนแปลงการย้ายข้อมูลแพ็กเกจที่เผยแพร่แล้ว การย้ายข้อมูลการอัปเดตที่เผยแพร่แล้วแบบครบถ้วนจากแพ็กเกจเสถียรทุกตัวตั้งแต่ 2026.4.23+ เป็นเวิร์กโฟลว์ Update Migration แบบแมนนวลแยกต่างหาก ไม่ใช่ส่วนหนึ่งของ Full Release CI
การผ่อนปรนเดิมของ package-acceptance ถูกจำกัดเวลาไว้โดยตั้งใจ แพ็กเกจจนถึง 2026.4.25 อาจใช้เส้นทางความเข้ากันได้สำหรับช่องว่างของเมทาดาทาที่เผยแพร่ไปยัง npm แล้ว: รายการอินเวนทอรี QA แบบส่วนตัวที่หายไปจาก tarball, ไม่มี gateway install --wrapper, ไม่มีไฟล์แพตช์ในฟิกซ์เจอร์ git ที่ได้จาก tarball, ไม่มี update.channel ที่คงอยู่, ตำแหน่งบันทึกการติดตั้ง Plugin แบบเดิม, ไม่มีการคงอยู่ของบันทึกการติดตั้งจาก marketplace และการย้ายข้อมูลเมทาดาทาคอนฟิกระหว่าง plugins update แพ็กเกจ 2026.4.26 ที่เผยแพร่แล้วอาจแจ้งเตือนสำหรับไฟล์ตราประทับเมทาดาทาของบิลด์ภายในเครื่องที่เผยแพร่ไปแล้ว แพ็กเกจหลังจากนั้นต้องเป็นไปตามสัญญาแพ็กเกจสมัยใหม่ ช่องว่างเดียวกันเหล่านั้นจะทำให้การตรวจสอบรีลีสล้มเหลว
ใช้โปรไฟล์การยอมรับแพ็กเกจที่กว้างขึ้นเมื่อคำถามด้านรีลีสเกี่ยวกับแพ็กเกจที่ติดตั้งได้จริง:
smoke: เลนติดตั้งแพ็กเกจ/ช่องทาง/เอเจนต์, เครือข่าย Gateway และโหลดคอนฟิกใหม่แบบรวดเร็วpackage: สัญญาแพ็กเกจสำหรับการติดตั้ง/อัปเดต/รีสตาร์ต/Plugin พร้อมหลักฐานการติดตั้ง Skills จาก ClawHub แบบสด; นี่คือค่าเริ่มต้นของการตรวจรีลีสproduct:packageพร้อมช่องทาง MCP, การล้าง cron/subagent, การค้นหาเว็บ OpenAI และ OpenWebUIfull: ชังก์เส้นทางรีลีส Docker พร้อม OpenWebUIcustom: รายการdocker_lanesที่แน่นอนสำหรับการเรียกซ้ำแบบเจาะจง
telegram_mode=mock-openai หรือ telegram_mode=live-frontier บนการยอมรับแพ็กเกจ เวิร์กโฟลว์จะส่ง tarball package-under-test ที่ resolve แล้วเข้าเลน Telegram; เวิร์กโฟลว์ Telegram แบบสแตนด์อโลนยังคงรับสเปก npm ที่เผยแพร่แล้วสำหรับการตรวจหลังเผยแพร่
ระบบอัตโนมัติสำหรับการเผยแพร่รีลีส
OpenClaw Release Publish เป็น entrypoint การเผยแพร่แบบเปลี่ยนแปลงสถานะตามปกติ เวิร์กโฟลว์นี้จะประสานเวิร์กโฟลว์ trusted-publisher ตามลำดับที่รีลีสต้องการ:
- เช็กเอาต์แท็กรีลีสและ resolve commit SHA ของแท็กนั้น
- ตรวจสอบว่าแท็กเข้าถึงได้จาก
mainหรือrelease/* - เรียกใช้
pnpm plugins:sync:check - Dispatch
Plugin NPM Releaseด้วยpublish_scope=all-publishableและref=<release-sha> - Dispatch
Plugin ClawHub Releaseด้วย scope และ SHA เดียวกัน - Dispatch
OpenClaw NPM Releaseด้วยแท็กรีลีส, npm dist-tag และpreflight_run_idที่บันทึกไว้
latest ต้องระบุชัดเจน:
Plugin NPM Release และ Plugin ClawHub Release เฉพาะสำหรับงานซ่อมแซมหรือเผยแพร่ซ้ำแบบเจาะจงเท่านั้น สำหรับการซ่อมแซม Plugin ที่เลือก ให้ส่ง plugin_publish_scope=selected และ plugins=@openclaw/name ไปยัง OpenClaw Release Publish หรือ dispatch เวิร์กโฟลว์ลูกโดยตรงเมื่อไม่ควรเผยแพร่แพ็กเกจ OpenClaw
อินพุตเวิร์กโฟลว์ NPM
OpenClaw NPM Release รับอินพุตที่ควบคุมโดยผู้ปฏิบัติงานเหล่านี้:
tag: แท็กรีลีสที่จำเป็น เช่นv2026.4.2,v2026.4.2-1หรือv2026.4.2-beta.1; เมื่อpreflight_only=trueอาจเป็น commit SHA แบบเต็ม 40 อักขระปัจจุบันของสาขาเวิร์กโฟลว์สำหรับ preflight แบบตรวจสอบเท่านั้นได้ด้วยpreflight_only:trueสำหรับตรวจสอบ/บิลด์/แพ็กเกจเท่านั้น,falseสำหรับเส้นทางเผยแพร่จริงpreflight_run_id: จำเป็นบนเส้นทางเผยแพร่จริง เพื่อให้เวิร์กโฟลว์ใช้ tarball ที่เตรียมไว้จากการเรียกใช้ preflight ที่สำเร็จซ้ำnpm_dist_tag: แท็กเป้าหมาย npm สำหรับเส้นทางเผยแพร่; ค่าเริ่มต้นคือbeta
OpenClaw Release Publish รับอินพุตที่ควบคุมโดยผู้ปฏิบัติงานเหล่านี้:
tag: แท็กรีลีสที่จำเป็น; ต้องมีอยู่แล้วpreflight_run_id: run id ของ preflightOpenClaw NPM Releaseที่สำเร็จ; จำเป็นเมื่อpublish_openclaw_npm=truenpm_dist_tag: แท็กเป้าหมาย npm สำหรับแพ็กเกจ OpenClawplugin_publish_scope: ค่าเริ่มต้นคือall-publishable; ใช้selectedเฉพาะสำหรับงานซ่อมแซมแบบเจาะจงplugins: ชื่อแพ็กเกจ@openclaw/*คั่นด้วยจุลภาคเมื่อplugin_publish_scope=selectedpublish_openclaw_npm: ค่าเริ่มต้นคือtrue; ตั้งเป็นfalseเฉพาะเมื่อใช้เวิร์กโฟลว์เป็นตัวประสานการซ่อมแซมเฉพาะ Pluginwait_for_clawhub: ค่าเริ่มต้นคือfalseเพื่อไม่ให้ความพร้อมใช้งานของ npm ถูกบล็อกโดย sidecar ของ ClawHub; ตั้งเป็นtrueเฉพาะเมื่อการเสร็จสิ้นของเวิร์กโฟลว์ต้องรวมการเสร็จสิ้นของ ClawHub ด้วย
OpenClaw Release Checks รับอินพุตที่ควบคุมโดยผู้ปฏิบัติงานเหล่านี้:
ref: สาขา, แท็ก หรือ commit SHA แบบเต็มที่จะตรวจสอบ การตรวจที่มี secret ต้องให้คอมมิตที่ resolve แล้วเข้าถึงได้จากสาขา OpenClaw หรือแท็กรีลีสrun_release_soak: เลือกเข้าร่วม soak แบบครบถ้วนสำหรับ live/E2E, เส้นทางรีลีส Docker และ upgrade-survivor ตั้งแต่ต้นจนปัจจุบันทั้งหมดในการตรวจรีลีสเสถียร/ค่าเริ่มต้น จะถูกบังคับเปิดโดยrelease_profile=full
- แท็กเสถียรและแท็กแก้ไขอาจเผยแพร่ไปยัง
betaหรือlatestก็ได้ - แท็ก prerelease แบบ Beta เผยแพร่ได้เฉพาะไปยัง
beta - สำหรับ
OpenClaw NPM Releaseอนุญาตให้ใช้อินพุต commit SHA แบบเต็มเฉพาะเมื่อpreflight_only=true OpenClaw Release ChecksและFull Release Validationเป็นการตรวจสอบเท่านั้นเสมอ- เส้นทางเผยแพร่จริงต้องใช้
npm_dist_tagเดียวกับที่ใช้ระหว่าง preflight; เวิร์กโฟลว์จะตรวจสอบเมทาดาทานั้นก่อนเผยแพร่ต่อ
ลำดับรีลีส npm เสถียร
เมื่อเตรียมรีลีส npm แบบเสถียร:- เรียกใช้
OpenClaw NPM Releaseด้วยpreflight_only=true- ก่อนมีแท็ก คุณอาจใช้ commit SHA แบบเต็มปัจจุบันของสาขาเวิร์กโฟลว์สำหรับการ dry run แบบตรวจสอบเท่านั้นของเวิร์กโฟลว์ preflight
- เลือก
npm_dist_tag=betaสำหรับโฟลว์ปกติแบบ beta-first หรือlatestเฉพาะเมื่อคุณตั้งใจให้เผยแพร่เสถียรโดยตรง - เรียกใช้
Full Release Validationบนสาขารีลีส, แท็กรีลีส หรือ commit SHA แบบเต็ม เมื่อคุณต้องการ CI ปกติพร้อมความครอบคลุมของ prompt cache แบบสด, Docker, QA Lab, Matrix และ Telegram จากเวิร์กโฟลว์แมนนวลเดียว - หากคุณตั้งใจต้องการเฉพาะกราฟการทดสอบปกติแบบกำหนดแน่นอน ให้เรียกใช้เวิร์กโฟลว์
CIแบบแมนนวลบน release ref แทน - บันทึก
preflight_run_idที่สำเร็จ - เรียกใช้
OpenClaw Release Publishด้วยtagเดียวกัน,npm_dist_tagเดียวกัน และpreflight_run_idที่บันทึกไว้; เวิร์กโฟลว์จะเผยแพร่ Plugin ที่แยกออกไปยัง npm และ ClawHub ก่อนเลื่อนสถานะแพ็กเกจ npm ของ OpenClaw - หากรีลีสลงที่
betaให้ใช้เวิร์กโฟลว์ส่วนตัวopenclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlเพื่อเลื่อนสถานะเวอร์ชันเสถียรนั้นจากbetaไปยังlatest - หากรีลีสตั้งใจเผยแพร่โดยตรงไปยัง
latestและbetaควรตามบิลด์เสถียรเดียวกันทันที ให้ใช้เวิร์กโฟลว์ส่วนตัวเดียวกันนั้นเพื่อชี้ dist-tag ทั้งสองไปยังเวอร์ชันเสถียร หรือให้การซิงก์ self-healing ตามกำหนดการของเวิร์กโฟลว์ย้ายbetaภายหลัง
NPM_TOKEN ขณะที่ repo สาธารณะคงการเผยแพร่แบบ OIDC-only ไว้
แนวทางนี้ทำให้ทั้งเส้นทางเผยแพร่โดยตรงและเส้นทางเลื่อนสถานะแบบ beta-first ถูกบันทึกเป็นเอกสารและผู้ปฏิบัติงานมองเห็นได้
หากผู้ดูแลต้อง fallback ไปใช้การยืนยันตัวตน npm ภายในเครื่อง ให้เรียกใช้คำสั่ง 1Password CLI (op) ใด ๆ เฉพาะภายในเซสชัน tmux เฉพาะกิจเท่านั้น อย่าเรียก op โดยตรงจากเชลล์เอเจนต์หลัก การเก็บไว้ใน tmux ทำให้พรอมป์, การแจ้งเตือน และการจัดการ OTP สังเกตได้ และป้องกันการแจ้งเตือนซ้ำจากโฮสต์
เอกสารอ้างอิงสาธารณะ
.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
openclaw/maintainers/release/README.md
สำหรับ runbook จริง