22 KiB
| read_when | summary | title | x-i18n | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
ช่องทางการเผยแพร่สาธารณะ การตั้งชื่อเวอร์ชัน และรอบการออกเวอร์ชัน | นโยบายการเผยแพร่ പുറത്തിറങ്ങി |
|
OpenClaw มีช่องทางการเผยแพร่สาธารณะ 3 ช่องทาง:
- stable: รีลีสที่ติดแท็กซึ่งเผยแพร่ไปยัง npm
betaโดยค่าเริ่มต้น หรือไปยัง npmlatestเมื่อมีการร้องขออย่างชัดเจน - beta: แท็ก prerelease ที่เผยแพร่ไปยัง npm
beta - dev: ส่วนหัวที่เคลื่อนไหวของ
main
การตั้งชื่อเวอร์ชัน
- เวอร์ชัน stable release:
YYYY.M.D- Git tag:
vYYYY.M.D
- Git tag:
- เวอร์ชัน stable correction release:
YYYY.M.D-N- Git tag:
vYYYY.M.D-N
- Git tag:
- เวอร์ชัน beta prerelease:
YYYY.M.D-beta.N- Git tag:
vYYYY.M.D-beta.N
- Git tag:
- ห้ามเติมเลขศูนย์นำหน้าเดือนหรือวัน
latestหมายถึงรีลีส stable ปัจจุบันบน npm ที่ถูกโปรโมตแล้วbetaหมายถึงเป้าหมายการติดตั้ง beta ปัจจุบัน- รีลีส stable และ stable correction จะเผยแพร่ไปยัง npm
betaโดยค่าเริ่มต้น; ผู้ปฏิบัติงานรีลีสสามารถกำหนดเป้าหมายเป็นlatestอย่างชัดเจน หรือโปรโมตบิลด์ beta ที่ผ่านการตรวจสอบแล้วในภายหลัง - ทุกรีลีส stable ของ OpenClaw จะส่งแพ็กเกจ npm และแอป macOS พร้อมกัน; โดยปกติรีลีส beta จะตรวจสอบและเผยแพร่เส้นทาง npm/package ก่อน ส่วนการ build/sign/notarize แอป mac จะสงวนไว้สำหรับ stable เว้นแต่จะมีการร้องขออย่างชัดเจน
รอบการออกเวอร์ชัน
- รีลีสจะเริ่มจาก beta ก่อน
- stable จะตามมาเมื่อ beta ล่าสุดผ่านการตรวจสอบแล้วเท่านั้น
- โดยปกติผู้ดูแลจะตัดรีลีสจากสาขา
release/YYYY.M.Dที่สร้าง จากmainปัจจุบัน เพื่อให้การตรวจสอบและการแก้ไขรีลีสไม่ขัดขวางการพัฒนาใหม่บนmain - หากมีการ push หรือ publish แท็ก beta แล้วและต้องการแก้ไข ผู้ดูแลจะตัด
แท็ก
-beta.Nถัดไปแทนการลบหรือสร้างแท็ก beta เดิมใหม่ - ขั้นตอนรีลีสแบบละเอียด การอนุมัติ ข้อมูลรับรอง และหมายเหตุการกู้คืน เป็นข้อมูลสำหรับผู้ดูแลเท่านั้น
การตรวจสอบล่วงหน้าก่อนรีลีส
- รัน
pnpm check:test-typesก่อนการตรวจสอบล่วงหน้าก่อนรีลีส เพื่อให้ TypeScript ฝั่งทดสอบยังคงถูกครอบคลุมนอกเหนือจาก gatepnpm checkในเครื่องที่เร็วกว่า - รัน
pnpm check:architectureก่อนการตรวจสอบล่วงหน้าก่อนรีลีส เพื่อให้การตรวจสอบ import cycle และขอบเขตสถาปัตยกรรมที่กว้างขึ้นเป็นสีเขียวนอกเหนือจาก local gate ที่เร็วกว่า - รัน
pnpm build && pnpm ui:buildก่อนpnpm release:checkเพื่อให้มีอาร์ติแฟกต์รีลีสdist/*และ bundle ของ Control UI ตามที่คาดไว้สำหรับขั้นตอนตรวจสอบ pack - รัน
pnpm release:checkก่อนทุก tagged release - ตอนนี้การตรวจสอบรีลีสรันใน workflow แบบ manual แยกต่างหาก:
OpenClaw Release Checks OpenClaw Release Checksยังรัน QA Lab mock parity gate พร้อม live Matrix และ Telegram QA lanes ก่อนอนุมัติรีลีส โดย live lanes ใช้ environmentqa-live-shared; Telegram ยังใช้ Convex CI credential leases- การตรวจสอบรันไทม์การติดตั้งและอัปเกรดข้ามระบบปฏิบัติการถูก dispatch จาก
private caller workflow
openclaw/releases-private/.github/workflows/openclaw-cross-os-release-checks.yml, ซึ่งเรียกใช้ reusable public workflow.github/workflows/openclaw-cross-os-release-checks-reusable.yml - การแยกนี้เป็นไปโดยตั้งใจ: เพื่อให้เส้นทาง npm release จริงสั้น เป็น deterministic และเน้นที่อาร์ติแฟกต์ ขณะที่ live checks ที่ช้ากว่ายังอยู่ใน lane ของตนเองเพื่อไม่ให้ทำให้การ publish ชะงักหรือถูกบล็อก
- release checks ต้องถูก dispatch จาก workflow ref ของ
mainหรือจาก workflow ref ของrelease/YYYY.M.Dเพื่อให้ตรรกะและ secrets ของ workflow ยังคงอยู่ภายใต้การควบคุม - workflow นั้นยอมรับได้ทั้ง existing release tag หรือ full 40-character workflow-branch commit SHA ปัจจุบัน
- ในโหมด commit-SHA จะยอมรับเฉพาะ HEAD ปัจจุบันของ workflow branch; ใช้ release tag สำหรับ release commits ที่เก่ากว่า
- การตรวจสอบล่วงหน้าแบบ validation-only ของ
OpenClaw NPM Releaseก็ยอมรับ full 40-character workflow-branch commit SHA ปัจจุบันได้เช่นกันโดยไม่ต้องมีแท็กที่ถูก push - เส้นทาง SHA นั้นใช้สำหรับ validation เท่านั้น และไม่สามารถโปรโมตไปเป็นการ publish จริงได้
- ในโหมด SHA workflow จะสังเคราะห์
v<package.json version>เฉพาะสำหรับการตรวจสอบ metadata ของแพ็กเกจ; การ publish จริงยังต้องใช้ release tag จริง - ทั้งสอง workflow ยังคงให้เส้นทาง publish และ promotion จริงอยู่บน GitHub-hosted runners ขณะที่เส้นทาง validation แบบไม่เปลี่ยนแปลงข้อมูลสามารถใช้ Blacksmith Linux runners ที่ใหญ่กว่าได้
- workflow นั้นรัน
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheโดยใช้ workflow secrets ทั้งOPENAI_API_KEYและANTHROPIC_API_KEY - การตรวจสอบล่วงหน้าของ npm release จะไม่รอ release checks lane แยกอีกต่อไป
- รัน
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(หรือแท็ก beta/correction ที่ตรงกัน) ก่อนการอนุมัติ - หลังจาก publish npm แล้ว ให้รัน
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(หรือเวอร์ชัน beta/correction ที่ตรงกัน) เพื่อตรวจสอบเส้นทางการติดตั้งจาก registry ที่เผยแพร่แล้วใน temp prefix ใหม่ - หลังจาก publish 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 ของ installed-package, การตั้งค่า Telegram และ Telegram E2E จริง กับแพ็กเกจ npm ที่เผยแพร่แล้ว โดยใช้ shared leased Telegram credential pool การรันเฉพาะกิจในเครื่องของผู้ดูแลอาจไม่ต้องใส่ Convex vars และส่ง env credentials ทั้งสามตัวOPENCLAW_QA_TELEGRAM_*โดยตรงแทน - ผู้ดูแลสามารถรันการตรวจสอบหลังเผยแพร่แบบเดียวกันจาก GitHub Actions ผ่าน
workflow แบบ manual
NPM Telegram Beta E2Eได้ โดยตั้งใจให้เป็น manual-only และไม่รันในทุก merge - ตอนนี้ระบบอัตโนมัติรีลีสของผู้ดูแลใช้รูปแบบ preflight-then-promote:
- การ publish npm จริงต้องผ่าน npm
preflight_run_idที่สำเร็จ - การ publish npm จริงต้องถูก dispatch จากสาขา
mainหรือrelease/YYYY.M.Dเดียวกันกับ successful preflight run - npm releases แบบ stable ใช้ค่าเริ่มต้นเป็น
beta - stable npm publish สามารถกำหนดเป้าหมาย
latestอย่างชัดเจนผ่าน workflow input - การแก้ไข npm dist-tag แบบใช้ token ตอนนี้อยู่ใน
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlเพื่อความปลอดภัย เพราะnpm dist-tag addยังต้องใช้NPM_TOKENขณะที่ public repo ยังคงใช้ OIDC-only publish - public
macOS Releaseใช้สำหรับ validation เท่านั้น - private mac publish จริงต้องผ่าน private mac
preflight_run_idและvalidate_run_idที่สำเร็จ - เส้นทาง publish จริงจะโปรโมตอาร์ติแฟกต์ที่เตรียมไว้แล้วแทนการ build ใหม่อีกครั้ง
- การ publish npm จริงต้องผ่าน npm
- สำหรับ stable correction releases เช่น
YYYY.M.D-Nตัวตรวจสอบหลังเผยแพร่ จะตรวจสอบเส้นทางอัปเกรด temp-prefix เดียวกันจากYYYY.M.DไปYYYY.M.D-Nด้วย เพื่อให้ release corrections ไม่ทิ้งการติดตั้ง global เก่าไว้บน payload stable พื้นฐานโดยไม่มีการแจ้งเตือน - การตรวจสอบล่วงหน้าของ npm release จะล้มเหลวแบบ fail closed เว้นแต่ tarball จะมีทั้ง
dist/control-ui/index.htmlและ payloaddist/control-ui/assets/ที่ไม่ว่าง เพื่อไม่ให้เราส่ง browser dashboard ที่ว่างเปล่าอีก - การตรวจสอบหลังเผยแพร่ยังตรวจสอบด้วยว่าการติดตั้งจาก registry ที่เผยแพร่แล้ว
มี bundled plugin runtime deps ที่ไม่ว่างภายใต้ layout ราก
dist/*รีลีสที่มี payload dependency ของ bundled plugin หายไปหรือว่างเปล่าจะไม่ผ่านตัวตรวจสอบหลังเผยแพร่ และไม่สามารถโปรโมต ไปยังlatestได้ pnpm test:install:smokeยังบังคับใช้งบประมาณunpackedSizeของ npm pack บน candidate update tarball ด้วย ดังนั้น installer e2e จะจับ pack bloat ที่เกิดขึ้นโดยไม่ตั้งใจได้ก่อนเส้นทาง publish ของรีลีส- หากงานรีลีสแตะต้อง CI planning, extension timing manifests หรือ
extension test matrices ให้ regenerate และตรวจสอบ
workflow matrix outputs
checks-node-extensionsที่ planner เป็นเจ้าของจาก.github/workflows/ci.ymlก่อนการอนุมัติ เพื่อไม่ให้ release notes อธิบาย layout CI ที่ล้าสมัย - ความพร้อมของ stable macOS release ยังรวมถึง updater surfaces:
- GitHub release ต้องลงท้ายด้วย
.zip,.dmgและ.dSYM.zipที่แพ็กแล้ว appcast.xmlบนmainต้องชี้ไปยัง stable zip ใหม่หลังการ publish- แอปที่แพ็กแล้วต้องคง bundle id ที่ไม่ใช่ debug, Sparkle feed
URL ที่ไม่ว่าง และ
CFBundleVersionที่มากกว่าหรือเท่ากับ canonical Sparkle build floor สำหรับเวอร์ชันรีลีสนั้น
- GitHub release ต้องลงท้ายด้วย
อินพุตของ NPM workflow
OpenClaw NPM Release ยอมรับอินพุตที่ผู้ปฏิบัติงานควบคุมได้ดังนี้:
tag: release tag ที่จำเป็น เช่นv2026.4.2,v2026.4.2-1หรือv2026.4.2-beta.1; เมื่อpreflight_only=trueก็อาจเป็น current full 40-character workflow-branch commit SHA สำหรับ validation-only preflight ได้preflight_only:trueสำหรับ validation/build/package เท่านั้น,falseสำหรับ เส้นทาง publish จริงpreflight_run_id: จำเป็นในเส้นทาง publish จริง เพื่อให้ workflow นำ tarball ที่เตรียมไว้กลับมาใช้จาก preflight run ที่สำเร็จnpm_dist_tag: npm target tag สำหรับเส้นทาง publish; ค่าเริ่มต้นคือbeta
OpenClaw Release Checks ยอมรับอินพุตที่ผู้ปฏิบัติงานควบคุมได้ดังนี้:
ref: existing release tag หรือ full 40-charactermaincommit SHA ปัจจุบันที่จะตรวจสอบเมื่อ dispatch จากmain; หากมาจาก release branch ให้ใช้ existing release tag หรือ full 40-character release-branch commit SHA ปัจจุบัน
กฎ:
- แท็ก stable และ correction สามารถ publish ไปยัง
betaหรือlatestก็ได้ - แท็ก beta prerelease สามารถ publish ไปยัง
betaได้เท่านั้น - สำหรับ
OpenClaw NPM Releaseอินพุต full commit SHA อนุญาตได้เฉพาะเมื่อpreflight_only=true OpenClaw Release Checksใช้สำหรับ validation เท่านั้นเสมอ และยังยอมรับ current workflow-branch commit SHA ได้ด้วย- release checks ในโหมด commit-SHA ยังต้องใช้ current workflow-branch HEAD ด้วย
- เส้นทาง publish จริงต้องใช้
npm_dist_tagเดียวกันกับที่ใช้ระหว่าง preflight; workflow จะตรวจสอบ metadata นั้นก่อนดำเนินการ publish ต่อ
ลำดับ stable npm release
เมื่อตัด stable npm release:
- รัน
OpenClaw NPM Releaseด้วยpreflight_only=true- ก่อนที่จะมีแท็ก คุณอาจใช้ full workflow-branch commit SHA ปัจจุบันสำหรับ dry run แบบ validation-only ของ preflight workflow ได้
- เลือก
npm_dist_tag=betaสำหรับ flow แบบ beta-first ปกติ หรือlatestเฉพาะ เมื่อคุณตั้งใจต้องการ direct stable publish - รัน
OpenClaw Release Checksแยกต่างหากด้วยแท็กเดียวกันหรือ full current workflow-branch commit SHA เมื่อคุณต้องการ live prompt cache, QA Lab parity, Matrix และ Telegram coverage- แยกแบบนี้โดยตั้งใจเพื่อให้ live coverage ยังใช้งานได้โดยไม่กลับไปผูก checks ที่ใช้เวลานานหรือไม่เสถียรเข้ากับ publish workflow
- บันทึก
preflight_run_idที่สำเร็จ - รัน
OpenClaw NPM Releaseอีกครั้งด้วยpreflight_only=false,tagเดิม,npm_dist_tagเดิม และpreflight_run_idที่บันทึกไว้ - หากรีลีสลงที่
betaให้ใช้ privateopenclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlworkflow เพื่อโปรโมตเวอร์ชัน stable นั้นจากbetaไปยังlatest - หากรีลีสถูก publish ตรงไปยัง
latestโดยตั้งใจ และbetaควรตาม stable build เดียวกันทันที ให้ใช้ private workflow เดิมนั้น เพื่อชี้ dist-tags ทั้งสองไปยังเวอร์ชัน stable หรือปล่อยให้ scheduled self-healing sync ของมันย้ายbetaภายหลัง
การแก้ไข dist-tag อยู่ใน private repo เพื่อความปลอดภัย เพราะยัง
ต้องใช้ NPM_TOKEN ขณะที่ public repo ยังคงใช้ OIDC-only publish
สิ่งนี้ทำให้ทั้งเส้นทาง direct publish และเส้นทาง promotion แบบ beta-first มีเอกสารกำกับและมองเห็นได้สำหรับผู้ปฏิบัติงาน
หากผู้ดูแลจำเป็นต้อง fallback ไปใช้การยืนยันตัวตน npm ในเครื่อง ให้รันคำสั่ง 1Password
CLI (op) ใด ๆ ภายใน tmux session ที่แยกเฉพาะเท่านั้น อย่าเรียก op
โดยตรงจาก main agent shell; การเก็บไว้ภายใน tmux ช่วยให้มองเห็น prompts,
alerts และการจัดการ OTP ได้ และป้องกันการแจ้งเตือนบนโฮสต์ซ้ำ ๆ
เอกสารอ้างอิงสาธารณะ
.github/workflows/openclaw-npm-release.yml.github/workflows/openclaw-release-checks.yml.github/workflows/openclaw-cross-os-release-checks-reusable.ymlscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
ผู้ดูแลใช้เอกสารรีลีสแบบ private ใน
openclaw/maintainers/release/README.md
เป็น runbook สำหรับการปฏิบัติงานจริง