Cloudflare بستهٔ جدیدی به نام @cloudflare/ci منتشر کرده که تعریف مسیرهای یکپارچگی پیوسته (CI) را از YAML به TypeScript منتقل می‌کند و هر گام را به‌عنوان یک Cloudflare Workflow اجرا می‌کند. این رویکرد، کنترل بیشتر روی منطق CI و مشاهده‌پذیری گام‌به‌گام فراهم می‌آورد.

Cloudflare CI تایپ‌اسکریپت: چه چیزی تغییر کرده است؟

بستهٔ @cloudflare/ci روی زمان‌اجرای Cloudflare Workers هدف‌گذاری شده و سورس تایپ‌اسکریپت آن برای ابزارهای آگاه از Workers مانند Wrangler منتشر می‌شود. ادغام اولیه از مخازن Cloudflare Artifacts می‌خواند (فعلاً در بتای خصوصی) و مخزن پروژه اوایل آگوست 2026 تحت مجوز Apache 2.0 منتشر شد.

معماری و اجزای کلیدی

  • هر گام CI به یک گام Workflow نگاشته می‌شود؛ این یعنی هر گام به‌صورت نقطه‌ای قابل ادامه ذخیره می‌شود و در صورت خطا امکان ادامه از آخرین گام موفق وجود دارد.
  • فرمان‌ها داخل کانتینرهای منزوی (sandbox) اجرا می‌شوند و همین کانتینرها اسنَپ‌شات‌های فایل‌سیستم لازم برای کش را تولید می‌کنند.
  • اتصال Workflows، Sandboxes، Containers، Durable Objects و در صورت فعال‌بودن کش، R2 نشان می‌دهد این رویکرد یک تعهد پلتفرمی است، نه صرفاً جایگزینی ساده برای CI سنتی.

کش و تریگرها

دو مکانیزم مهم ارائه شده است: اول، کشِ وابستگی که نتیجهٔ گام نصب را به‌صورت اسنَپ‌شات فایل‌سیستم در یک باکت R2 ذخیره می‌کند تا گام‌های بعدی نیازی به نصب مجدد نداشته باشند؛ دوم، فیلد جدید events در پیکربندی Wrangler که امکان راه‌اندازی مستقیم Workflow روی رخداد cf.artifacts.repo.pushed را فراهم می‌کند و سیم‌کشی‌های قدیمی subscription/queue/consumer را ساده‌تر می‌سازد. Cloudflare برنامه دارد تریگرها را از سیستم‌های کنترل نسخه مختلف، پشتیبانی monorepo و مکانیزم‌های پیش‌نمایش و استقرار نیز گسترش دهد.

نمونه‌ای از جریان کاری CI با Cloudflare

پیامدها برای تیم‌های توسعه

برای تیم‌هایی که روی پشتهٔ Cloudflare کار می‌کنند، این SDK می‌تواند کدهای «چسبان» میان ابزارها را حذف و مشاهده‌پذیری در سطح هر گام را بهبود دهد. مزیت کلیدی، امکان «ادامه از نقطه توقف» است؛ اگر یک گام شکست بخورد، سیستم با حفظ حالت تلاش مجدد می‌کند و از اجرای دوبارهٔ همهٔ مراحل جلوگیری می‌شود که به‌ویژه در پایپلاین‌های طولانی مفید است.

محدودیت‌ها و هشدارهای عملیاتی

  • دستورات Runner داخل گام‌های قابل‌تلاش اجرا می‌شوند؛ بنابراین هر فرمانی که اثر جانبی خارجی دارد باید idempotent باشد تا تلاش مجدد اثر را تکرار نکند.
  • SDK خروجی خام فرمان‌ها را در CiRunnerResult.logs بازمی‌گرداند و هیچ مکانیسم خودکاری برای مخفی‌سازی اسرار ندارد؛ تیم‌ها باید پیش از استقرار، مدیریت امن اسرار (مثل فراهم‌سازی متغیرهای محرمانه، خذف لاگ‌های حساس یا رمزنگاری) را پیاده‌سازی کنند.

نمونهٔ خودترمیمی با هوش مصنوعی

یک نمونهٔ نمونه‌کار برای خودترمیمی منتشر شده که خط لوله را داخل یک بلوک try/catch پیچیده و هنگام شکست یک runner، یک عامل وابسته به اپلیکیشن را فراخوانی می‌کند. آن عامل با چارچوب Think روی Workers AI و مدل کُدزنی Kimi از Moonshot پیشنهاد پَچی تولید و آن را به یک شاخه commit می‌زند؛ اجرای اصلی تا زمان بررسی و merge توسط مهندس مربوطه منتظر می‌ماند. عامل و وابستگی‌های هوش مصنوعی خارج از بستهٔ @cloudflare/ci توزیع شده‌اند؛ به همین دلیل باید ارزیابی امنیتی و فرآیندهای کنترل تغییر جداگانه‌ای برای استفاده از این نمونه انجام شود.

مقایسه با راه‌حل‌های موجود

ابزارهایی مانند Dagger مسیرها را با زبان‌های عمومی تعریف و روی هر میزبان سازگار با OCI اجرا می‌کنند و کش را با آدرس‌دهی محتوا مدیریت می‌کنند تا مسیر یکسان روی لپ‌تاپ یا سرور CI اجرا شود. برخلاف این رویکرد، انتخاب Cloudflare اجرای گام‌ها را به Workflows و Sandboxes می‌بندد تا ویژگی ادامه از آخرین نقطه سالم فراهم شود؛ این تفاوت، مزایا و محدودیت‌های مشخصی در کنترل، قفل پلتفرم و قابلیت تعامل با سایر میزبان‌ها ایجاد می‌کند.

جمع‌بندی و چشم‌انداز

جابجایی نحو تعریف مسیرهای CI از YAML به TypeScript انعطاف‌پذیری و بیان‌پذیری بیشتری ارائه می‌دهد، اما می‌تواند خوانایی و حاکمیت پیکربندی توصیفی را کاهش دهد. برای سازمان‌های مستقر در اکوسیستم Cloudflare، مزایایی مثل حذف کدهای ادغام، کش سطح فایل‌سیستم و مشاهده‌پذیری گام‌به‌گام ملموس است. گام بعدی تعیین‌کننده خواهد بود: توسعهٔ تریگرها برای VCSهای مختلف، پشتیبانی امن از اسرار و تضمین قابلیت اطمینان در محیط‌های تولیدی گسترده، معیارهای اصلی پذیرش این رویکرد خواهند بود.