سياسة الإصدار
لدى OpenClaw ثلاث مسارات إصدار عامة:- stable: إصدارات موسومة تُنشَر إلى npm
betaافتراضيًا، أو إلى npmlatestعند الطلب الصريح - beta: وسوم إصدارات تمهيدية تُنشَر إلى npm
beta - dev: الرأس المتحرك لفرع
main
تسمية الإصدارات
- إصدار الإصدار المستقر:
YYYY.M.D- وسم Git:
vYYYY.M.D
- وسم Git:
- إصدار التصحيح للإصدار المستقر:
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 المستقر المُرقّى الحاليbetaيعني هدف تثبيت beta الحالي- تُنشَر الإصدارات المستقرة وتصحيحات الإصدارات المستقرة إلى npm
betaافتراضيًا؛ ويمكن لمشغّلي الإصدار استهدافlatestصراحةً، أو ترقية بنية beta تم التحقق منها لاحقًا - كل إصدار من OpenClaw يشحن حزمة npm وتطبيق macOS معًا
وتيرة الإصدار
- تبدأ الإصدارات عبر beta أولًا
- لا يأتي الإصدار المستقر إلا بعد التحقق من أحدث إصدار beta
- إن إجراءات الإصدار التفصيلية، والموافقات، وبيانات الاعتماد، وملاحظات الاسترداد مخصّصة للمشرفين فقط
الفحوصات التمهيدية للإصدار
- شغّل
pnpm build && pnpm ui:buildقبلpnpm release:checkحتى تكون عناصر الإصدار المتوقعةdist/*وحزمة Control UI موجودة من أجل خطوة التحقق من الحزمة - شغّل
pnpm release:checkقبل كل إصدار موسوم - تعمل فحوصات الإصدار الآن ضمن سير عمل يدوي منفصل:
OpenClaw Release Checks - يتم إرسال التحقق من التثبيت والترقية عبر الأنظمة المختلفة وقت التشغيل من
سير العمل الخاص المستدعي
openclaw/releases-private/.github/workflows/openclaw-cross-os-release-checks.yml, الذي يستدعي سير العمل العام القابل لإعادة الاستخدام.github/workflows/openclaw-cross-os-release-checks-reusable.yml - هذا الفصل مقصود: للحفاظ على مسار إصدار npm الفعلي قصيرًا، وحتميًا، ومركّزًا على العناصر، بينما تبقى الفحوصات الحية الأبطأ في مسارها الخاص حتى لا تؤخر أو تمنع النشر
- يجب إرسال فحوصات الإصدار من مرجع سير عمل
mainحتى تبقى منطقية سير العمل والأسرار معتمدة وقياسية - يقبل سير العمل هذا إما وسم إصدار موجودًا أو قيمة SHA كاملة من 40 حرفًا
لالتزام
mainالحالي - في وضع SHA الخاص بالالتزام، لا يقبل إلا HEAD الحالي لـ
origin/main؛ استخدم وسم إصدار لالتزامات الإصدار الأقدم - إن الفحص التمهيدي للتحقق فقط في
OpenClaw NPM Releaseيقبل أيضًا قيمة SHA كاملة من 40 حرفًا لالتزامmainالحالي دون الحاجة إلى وسم مدفوع - هذا المسار الخاص بـ SHA مخصّص للتحقق فقط ولا يمكن ترقيته إلى نشر فعلي
- في وضع SHA، ينشئ سير العمل
v<package.json version>فقط من أجل فحص بيانات الحزمة؛ أما النشر الفعلي فما زال يتطلب وسم إصدار حقيقي - يحافظ كلا سيرَي العمل على مسار النشر والترقية الفعليين على GitHub-hosted runners، بينما يمكن لمسار التحقق غير المعدِّل استخدام مشغلات Blacksmith Linux الأكبر
- يشغّل سير العمل هذا
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheباستخدام سريَّي سير العملOPENAI_API_KEYوANTHROPIC_API_KEY - لم يعد الفحص التمهيدي لإصدار npm ينتظر مسار فحوصات الإصدار المنفصل
- شغّل
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(أو وسم beta/التصحيح المطابق) قبل الموافقة - بعد نشر npm، شغّل
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(أو إصدار beta/التصحيح المطابق) للتحقق من مسار التثبيت من السجل المنشور في بادئة مؤقتة جديدة - تستخدم أتمتة الإصدار الخاصة بالمشرفين الآن أسلوب الفحص التمهيدي ثم الترقية:
- يجب أن يجتاز نشر npm الفعلي قيمة
preflight_run_idناجحة لـ npm - تُوجَّه إصدارات npm المستقرة إلى
betaافتراضيًا - يمكن لنشر npm المستقر استهداف
latestصراحةً عبر مدخلات سير العمل - أصبحت عملية تغيير npm dist-tag المعتمدة على الرمز المميز موجودة الآن في
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlلأسباب أمنية، لأنnpm dist-tag addلا يزال يحتاج إلىNPM_TOKENبينما يحتفظ المستودع العام بنشر يعتمد على OIDC فقط - إن
macOS Releaseالعام مخصّص للتحقق فقط - يجب أن يجتاز النشر الخاص الفعلي لـ mac قيمة mac خاصة ناجحة لكل من
preflight_run_idوvalidate_run_id - تقوم مسارات النشر الفعلية بترقية العناصر المُحضّرة بدلًا من إعادة بنائها مرة أخرى
- يجب أن يجتاز نشر npm الفعلي قيمة
- بالنسبة إلى إصدارات التصحيح المستقرة مثل
YYYY.M.D-N، يتحقق فاحص ما بعد النشر أيضًا من مسار الترقية نفسه في البادئة المؤقتة منYYYY.M.DإلىYYYY.M.D-Nحتى لا تترك تصحيحات الإصدار تثبيتات global الأقدم بصمت على الحمولة الأساسية للإصدار المستقر - يفشل الفحص التمهيدي لإصدار npm بشكل مغلق ما لم تتضمن الحزمة المضغوطة كِلا
dist/control-ui/index.htmlوحمولة غير فارغة لـdist/control-ui/assets/حتى لا نشحن لوحة تحكم متصفح فارغة مرة أخرى - يفرض
pnpm test:install:smokeأيضًا ميزانيةunpackedSizeالخاصة بحزمة npm على الحزمة المضغوطة المرشحة للتحديث، بحيث تلتقط اختبارات المُثبّت الشاملة التضخم العرضي في الحزمة قبل مسار نشر الإصدار - إذا لمس عمل الإصدار تخطيط CI أو ملفات توقيت الإضافات أو
مصفوفات اختبارات الإضافات، فأعد توليد وراجع مخرجات مصفوفة سير العمل
checks-node-extensionsالمملوكة للمخطط من.github/workflows/ci.ymlقبل الموافقة حتى لا تصف ملاحظات الإصدار بنية CI قديمة - يتضمن جاهزية إصدار macOS المستقر أيضًا أسطح التحديث:
- يجب أن ينتهي إصدار GitHub مع الحزم
.zipو.dmgو.dSYM.zip - يجب أن يشير
appcast.xmlعلىmainإلى ملف zip المستقر الجديد بعد النشر - يجب أن يحتفظ التطبيق المعبأ بمعرّف حزمة غير خاص بالتصحيح، وعنوان URL غير فارغ
لخلاصة Sparkle، وقيمة
CFBundleVersionتساوي أو تتجاوز الحد الأدنى المعتمد لبناء Sparkle لذلك الإصدار
- يجب أن ينتهي إصدار GitHub مع الحزم
مدخلات سير عمل NPM
يقبلOpenClaw NPM Release مدخلات يتحكم بها المشغّل التالية:
tag: وسم إصدار مطلوب مثلv2026.4.2أوv2026.4.2-1أوv2026.4.2-beta.1; وعندما يكونpreflight_only=true، يمكن أن يكون أيضًا قيمة SHA كاملة من 40 حرفًا لالتزامmainالحالي للتحقق التمهيدي فقطpreflight_only:trueللتحقق/البناء/الحزمة فقط، وfalseلمسار النشر الفعليpreflight_run_id: مطلوب في مسار النشر الفعلي حتى يعيد سير العمل استخدام الحزمة المضغوطة المُحضّرة من تشغيل الفحص التمهيدي الناجحnpm_dist_tag: وسم npm الهدف لمسار النشر؛ والقيمة الافتراضية هيbeta
OpenClaw Release Checks مدخلات يتحكم بها المشغّل التالية:
ref: وسم إصدار موجود أو قيمة SHA كاملة من 40 حرفًا لالتزامmainالحالي من أجل التحقق
- يمكن لوسوم stable وcorrection النشر إلى
betaأوlatest - يمكن لوسوم beta التمهيدية النشر إلى
betaفقط - يُسمح بإدخال SHA الكامل للالتزام فقط عندما يكون
preflight_only=true - يتطلب وضع SHA الخاص بالالتزام في فحوصات الإصدار أيضًا HEAD الحالي لـ
origin/main - يجب أن يستخدم مسار النشر الفعلي نفس
npm_dist_tagالمستخدم أثناء الفحص التمهيدي؛ ويتحقق سير العمل من تلك البيانات الوصفية قبل متابعة النشر
تسلسل إصدار npm المستقر
عند إصدار نسخة npm مستقرة:- شغّل
OpenClaw NPM Releaseمعpreflight_only=true- قبل وجود وسم، يمكنك استخدام قيمة SHA الكاملة الحالية لفرع
mainلإجراء تشغيل تجريبي للتحقق فقط من سير عمل الفحص التمهيدي
- قبل وجود وسم، يمكنك استخدام قيمة SHA الكاملة الحالية لفرع
- اختر
npm_dist_tag=betaللتدفق المعتاد الذي يبدأ عبر beta، أوlatestفقط عندما تريد عمدًا نشر إصدار مستقر مباشر - شغّل
OpenClaw Release Checksبشكل منفصل باستخدام الوسم نفسه أو قيمة SHA الكاملة الحالية لفرعmainعندما تريد تغطية حية لذاكرة التخزين المؤقت للمطالبات- هذا الفصل مقصود حتى يبقى التغطية الحية متاحة دون إعادة ربط الفحوصات الطويلة أو غير المستقرة بسير عمل النشر
- احفظ قيمة
preflight_run_idالناجحة - شغّل
OpenClaw NPM Releaseمرة أخرى معpreflight_only=false، ونفسtag، ونفسnpm_dist_tag، وقيمةpreflight_run_idالمحفوظة - إذا نزل الإصدار إلى
beta، فاستخدم سير العمل الخاصopenclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlلترقية ذلك الإصدار المستقر منbetaإلىlatest - إذا نُشر الإصدار عمدًا مباشرة إلى
latestوكان ينبغي أن يتبعهbetaبالبنية المستقرة نفسها فورًا، فاستخدم سير العمل الخاص نفسه لتوجيه كلا dist-tags إلى الإصدار المستقر، أو اترك مزامنة الإصلاح الذاتي المجدولة تنقلbetaلاحقًا
NPM_TOKEN، بينما يحتفظ المستودع العام بنشر يعتمد على OIDC فقط.
وهذا يُبقي كلاً من مسار النشر المباشر ومسار الترقية الذي يبدأ عبر beta
موثّقين ومرئيين للمشغّل.
المراجع العامة
.github/workflows/openclaw-npm-release.yml.github/workflows/openclaw-release-checks.yml.github/workflows/openclaw-cross-os-release-checks-reusable.ymlscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
openclaw/maintainers/release/README.md
لدليل التشغيل الفعلي.