Release and CI
اعتبارسنجی کامل انتشار
Full Release Validation چتر انتشار است. این تنها نقطه ورود دستی برای اثبات پیش از انتشار است، اما بیشتر کارها در گردشکارهای فرزند انجام میشود تا یک محیط ناموفق بتواند بدون شروع دوباره کل انتشار، دوباره اجرا شود.
آن را از یک ارجاع گردشکار مورد اعتماد، معمولاً main، اجرا کنید و شاخه انتشار، برچسب، یا SHA کامل commit را بهعنوان 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 برای نامزد تحت آزمون استفاده میکنند. این کار باعث میشود هنگام اعتبارسنجی یک شاخه یا برچسب انتشار قدیمیتر، منطق اعتبارسنجی جدید در دسترس بماند.
بهطور پیشفرض، release_profile=stable مسیرهای مسدودکننده انتشار را اجرا میکند و soak کامل زنده/Docker را رد میکند. برای گنجاندن مسیرهای soak در یک اجرای پایدار، run_release_soak=true را ارسال کنید. release_profile=full همیشه مسیرهای soak را فعال میکند تا نمایه مشورتی گسترده هرگز پوشش را بیصدا از دست ندهد.
Package Acceptance معمولاً tarball نامزد را از ref حلشده میسازد، از جمله اجراهای SHA کامل که با pnpm ci:full-release dispatch شدهاند. پس از انتشار، [email protected] (یا openclaw@beta/openclaw@latest) را ارسال کنید تا همان ماتریس package/update بهجای آن روی package منتشرشده npm اجرا شود.
مرحلههای سطح بالا
| مرحله | جزئیات |
|---|---|
| حل هدف | کار: Resolve target ref |
| گردشکار فرزند: هیچکدام | |
| اثبات میکند: شاخه انتشار، برچسب، یا SHA کامل commit را حل میکند و ورودیهای انتخابشده را ثبت میکند. | |
| اجرای دوباره: اگر این مورد ناموفق شد، چتر را دوباره اجرا کنید. | |
| Vitest و CI عادی | کار: Run normal full CI |
گردشکار فرزند: CI |
|
اثبات میکند: گراف CI کامل دستی را روی ارجاع هدف اجرا میکند، شامل مسیرهای Linux Node، shardهای Plugin همراه، قراردادهای کانال، سازگاری Node 22، check، check-additional، smoke ساخت، بررسیهای مستندات، Python skills، Windows، macOS، i18n Control UI، و Android از طریق چتر. |
|
اجرای دوباره: rerun_group=ci. |
|
| پیشانتشار Plugin | کار: Run plugin prerelease validation |
گردشکار فرزند: Plugin Prerelease |
|
| اثبات میکند: بررسیهای ایستای فقط انتشار برای Plugin، پوشش Plugin عاملی، shardهای دسته کامل extension، و مسیرهای Docker پیشانتشار Plugin. | |
اجرای دوباره: rerun_group=plugin-prerelease. |
|
| بررسیهای انتشار | کار: Run release/live/Docker/QA validation |
گردشکار فرزند: OpenClaw Release Checks |
|
اثبات میکند: smoke نصب، بررسیهای package میانسیستمی، Package Acceptance، همارزی QA Lab، Matrix زنده، و Telegram زنده. با run_release_soak=true یا release_profile=full، مجموعههای کامل زنده/E2E و قطعههای مسیر انتشار Docker را نیز اجرا میکند. |
|
اجرای دوباره: rerun_group=release-checks یا یک handle محدودتر release-checks. |
|
| artifact مربوط به package | کار: Prepare release package artifact |
| گردشکار فرزند: هیچکدام | |
اثبات میکند: tarball والد release-package-under-test را آنقدر زود ایجاد میکند که بررسیهای روبهpackage که نیاز ندارند منتظر OpenClaw Release Checks بمانند، بتوانند از آن استفاده کنند. |
|
اجرای دوباره: چتر را دوباره اجرا کنید یا برای rerun_group=npm-telegram مقدار npm_telegram_package_spec را ارائه دهید. |
|
| Package Telegram | کار: Run package Telegram E2E |
گردشکار فرزند: NPM Telegram Beta E2E |
|
اثبات میکند: اثبات package Telegram مبتنی بر artifact والد برای rerun_group=all با release_profile=full، یا اثبات Telegram برای package منتشرشده وقتی npm_telegram_package_spec تنظیم شده باشد. |
|
اجرای دوباره: rerun_group=npm-telegram با npm_telegram_package_spec. |
|
| تأییدکننده چتر | کار: Verify full validation |
| گردشکار فرزند: هیچکدام | |
| اثبات میکند: نتیجههای ثبتشده اجرای فرزند را دوباره بررسی میکند و جدولهای کندترین کارها را از گردشکارهای فرزند اضافه میکند. | |
| اجرای دوباره: پس از اینکه یک فرزند ناموفق را دوباره اجرا کردید تا سبز شود، فقط همین کار را دوباره اجرا کنید. |
برای ref=main و rerun_group=all، یک چتر جدیدتر جایگزین چتر قدیمیتر میشود.
وقتی والد لغو میشود، پایشگر آن هر گردشکار فرزندی را که قبلاً dispatch کرده است لغو میکند. اجراهای اعتبارسنجی شاخه انتشار و برچسب بهطور پیشفرض یکدیگر را لغو نمیکنند.
مرحلههای بررسی انتشار
OpenClaw Release Checks بزرگترین گردشکار فرزند است. هدف را یکبار حل میکند و هنگامی که مرحلههای روبهpackage یا روبهDocker به آن نیاز دارند، یک artifact مشترک release-package-under-test آماده میکند.
| مرحله | جزئیات |
|---|---|
| هدف انتشار | Job: Resolve target ref |
| گردشکار پشتیبان: ندارد | |
| آزمونها: ref انتخابشده، SHA مورد انتظار اختیاری، نمایه، گروه اجرای دوباره، و فیلتر متمرکز مجموعه live. | |
اجرای دوباره: rerun_group=release-checks. |
|
| مصنوعه بسته | Job: Prepare release package artifact |
| گردشکار پشتیبان: ندارد | |
آزمونها: یک tarball نامزد را بستهبندی یا حل میکند و release-package-under-test را برای بررسیهای پاییندستیِ مرتبط با بسته بارگذاری میکند. |
|
| اجرای دوباره: گروه بسته، cross-OS، یا live/E2E متأثر. | |
| smoke نصب | Job: Run install smoke |
گردشکار پشتیبان: Install Smoke |
|
| آزمونها: مسیر کامل نصب با استفاده مجدد از تصویر smoke در Dockerfile ریشه، نصب بسته QR، smokeهای Docker ریشه و Gateway، آزمونهای Docker نصبکننده، smoke نصب سراسری Bun برای image-provider، و E2E سریع نصب/حذف Pluginهای همراه. | |
اجرای دوباره: rerun_group=install-smoke. |
|
| Cross-OS | Job: cross_os_release_checks |
گردشکار پشتیبان: OpenClaw Cross-OS Release Checks (Reusable) |
|
| آزمونها: مسیرهای تازه و ارتقا روی Linux، Windows، و macOS برای provider و حالت انتخابشده، با استفاده از tarball نامزد بههمراه یک بسته مبنا. | |
اجرای دوباره: rerun_group=cross-os. |
|
| E2E مخزن و live | Job: Run repo/live E2E validation |
گردشکار پشتیبان: OpenClaw Live And E2E Checks (Reusable) |
|
آزمونها: E2E مخزن، کش live، استریم websocket OpenAI، provider live بومی و shardهای Plugin، و harnessهای live مبتنی بر Docker برای model/backend/gateway که با release_profile انتخاب میشوند. |
|
اجراها: run_release_soak=true، release_profile=full، یا rerun_group=live-e2e متمرکز. |
|
اجرای دوباره: rerun_group=live-e2e، بهصورت اختیاری با live_suite_filter. |
|
| مسیر انتشار Docker | Job: Run Docker release-path validation |
گردشکار پشتیبان: OpenClaw Live And E2E Checks (Reusable) |
|
| آزمونها: chunkهای Docker مسیر انتشار در برابر مصنوعه بسته مشترک. | |
اجراها: run_release_soak=true، release_profile=full، یا rerun_group=live-e2e متمرکز. |
|
اجرای دوباره: rerun_group=live-e2e. |
|
| پذیرش بسته | Job: Run package acceptance |
گردشکار پشتیبان: Package Acceptance |
|
آزمونها: fixtureهای آفلاین بسته Plugin، بهروزرسانی Plugin، پذیرش بسته Telegram با mock-OpenAI، و بررسیهای دوام ارتقای منتشرشده در برابر همان tarball. بررسیهای مسدودکننده انتشار از مبنای پیشفرض آخرین نسخه منتشرشده استفاده میکنند؛ بررسیهای soak به همه انتشارهای پایدار npm در یا بعد از 2026.4.23 بههمراه fixtureهای مسئله گزارششده گسترش مییابند. |
|
اجرای دوباره: rerun_group=package. |
|
| همسانی QA | Job: Run QA Lab parity lane و Run QA Lab parity report |
| گردشکار پشتیبان: jobهای مستقیم | |
| آزمونها: بستههای همسانی agentic نامزد و مبنا، سپس گزارش همسانی. | |
اجرای دوباره: rerun_group=qa-parity یا rerun_group=qa. |
|
| Matrix live در QA | Job: Run QA Lab live Matrix lane |
| گردشکار پشتیبان: job مستقیم | |
آزمونها: نمایه سریع QA live در Matrix در محیط qa-live-shared. |
|
اجرای دوباره: rerun_group=qa-live یا rerun_group=qa. |
|
| Telegram live در QA | Job: Run QA Lab live Telegram lane |
| گردشکار پشتیبان: job مستقیم | |
| آزمونها: QA live در Telegram با leaseهای credential در Convex CI. | |
اجرای دوباره: rerun_group=qa-live یا rerun_group=qa. |
|
| تأییدکننده انتشار | Job: Verify release checks |
| گردشکار پشتیبان: ندارد | |
| آزمونها: jobهای ضروری release-check برای گروه اجرای دوباره انتخابشده. | |
| اجرای دوباره: پس از گذر jobهای فرزند متمرکز دوباره اجرا کنید. |
chunkهای مسیر انتشار Docker
مرحله مسیر انتشار Docker این chunkها را زمانی اجرا میکند که live_suite_filter
خالی باشد:
| Chunk | پوشش |
|---|---|
core |
مسیرهای smoke مسیر انتشار Core Docker. |
package-update-openai |
رفتار نصب و بهروزرسانی بسته OpenAI. |
package-update-anthropic |
رفتار نصب و بهروزرسانی بسته Anthropic. |
package-update-core |
رفتار بسته و بهروزرسانی بیطرف نسبت به provider. |
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]> هدفمند روی گردشکار live/E2E قابل استفاده مجدد استفاده کنید. مصنوعههای انتشار شامل فرمانهای اجرای دوباره برای هر مسیر با ورودیهای مصنوعه بسته و استفاده مجدد از تصویر هستند، هرگاه در دسترس باشند.
نمایههای انتشار
release_profile عمدتاً گستره live/provider را درون بررسیهای انتشار کنترل میکند.
این گزینه CI کامل عادی، Plugin Prerelease، smoke نصب، پذیرش بسته، یا QA Lab را حذف نمیکند. برای stable، E2E جامع مخزن/live و chunkهای مسیر انتشار Docker پوشش soak هستند و زمانی اجرا میشوند که run_release_soak=true.
full پوشش soak را اجباری میکند و همچنین باعث میشود اجرای umbrella، E2E بسته Telegram را در برابر مصنوعه بسته انتشار والد اجرا کند وقتی rerun_group=all باشد، بنابراین یک نامزد کامل پیش از انتشار آن مسیر بسته Telegram را بیصدا رد نمیکند.
| نمایه | کاربرد مورد نظر | پوشش live/provider شاملشده |
|---|---|---|
minimum |
سریعترین smoke حیاتی برای انتشار. | مسیر live OpenAI/core، مدلهای live در Docker برای OpenAI، core بومی Gateway، نمایه بومی Gateway برای OpenAI، Plugin بومی OpenAI، و Gateway live در Docker برای OpenAI. |
stable |
نمایه پیشفرض تأیید انتشار. | minimum بهعلاوه smoke Anthropic، Google، MiniMax، backend، harness آزمون live بومی، backend زنده CLI در Docker، bind مربوط به Docker ACP، harness مربوط به Docker Codex، و یک shard smoke برای OpenCode Go. |
full |
پیمایش مشاورهای گسترده. | stable بهعلاوه providerهای مشاورهای، shardهای live در Plugin، و shardهای live رسانه. |
افزودههای فقط full
این مجموعهها توسط stable رد میشوند و توسط full شامل میشوند:
| حوزه | پوشش فقط full |
|---|---|
| مدلهای live در Docker | OpenCode Go، OpenRouter، xAI، Z.ai، و Fireworks. |
| Gateway live در Docker | providerهای مشاورهای که به shardهای DeepSeek/Fireworks، OpenCode Go/OpenRouter، و xAI/Z.ai تقسیم شدهاند. |
| نمایههای provider بومی Gateway | shardهای کامل Anthropic Opus و Sonnet/Haiku، Fireworks، DeepSeek، shardهای کامل مدل OpenCode Go، OpenRouter، xAI، و Z.ai. |
| shardهای live بومی Plugin | Plugins A-K، L-N، O-Z other، Moonshot، و xAI. |
| shardهای live بومی رسانه | گروههای صوت، موسیقی 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 استفاده میکند. اجراهای دوباره متمرکز همچنان میتوانند از handleهای تجمیعی
native-live-src-gateway-profiles-anthropic یا
native-live-src-gateway-profiles-opencode-go استفاده کنند.
اجراهای دوباره متمرکز
برای جلوگیری از تکرار boxهای انتشار نامرتبط از rerun_group استفاده کنید:
| شناسه | دامنه |
|---|---|
all |
همهٔ مراحل اعتبارسنجی کامل انتشار. |
ci |
فقط فرزند CI کامل دستی. |
plugin-prerelease |
فقط فرزند پیشانتشار Plugin. |
release-checks |
همهٔ مراحل بررسیهای انتشار OpenClaw. |
install-smoke |
Install Smoke از طریق بررسیهای انتشار. |
cross-os |
بررسیهای انتشار میانسیستمعاملی. |
live-e2e |
اعتبارسنجی E2E زنده/مخزن و مسیر انتشار Docker. |
package |
پذیرش بسته. |
qa |
برابری QA بهعلاوه مسیرهای زنده QA. |
qa-parity |
فقط مسیرهای برابری QA و گزارش. |
qa-live |
فقط ماتریس زنده QA و Telegram. |
npm-telegram |
E2E بستهٔ منتشرشدهٔ Telegram؛ به 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 را دوباره اجرا کنید.
شواهدی که باید نگه دارید
خلاصهٔ Full Release Validation را بهعنوان نمایهٔ سطح انتشار نگه دارید. این خلاصه به شناسههای اجرای فرزند پیوند میدهد و جدولهای کندترین کارها را شامل میشود. برای شکستها، ابتدا گردشکار فرزند را بررسی کنید، سپس کوچکترین شناسهٔ منطبق بالا را دوباره اجرا کنید.
آرتیفکتهای مفید:
release-package-under-testاز والد اعتبارسنجی کامل انتشار وOpenClaw Release Checks- آرتیفکتهای مسیر انتشار 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