Release and CI
اعتبارسنجی کامل انتشار
Full Release Validation چتر انتشار است. این تنها نقطه ورود دستی
برای اثبات پیش از انتشار است، اما بیشتر کار در گردشکارهای فرزند انجام میشود تا یک
باکس ناموفق بتواند بدون شروع دوباره کل انتشار، دوباره اجرا شود.
آن را از یک ref گردشکار مورد اعتماد، معمولا main، اجرا کنید و شاخه انتشار،
تگ، یا SHA کامل کامیت را بهعنوان ref پاس بدهید:
gh workflow run full-release-validation.yml \ --ref main \ -f ref=release/YYYY.M.D \ -f provider=openai \ -f mode=both \ -f release_profile=stableگردشکارهای فرزند از ref گردشکار مورد اعتماد برای harness و از ورودی
ref برای نامزد تحت آزمون استفاده میکنند. این کار هنگام اعتبارسنجی یک شاخه یا تگ انتشار قدیمیتر،
منطق اعتبارسنجی جدید را در دسترس نگه میدارد.
بهصورت پیشفرض، release_profile=stable مسیرهای مسدودکننده انتشار را اجرا میکند و
soak زنده/Docker جامع را رد میکند. برای اضافه کردن مسیرهای soak به اجرای stable،
run_release_soak=true را پاس بدهید. release_profile=full همیشه مسیرهای soak را فعال میکند تا
پروفایل مشورتی گسترده هرگز بیصدا پوشش را از دست ندهد.
Package Acceptance معمولا tarball نامزد را از ref resolve شده میسازد،
از جمله اجراهای SHA کامل که با pnpm ci:full-release dispatch شدهاند. پس از
انتشار بتا، برای استفاده دوباره از بسته npm منتشرشده در بررسیهای انتشار، Package Acceptance، cross-OS،
Docker مسیر انتشار، و Telegram بسته، release_package_spec=openclaw@YYYY.M.D-beta.N را پاس بدهید. از package_acceptance_package_spec
فقط زمانی استفاده کنید که Package Acceptance باید عمدا بسته متفاوتی را اثبات کند.
مرحلههای سطح بالا
| مرحله | جزئیات |
|---|---|
| Resolve کردن هدف | Job: Resolve target ref |
| گردشکار فرزند: هیچکدام | |
| اثبات میکند: شاخه انتشار، تگ، یا SHA کامل کامیت را resolve میکند و ورودیهای انتخابشده را ثبت میکند. | |
| اجرای دوباره: اگر این مورد ناموفق شد، umbrella را دوباره اجرا کنید. | |
| Vitest و CI عادی | Job: Run normal full CI |
گردشکار فرزند: CI |
|
اثبات میکند: گراف CI کامل دستی روی ref هدف، از جمله مسیرهای Linux Node، شاردهای Plugin همراه، قراردادهای کانال، سازگاری Node 22، check، check-additional، smoke ساخت، بررسیهای مستندات، Python skills، Windows، macOS، i18n رابط کاربری Control، و Android از طریق umbrella. |
|
اجرای دوباره: rerun_group=ci. |
|
| پیشانتشار Plugin | Job: Run plugin prerelease validation |
گردشکار فرزند: Plugin Prerelease |
|
اثبات میکند: بررسیهای ایستای Plugin مخصوص انتشار، پوشش Plugin عاملمحور، شاردهای دسته کامل extension، مسیرهای Docker پیشانتشار Plugin، و artifact غیرمسدودکننده plugin-inspector-advisory برای triage سازگاری. |
|
اجرای دوباره: rerun_group=plugin-prerelease. |
|
| بررسیهای انتشار | Job: Run release/live/Docker/QA validation |
گردشکار فرزند: OpenClaw Release Checks |
|
اثبات میکند: smoke نصب، بررسیهای بسته cross-OS، Package Acceptance، برابری QA Lab، Matrix زنده، و Telegram زنده. با run_release_soak=true یا release_profile=full، مجموعههای جامع زنده/E2E و chunkهای مسیر انتشار Docker را نیز اجرا میکند. |
|
اجرای دوباره: rerun_group=release-checks یا یک handle محدودتر release-checks. |
|
| artifact بسته | Job: Prepare release package artifact |
| گردشکار فرزند: هیچکدام | |
اثبات میکند: tarball والد release-package-under-test را آنقدر زود ایجاد میکند که بررسیهای روبهروی بسته که لازم نیست منتظر OpenClaw Release Checks بمانند، بتوانند از آن استفاده کنند. |
|
اجرای دوباره: umbrella را دوباره اجرا کنید یا برای اجرای دوباره بسته منتشرشده، release_package_spec را ارائه دهید. |
|
| Telegram بسته | Job: Run package Telegram E2E |
گردشکار فرزند: NPM Telegram Beta E2E |
|
اثبات میکند: اثبات بسته Telegram مبتنی بر artifact والد برای rerun_group=all با release_profile=full، یا اثبات Telegram بسته منتشرشده هنگامی که release_package_spec یا npm_telegram_package_spec تنظیم شده باشد. |
|
اجرای دوباره: rerun_group=npm-telegram با release_package_spec یا npm_telegram_package_spec. |
|
| تاییدکننده umbrella | Job: Verify full validation |
| گردشکار فرزند: هیچکدام | |
| اثبات میکند: نتیجههای ثبتشده اجرای فرزند را دوباره بررسی میکند و جدولهای کندترین jobها را از گردشکارهای فرزند اضافه میکند. | |
| اجرای دوباره: پس از سبز شدن اجرای دوباره یک فرزند ناموفق، فقط همین job را دوباره اجرا کنید. |
برای ref=main و rerun_group=all، یک umbrella جدیدتر جایگزین نمونه قدیمیتر میشود.
وقتی والد لغو شود، مانیتور آن هر گردشکار فرزندی را که قبلا dispatch کرده باشد
لغو میکند. اجراهای اعتبارسنجی شاخه انتشار و تگ، بهصورت پیشفرض یکدیگر را
لغو نمیکنند.
مرحلههای بررسی انتشار
OpenClaw Release Checks بزرگترین گردشکار فرزند است. هدف را یکبار resolve میکند
و وقتی مرحلههای روبهروی بسته یا Docker به آن نیاز داشته باشند، یک artifact مشترک
release-package-under-test آماده میکند.
| مرحله | جزئیات |
|---|---|
| هدف انتشار | کار: Resolve target ref |
| گردش کار پشتیبان: هیچکدام | |
| آزمایشها: ارجاع انتخابشده، SHA مورد انتظار اختیاری، پروفایل، گروه اجرای مجدد، و فیلتر مجموعه زنده متمرکز. | |
اجرای مجدد: rerun_group=release-checks. |
|
| مصنوع بسته | کار: Prepare release package artifact |
| گردش کار پشتیبان: هیچکدام | |
آزمایشها: یک tarball نامزد را بستهبندی یا resolve میکند و release-package-under-test را برای بررسیهای پاییندستی مرتبط با بسته آپلود میکند. |
|
| اجرای مجدد: بسته آسیبدیده، گروه بینسیستمی، یا گروه زنده/E2E. | |
| دودسنجی نصب | کار: Run install smoke |
گردش کار پشتیبان: Install Smoke |
|
| آزمایشها: مسیر نصب کامل با استفاده مجدد از تصویر دودسنجی Dockerfile ریشه، نصب بسته QR، دودسنجیهای Docker ریشه و Gateway، آزمایشهای Docker نصبکننده، دودسنجی ارائهدهنده تصویر نصب سراسری Bun، و E2E سریع نصب/حذف نصب Pluginهای همراه. | |
اجرای مجدد: rerun_group=install-smoke. |
|
| بینسیستمی | کار: cross_os_release_checks |
گردش کار پشتیبان: OpenClaw Cross-OS Release Checks (Reusable) |
|
| آزمایشها: مسیرهای تازه و ارتقا روی Linux، Windows و macOS برای ارائهدهنده و حالت انتخابشده، با استفاده از tarball نامزد بههمراه یک بسته مبنا. | |
اجرای مجدد: rerun_group=cross-os. |
|
| E2E مخزن و زنده | کار: Run repo/live E2E validation |
گردش کار پشتیبان: OpenClaw Live And E2E Checks (Reusable) |
|
آزمایشها: E2E مخزن، کش زنده، استریم websocket OpenAI، shardهای ارائهدهنده زنده بومی و Plugin، و harnessهای مدل/backend/gateway زنده با پشتیبانی Docker که توسط release_profile انتخاب میشوند. |
|
اجراها: run_release_soak=true، release_profile=full، یا rerun_group=live-e2e متمرکز. |
|
اجرای مجدد: rerun_group=live-e2e، بهصورت اختیاری با live_suite_filter. |
|
| مسیر انتشار Docker | کار: Run Docker release-path validation |
گردش کار پشتیبان: OpenClaw Live And E2E Checks (Reusable) |
|
| آزمایشها: قطعههای Docker مسیر انتشار در برابر مصنوع بسته مشترک. | |
اجراها: run_release_soak=true، release_profile=full، یا rerun_group=live-e2e متمرکز. |
|
اجرای مجدد: rerun_group=live-e2e. |
|
| پذیرش بسته | کار: Run package acceptance |
گردش کار پشتیبان: Package Acceptance |
|
آزمایشها: fixtureهای بسته Plugin آفلاین، بهروزرسانی Plugin، پذیرش بسته Telegram با mock-OpenAI، و بررسیهای بازمانده ارتقای منتشرشده در برابر همان tarball. بررسیهای انتشار مسدودکننده از مبنای پیشفرض آخرین نسخه منتشرشده استفاده میکنند؛ بررسیهای soak به هر انتشار پایدار npm در 2026.4.23 یا پس از آن بهعلاوه fixtureهای مسئله گزارششده گسترش مییابند. |
|
اجرای مجدد: rerun_group=package. |
|
| همارزی QA | کار: Run QA Lab parity lane و Run QA Lab parity report |
| گردش کار پشتیبان: کارهای مستقیم | |
| آزمایشها: بستههای همارزی عاملی نامزد و مبنا، سپس گزارش همارزی. | |
اجرای مجدد: rerun_group=qa-parity یا rerun_group=qa. |
|
| ماتریس زنده QA | کار: Run QA Lab live Matrix lane |
| گردش کار پشتیبان: کار مستقیم | |
آزمایشها: پروفایل QA ماتریس زنده سریع در محیط qa-live-shared. |
|
اجرای مجدد: rerun_group=qa-live یا rerun_group=qa. |
|
| Telegram زنده QA | کار: Run QA Lab live Telegram lane |
| گردش کار پشتیبان: کار مستقیم | |
| آزمایشها: QA زنده Telegram با اجارههای اعتبارنامه Convex CI. | |
اجرای مجدد: rerun_group=qa-live یا rerun_group=qa. |
|
| تاییدکننده انتشار | کار: Verify release checks |
| گردش کار پشتیبان: هیچکدام | |
| آزمایشها: کارهای الزامی بررسی انتشار برای گروه اجرای مجدد انتخابشده. | |
| اجرای مجدد: پس از گذر کارهای فرزند متمرکز، دوباره اجرا کنید. |
قطعههای مسیر انتشار Docker
مرحله مسیر انتشار Docker این قطعهها را زمانی اجرا میکند که live_suite_filter
خالی باشد:
| قطعه | پوشش |
|---|---|
core |
مسیرهای دودسنجی مسیر انتشار Docker هسته. |
package-update-openai |
رفتار نصب/بهروزرسانی بسته OpenAI، نصب درخواستی Codex، و فراخوانیهای ابزار Chat Completions. |
package-update-anthropic |
رفتار نصب و بهروزرسانی بسته Anthropic. |
package-update-core |
رفتار بسته و بهروزرسانی مستقل از ارائهدهنده. |
plugins-runtime-plugins |
مسیرهای runtime Plugin که رفتار Plugin را تمرین میدهند. |
plugins-runtime-services |
مسیرهای runtime Plugin متکی به سرویس و زنده؛ هنگام درخواست شامل OpenWebUI میشود. |
plugins-runtime-install-a تا plugins-runtime-install-h |
دستههای نصب/runtime Plugin که برای اعتبارسنجی موازی انتشار تقسیم شدهاند. |
وقتی فقط یک مسیر Docker شکست خورده است، از docker_lanes=<lane[,lane]> هدفمند
روی گردش کار زنده/E2E قابل استفاده مجدد استفاده کنید. مصنوعهای انتشار شامل فرمانهای اجرای مجدد
بهازای هر مسیر با ورودیهای مصنوع بسته و استفاده مجدد از تصویر هستند، در صورت موجود بودن.
پروفایلهای انتشار
release_profile عمدتا گستره زنده/ارائهدهنده را داخل بررسیهای انتشار کنترل میکند.
این گزینه CI کامل عادی، پیشانتشار Plugin، دودسنجی نصب، پذیرش بسته،
یا QA Lab را حذف نمیکند. برای stable، E2E جامع مخزن/زنده و قطعههای
مسیر انتشار Docker پوشش soak هستند و زمانی اجرا میشوند که run_release_soak=true.
full پوشش soak را فعال میکند و همچنین باعث میشود اجرای چتری، E2E بسته Telegram
را در برابر مصنوع بسته انتشار والد اجرا کند، وقتی rerun_group=all باشد؛ بنابراین یک نامزد کامل
پیش از انتشار بیصدا آن مسیر بسته Telegram را رد نمیکند.
| پروفایل | کاربرد مورد نظر | پوشش زنده/ارائهدهنده شاملشده |
|---|---|---|
minimum |
سریعترین دودسنجی حیاتی برای انتشار. | مسیر زنده OpenAI/core، مدلهای زنده Docker برای OpenAI، هسته Gateway بومی، پروفایل Gateway بومی OpenAI، Plugin بومی OpenAI، و Gateway زنده Docker OpenAI. |
stable |
پروفایل پیشفرض تایید انتشار. | minimum بهعلاوه دودسنجی Anthropic، Google، MiniMax، backend، harness آزمایش زنده بومی، backend زنده CLI در Docker، اتصال Docker ACP، harness Docker Codex، و یک shard دودسنجی OpenCode Go. |
full |
جاروب مشورتی گسترده. | stable بهعلاوه ارائهدهندگان مشورتی، shardهای زنده Plugin، و shardهای زنده رسانه. |
افزودههای فقط کامل
این مجموعهها توسط stable رد میشوند و توسط full شامل میشوند:
| حوزه | پوشش فقط کامل |
|---|---|
| مدلهای زنده Docker | OpenCode Go، OpenRouter، xAI، Z.ai، و Fireworks. |
| Gateway زنده Docker | ارائهدهندگان مشورتی تقسیمشده به shardهای DeepSeek/Fireworks، OpenCode Go/OpenRouter، و xAI/Z.ai. |
| پروفایلهای ارائهدهنده Gateway بومی | shardهای کامل Anthropic Opus و Sonnet/Haiku، Fireworks، DeepSeek، shardهای کامل مدل OpenCode Go، OpenRouter، xAI، و Z.ai. |
| shardهای زنده Plugin بومی | Pluginهای A-K، L-N، O-Z دیگر، Moonshot، و xAI. |
| shardهای زنده رسانه بومی | گروههای صدا، موسیقی Google، موسیقی MiniMax، و ویدئو A-D. |
stable شامل native-live-src-gateway-profiles-anthropic-smoke و
native-live-src-gateway-profiles-opencode-go-smoke است؛ full بهجای آن از shardهای
گستردهتر مدل Anthropic و OpenCode Go استفاده میکند. اجراهای مجدد متمرکز همچنان میتوانند از
دستههای تجمیعی native-live-src-gateway-profiles-anthropic یا
native-live-src-gateway-profiles-opencode-go استفاده کنند.
اجراهای مجدد متمرکز
برای پرهیز از تکرار جعبههای انتشار نامرتبط، از rerun_group استفاده کنید:
| شناسه | دامنه |
|---|---|
all |
همهٔ مراحل اعتبارسنجی کامل انتشار. |
ci |
فقط فرزند CI کامل دستی. |
plugin-prerelease |
فقط فرزند پیشانتشار Plugin. |
release-checks |
همهٔ مراحل بررسیهای انتشار OpenClaw. |
install-smoke |
آزمون دود نصب تا بررسیهای انتشار. |
cross-os |
بررسیهای انتشار میانسیستمعاملی. |
live-e2e |
اعتبارسنجی E2E مخزن/زنده و مسیر انتشار Docker. |
package |
پذیرش بسته. |
qa |
همارزی QA بههمراه مسیرهای زندهٔ QA. |
qa-parity |
فقط مسیرهای همارزی QA و گزارش. |
qa-live |
فقط Matrix زندهٔ QA و Telegram. |
npm-telegram |
E2E Telegram برای بستهٔ منتشرشده؛ به release_package_spec یا npm_telegram_package_spec نیاز دارد. |
وقتی یک مجموعهٔ زنده شکست خورده است، از live_suite_filter همراه با rerun_group=live-e2e استفاده کنید.
شناسههای معتبر فیلتر در گردشکار زنده/E2E قابلاستفادهٔ مجدد تعریف شدهاند، از جمله
docker-live-models، live-gateway-docker،
live-gateway-anthropic-docker، live-gateway-google-docker،
live-gateway-minimax-docker، live-gateway-advisory-docker،
live-cli-backend-docker، live-acp-bind-docker و
live-codex-harness-docker.
شناسهٔ live-gateway-advisory-docker یک شناسهٔ اجرای دوبارهٔ تجمیعی برای سه
شارد ارائهدهندهٔ خود است، بنابراین همچنان به همهٔ کارهای مشورتی Gateway در Docker منشعب میشود.
وقتی یک مسیر میانسیستمعاملی شکست خورده است، از cross_os_suite_filter همراه با rerun_group=cross-os استفاده کنید. این فیلتر یک شناسهٔ سیستمعامل، یک شناسهٔ مجموعه، یا یک جفت سیستمعامل/مجموعه را میپذیرد؛
برای مثال windows/packaged-upgrade، windows یا packaged-fresh. خلاصههای میانسیستمعاملی
زمانبندیهای هر فاز را برای مسیرهای ارتقای بستهبندیشده شامل میشوند، و فرمانهای طولانیمدت
خطوط Heartbeat را چاپ میکنند تا یک بهروزرسانی گیرکردهٔ Windows پیش از پایان مهلت کار قابل مشاهده باشد.
مسیرهای بررسی انتشار QA مشورتی هستند. شکست فقط مربوط به QA بهصورت هشدار گزارش میشود
و تأییدکنندهٔ بررسی انتشار را مسدود نمیکند؛ وقتی به شواهد تازهٔ QA نیاز دارید،
rerun_group=qa، qa-parity یا qa-live را دوباره اجرا کنید.
شواهدی که باید نگه دارید
خلاصهٔ اعتبارسنجی کامل انتشار را بهعنوان نمایهٔ سطح انتشار نگه دارید. این خلاصه به
شناسههای اجرای فرزند پیوند میدهد و جدولهای کندترین کارها را شامل میشود. برای شکستها، ابتدا
گردشکار فرزند را بررسی کنید، سپس کوچکترین شناسهٔ مطابق بالا را دوباره اجرا کنید.
مصنوعات مفید:
release-package-under-testاز والد اعتبارسنجی کامل انتشار وبررسیهای انتشار OpenClaw- مصنوعات مسیر انتشار Docker زیر
.artifacts/docker-tests/ package-under-testپذیرش بسته و مصنوعات پذیرش Docker- مصنوعات بررسی انتشار میانسیستمعاملی برای هر سیستمعامل و مجموعه
- مصنوعات همارزی QA، Matrix و Telegram
فایلهای گردشکار
.github/workflows/full-release-validation.yml.github/workflows/openclaw-release-checks.yml.github/workflows/openclaw-live-and-e2e-checks-reusable.yml.github/workflows/plugin-prerelease.yml.github/workflows/install-smoke.yml.github/workflows/openclaw-cross-os-release-checks-reusable.yml.github/workflows/package-acceptance.yml