Codoloper

پکیج @cloudflare/ci: موتور CI/CD کلادفلر که برای دوران agent ها ساخته شده

پکیج @cloudflare/ci: موتور CI/CD کلادفلر که برای دوران agent ها ساخته شده | عکس

کلادفلر چهارم آگوست، به‌عنوان بخشی از یه اعلامیه‌ی بزرگ‌تر به اسم «Agent Development Lifecycle» (ADLC)، یه ابزار CI/CD جدید و بومی خودشون رو معرفی کرد: @cloudflare/ci. این ابزار رو Cloudflare Workflows و Sandbox می‌سازن، و هدفش اجرای pipeline های CI/CD در مقیاس میلیون‌ها ریپازیتوریه؛ با یه ویژگی خاص که کمتر ابزار CI/CD دیگه‌ای داره: توانایی self-heal کردن و spawn کردن agent برای کارهای پیچیده‌تر.

چرا کلادفلر این ابزار رو ساخته

استدلال کلادفلر پشت این انتشار جالبه. طبق پست رسمی وبلاگشون، مدل قدیمی «چرخه‌ی توسعه‌ی نرم‌افزار» (SDLC) که از دهه‌ی ۱۹۷۰ باهاش کار می‌کنیم، فرض می‌کنه سرعت پیاده‌سازی (implement) کندترین و گرون‌ترین مرحله‌ست. ولی هوش مصنوعی دقیقاً همین مرحله رو ارزون و سریع کرده، و همین باعث شده بقیه‌ی مراحل (تست، دیپلوی، نگهداری) زیر فشار قرار بگیرن؛ چیزی که کلادفلر ازش با عنوان «slop» (سیل کد بی‌کیفیت) یاد می‌کنه.

راه‌حل پیشنهادی کلادفلر اینه که به‌جای این‌که فقط agent ها رو برای نوشتن کد به کار بگیریم و بقیه‌ی مراحل رو همچنان دستی نگه داریم، باید کل چرخه رو برای اجرا توسط agent بازطراحی کنیم؛ چیزی که بهش می‌گن ADLC (Agent Development Lifecycle). @cloudflare/ci اولین قطعه‌ی این پازله.

چطور کار می‌کنه

@cloudflare/ci رو Cloudflare Workers ساخته شده و pipeline های CI/CD رو به‌صورت یه Workflow تعریف می‌کنه، نه یه فایل YAML خطی. این یعنی pipeline می‌تونه به‌صورت پویا (dynamic) تعریف بشه، مراحل رو موازی اجرا کنه، و حتی خودش agent یا Workflow دیگه‌ای رو spawn کنه:

import { CIWorkflow } from '@cloudflare/ci'

const deps = await ci.runner({
  name: 'install',
  command: 'bun install --frozen-lockfile',
  cache: { inputs: ['package.json', 'bun.lock'] },
});

await Promise.all([
  deps.runner({ name: 'lint', command: 'bun run lint' }),
  deps.runner({ name: 'test', command: 'bun run test' }),
  deps.runner({ name: 'typecheck', command: 'bun run typecheck' }),
  deps.runner({ name: 'build', command: 'bun run build' }),
]);

await deps.runner({
  name: 'deploy',
  command: 'bun wrangler deploy',
  cloudflareCredentials: {
    accountId: this.env.CLOUDFLARE_DEPLOY_ACCOUNT_ID,
  },
});

چون این پکیج مستقیم رو Cloudflare Workers اجرا می‌شه، نکته‌ی فنی مهمی داره: @cloudflare/ci یه پکیج معمولی Node.js نیست و مستقیم قابل اجرا نیست؛ باید با یه bundler آگاه به Workers (مثل Wrangler) استفاده بشه، و اگه از @cloudflare/ci/worker استفاده می‌کنی، باید فلگ سازگاری nodejs_compat رو فعال کنی.

بخشی از یه اکوسیستم بزرگ‌تر

@cloudflare/ci به‌تنهایی منتشر نشده؛ بخشی از یه دسته کامل از ابزارهای جدیده که کلادفلر هم‌زمان معرفی کرده تا کل چرخه‌ی SDLC (برنامه‌ریزی، طراحی، پیاده‌سازی، تست، دیپلوی، نگهداری، بازنشستگی) رو برای agent ها قابل مدیریت کنه:

  • OpenTelemetry traces تو dev محلی؛ که یعنی agent همون سطح observability که تو production داره رو موقع توسعه‌ی محلی هم داره؛ مستقیم تو Wrangler و Vite plugin کلادفلر.
  • Cloudflare Agents و Agent Traces؛ یه فضای جدید برای مشاهده، نگهداری، و بهبود agent ها، بر پایه‌ی trace های OpenTelemetry.
  • تجربه‌ی داخلی کلادفلر از اجرای استانداردهای مهندسی با هوش مصنوعی رو تمام ریپازیتوری‌ها و specification هاشون.
  • تجربه‌ی ساخت یه «کارخانه‌ی نرم‌افزار» که تعداد issue های باز پروژه‌ی Astro رو به صفر رسونده؛ یه سیستم خودکار برای triage، بازتولید، تأیید، و رفع مشکلات.

نکته‌ی معماری: Workflow به‌جای YAML خطی

استدلال فنی کلادفلر اینه که یه pipeline CI/CD کلاسیک، صرفاً یه مورد خاص از یه Workflow عمومیه؛ ولی خود Workflow می‌تونه خیلی فراتر از این بره. تو مثال دیگه‌ای که تو پست رسمی اومده، یه Workflow می‌تونه یافته‌های روزانه رو جمع کنه، یه agent رو با اون context صدا بزنه، منتظر جوابش بمونه، و بر اساس نتیجه تصمیم بگیره — همه‌چیز تحت کنترل کامل خود Workflow، نه یه اسکریپت خطی که فقط دستورات رو پشت سر هم اجرا می‌کنه.

جدول کامل: کدوم ابزار کلادفلر کدوم مرحله رو پوشش می‌ده

طبق جدولی که خود کلادفلر منتشر کرده، مراحل مختلف SDLC حالا این‌طور روی ابزارهای کلادفلر map می‌شن:

  • برنامه‌ریزی/طراحی/پیاده‌سازی: Vite، Rolldown، و Oxc (زنجیره‌ابزار سریع)، dev محلی که دقیقاً همون runtime production رو شبیه‌سازی می‌کنه، Local Explorer و Local Traces، remote bindings، و Preview URL برای هر pull request.
  • تست: Browser Run (مرورگرهای headless قابل‌برنامه‌ریزی تو کلاود) و پشتیبانی از Vitest مستقیم تو runtime خود Workers.
  • دیپلوی: Flagship (فیچر فلگ خودکار برای هر تغییر) و Gradual Deployments (رول‌اوت تدریجی).
  • نگهداری/بازنشستگی: Workers Logs (برای این‌که agent بتونه لاگ زنده رو دنبال کنه)، Agent Traces، Cloudflare MCP Server، و Analytics Engine.

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

اگه از قبل رو Cloudflare Workers کار می‌کنی، @cloudflare/ci یه راه بومی برای ساختن pipeline هایی می‌ده که فراتر از یه سری دستور خطی هستن؛ می‌تونن خودشون رو self-heal کنن و در صورت نیاز، کارهای پیچیده‌تر رو به یه agent جدا بسپرن. ولی نکته‌ی مهم اینه که این ابزار، مثل خیلی از قابلیت‌های جدید کلادفلر، عمیقاً به اکوسیستم خودشون (Workers، Workflows، Wrangler) وابسته‌ست؛ یعنی اگه رو یه پلتفرم دیگه host می‌کنی، این ابزار برات مستقیماً قابل استفاده نیست.

کلادفلر خودش هم اعتراف می‌کنه که این فقط شروع کاره؛ به قول خودشون «primitive» های لازم الان در دسترسن، ولی کار زیادی برای اتصال کامل این قطعات به هم و یادگیری از تجربه‌ی واقعی هنوز باقی مونده.

کامنت جدید

برای ثبت کامنت وارد شوید

برای اینکه بتوانید زیر این پست کامنت بگذارید، باید وارد حساب کاربری خود شوید.

برای ادامه، وارد حساب خود شوید

بعد از ورود، دوباره به همین پست برمی‌گردید و می‌توانید کامنتتان را ثبت کنید.

ورود به حساب
کامنت‌ها

نظرات کاربران

دیدگاه‌هایی که برای این نوشته ثبت شده‌اند.

هنوز کامنتی برای این پست ثبت نشده است.