ایجاد قالب پایپلاین
قالبهای پایپلاین در تنظیمات فضای کاری ساخته میشوند. ورودی پایپلاینها در نوار کناری فضای کاری همان صف اجرا است، نه فهرست قالبها — هیچ کنشی برای «ایجاد قالب» ندارد.
برای اینکه هر نوع گام، هر کلید بدنه و هر فیلد پیکربندی چه معنایی دارد، به مرجع گامهای پایپلاین نگاه کنید.
ایجاد قالب
بخش با عنوان “ایجاد قالب”- به تنظیمات → فضای کاری → قالبهای پایپلاین بروید
(
/workspaces/<workspace-id>/settings/pipelines). - قالب جدید را بزنید.
دیالوگی برای شناسه وجود ندارد. ویرایشگر بیدرنگ روی یک اسکلت اولیه به نام
پایپلاین جدید باز میشود، با شناسهای که خودکار تخصیص مییابد (pipeline_1،
سپس pipeline_2، …). روی عنوان در سرصفحه کلیک کنید تا نامش را عوض کنید.
بوم خالی نیست: یک گرهٔ ورودی Trigger، یک گرهٔ عامل پرامپت با برچسب Step و یک نشانگر پایانی که اجرا را تمام میکند. این نشانگر رسم نمیشود. ویرایشگر آن پایانهٔ پنهان را به هر مقصد قابلدسترس دوباره سیمکشی میکند، پس کاری که بعد از Step وصل میکنید هم اجرا میشود.
افزودن گره
بخش با عنوان “افزودن گره”نوار کناری کتابخانهٔ گره همیشه سمت چپ ویرایشگر مینشیند. آن را با جعبهٔ جستجوی گرهها فیلتر کنید و یک مورد را روی بوم بکشید — گره همانجا که رهایش کنید مینشیند، بدون اتصال ورودی.
| گرهٔ پالت | نوع گام | کارش |
|---|---|---|
| اسکریپت Bash | listen | یک اسکریپت پوسته با جایگذاری {{state}} اجرا میکند؛ هیچ عاملی اعزام نمیشود |
| باز کردن گفتگو | listen | تنها فضای دیدنی اجرا و checkout آن را باز میکند؛ گرههای عامل به این اتاق میپیوندند |
| کلون شاخهٔ PR | listen | شاخهٔ سر PR را با gh pr view پیدا میکند و آن را در پوشهٔ اجرا کلون میکند |
| ارسال دیدگاه روی PR | listen | یافتههای تجمیعشده را بهصورت یک دیدگاه بازبینی GitHub روی PR میگذارد |
| بازبین (پرامپت) | listen | یک عامل بازبین متخصص اعزام میکند؛ تا تحویل نتیجه توسط عامل معلق میماند |
| تجمیع (join) | join | منتظر چند شاخهٔ بالادست میماند، سپس از یک عامل میخواهد خروجیهایشان را تجمیع کند |
| پرامپت سفارشی | listen | گرهٔ عمومی پرامپتمحور که از بدنهٔ promptAgent عبور میکند |
| ارسال به فضا | listen | پیامی به یک فضای پیامرسانی میفرستد |
| شرط / سوییچ (router) | router | جریان را بر پایهٔ یک مقدار حالت شاخهشاخه میکند |
| اگر فایل وجود دارد (router) | router | وقتی مسیری زیر کلون وجود دارد "true" و در غیر این صورت "false" را مسیر میدهد |
| وجود هر فایل (router با OR) | router | وقتی هر یک از مسیرهای فهرستشده وجود دارد "true" را مسیر میدهد |
| همهٔ شرطها (router با AND) | router | فقط وقتی همهٔ مسیرهای فهرستشده وجود دارند "true" را مسیر میدهد |
| اعزام تیم | listen | یک تیم کامل اعزام میکند و تا پایان کارش معلق میماند |
| دروازهٔ تأیید | listen | برای گرفتن تصمیم تأیید مکث میکند |
| برای هر (map) | forEach | برای هر آیتم یک پرامپت میسازد، سپس عامل را یکبار با این پرامپتهای بههمپیوسته اعزام میکند |
| فراخوانی پایپلاین فرعی | listen | قالب دیگری را بهعنوان یک گام تودرتو اجرا میکند |
| پاکسازی worktreeها | listen | worktreeهای ایزولهٔ قدیمی را پاک میکند؛ قطعی، بدون اعزام هیچ عاملی |
کتابخانه اینها را زیر جریان و منطق، بازبینی PR، عاملها، پیامرسانی و کد دستهبندی میکند. گروهی به نام Demo وجود ندارد.
اتصال گرهها به هم
بخش با عنوان “اتصال گرهها به هم”هر گره کار روی لبهٔ راستش یک درگاه خروجی دایرهای دارد. از آن درگاه به گرهٔ
دیگری بکشید تا به هم وصل شوند. تریگرهای شروع هم همینطور هستند: هر کدام درگاه
خودش را دارد، پس سیمی که از زمانبندی بیرون میآید از اجرای دستی هم
بیرون نمیآید. برای درج یک نوع بعد از یک گره، افزودن گام (+) را کمی بعد
از آن بزنید. نشانگر را روی نقطهٔ میانی یک یال موجود نگه دارید و × را بزنید تا
اتصال قطع شود.
اتصالها از گرهای هم که آنها را دریافت میکند ویرایش میشوند:
- گره پاییندست را انتخاب کنید. پنل پیکربندیاش در سمت راست باز میشود.
- تا تریگرها از پایین بروید و برای هر گره بالادستی که این گره باید به آن گوش بدهد، تراشهاش را بزنید. زدن یک تراشهٔ انتخابشده اتصال را برمیدارد.
- اگر گره بالادست یک مسیریاب باشد، زیر تراشهها بلوکی به نام کلیدهای مسیر
پیدا میشود، با یک فیلد کلید مسیر از <node> برای هر یال مسیریاب.
کلیدی را که آن یال با آن فعال میشود وارد کنید — برای مسیریابهای «فایل
وجود دارد» مقدار
trueیاfalse، یا نام حالت برای یک سوییچ.
هر گره تریگر یک نقطهٔ ورود است. یک گره میتواند به چند بالادست گوش بدهد (fan-in) و چند پاییندست را تغذیه کند (fan-out)، و گراف باید بدون حلقه بماند — هیچ چیز در ویرایشگر جلوی سیمکشی یک حلقه را نمیگیرد، پس کارتان را بررسی کنید.
نشانگر پایانی از بوم فیلتر شده است، پس نمیتوان انتخابش کرد. ویرایشگر هر بار که گراف تغییر میکند آن را به هر مقصد قابلدسترس دوباره سیمکشی میکند، پس کاری که بعد از Step اولیه وصل میکنید هم اجرا میشود. یک گراف خالی (تریگری بدون جانشین کاری) خود تریگر را فهرست میکند تا اجرا بیدرنگ کامل شود.
پیکربندی یک گره
بخش با عنوان “پیکربندی یک گره”یک گره را انتخاب کنید تا پنل پیکربندیاش باز شود. اینکه چه فیلدهایی ظاهر شوند به بدنهٔ گره بستگی دارد.
هر گره برچسب، کلیدهای ورودی (جدا با ویرگول) (کلیدهای حالتی که هنگام اجرا خوانده میشوند) دارد و زیر پیشرفته: کاهنده، مهلت (ms)، تعداد تلاش مجدد، ادامه اگر این گام ناموفق شد و شِمای خروجی (JSON). گرههای listen و join هم میتوانند نوع خود را بین این دو عوض کنند.
باز کردن گفتگو
بخش با عنوان “باز کردن گفتگو”یک گزینندهٔ مخزنها برای کلون اضافه میکند (کدام مخزنهای فضای کاری checkout شوند؛ خالی یعنی هیچکدام)، یک نام فضا و یک کادر انتخاب باز کردن گفتگو در آن. وقتی این کادر روشن باشد، فیلد نام گفتگو نام جریانی را میدهد که اتاق با آن باز میشود. گرههای عامل به این اتاق میپیوندند — خودشان اتاقی باز نمیکنند.
عامل پرامپت
بخش با عنوان “عامل پرامپت”عامل را اضافه میکند (کدام عامل اعزام شود)، قالب پرامپت را (با {{key}}
به ورودیها یا خروجیهای بالادست ارجاع دهید) و کلید خروجی را.
مهلت (ms) بر حسب میلیثانیه است، نه ثانیه — 900000 یعنی 15 دقیقه. اگر
900 وارد کنید، گام 0.9 ثانیه فرصت دارد.
حالت گفتگویی که یک گرهٔ عامل پرامپت زیر آن اجرا میشود، فیلدی در ویرایشگر روی
گرهٔ عامل ندارد. این حالت روی گرهٔ باز کردن گفتگو که اتاق را ساخته، در
extras['mode'] (chat، plan یا review) مینشیند (پیشفرض review). تنظیم
آن روی یک گام عامل نادیده گرفته میشود. این کلید دقیقاً مطابقت داده میشود: هر
املای دیگری بیصدا نادیده گرفته میشود.
اسکریپت Bash
بخش با عنوان “اسکریپت Bash”اسکریپت Bash را اضافه میکند. هیچ فیلدی برای پوشهٔ کاری یا محیط وجود ندارد، چون هیچکدام قابل پیکربندی نیستند:
- هر گام bash در یک اجرا همان cwd یعنی
<cc_root>/pipelines/<runId>/را به اشتراک میگذارد. GITHUB_TOKENاز مخزن اعتبارنامهها تزریق میشود، پسghوgit clone https://x-access-token:$GITHUB_TOKEN@…بدون هیچ تنظیمی کار میکنند.- اسکریپت بهعنوان فایل اجرایی حرفی
bashاجرا میشود، پسbashباید رویPATHمیزبان سرور باشد. این نکتهای است که در Windows باید در نظر بگیرید.
مسیریاب
بخش با عنوان “مسیریاب”یک مسیریاب شرطی را ارزیابی میکند و یک کلید مسیر برمیگرداند؛ موتور فقط یال پاییندستی را فعال میکند که کلید مسیرش مطابقت دارد و بقیهٔ شاخهها را ردشده علامت میزند.
انتخاب یک مسیریاب، فیلد کلید خروجی را با ویرایشگر شرط جایگزین میکند. یکی از چهار حالتش را انتخاب کنید:
- فایل(ها) وجود دارند — هر کدام — وقتی هر یک از مسیرهای فهرستشده وجود
دارد
"true"را مسیر میدهد. - فایلها وجود دارند — همه — فقط وقتی همهٔ مسیرهای فهرستشده وجود دارند
"true"را مسیر میدهد. - مقایسه — یک مقدار حالت را با یک مقدار ثابت مقایسه میکند.
- سوییچ — بر پایهٔ مقدار یک کلید حالت مسیر میدهد، با یک حالت پیشفرض.
سپس کلیدهای مسیر متناظر را روی یالهای خروجی تنظیم کنید (به اتصال گرهها به هم نگاه کنید).
گروههای منطقی and / or / not را بدنه پشتیبانی میکند، اما از این فرم
نمیتوان ساختشان — به یک درخت محمول دستنویس زیر extras.predicate نیاز
دارند. واژگان کامل محمولها و عملگرها در
مرجع گامهای پایپلاین آمده است.
پیوستن
بخش با عنوان “پیوستن”پیکربندی خودش را ندارد: منتظر همهٔ گامهای بالادستش میماند.
دروازهٔ تأیید
بخش با عنوان “دروازهٔ تأیید”دروازه، عامل تأییدکننده را با پرامپت دروازه به یک گفتگوی پنهان اعزام میکند و
معلق میماند. تأییدکننده در همان گفتگو تصمیم شما را میپرسد و آن را با
submit_output به شکل { "decision": "approved" | "rejected", "reason": "..." }
تحویل میدهد. تصمیم زیر کلید خروجی مینشیند (پیشفرض approval_decision)، پس
یک مسیریاب سوییچ در پاییندست میتواند بر پایهٔ آن شاخه بزند.
عامل را روی تأییدکننده و قالب پرامپت را روی پرسش دروازه بگذارید. دروازه
از طریق submit_output به شکل { "decision": "approved" | "rejected", "reason": "..." } حل میشود. گرههای بازبین (پرامپت) هم همینطور تحویل
میدهند.
اعزام تیم
بخش با عنوان “اعزام تیم”شناسهٔ تیم و حالت اعزام را اضافه میکند. گزیننده دقیقاً دو حالت پیش میگذارد:
allParallel— یک وظیفه برای هر عضو، تا کامل شدن همه معلق میماند.manager— رهبر را اعزام میکند و او کارها را واگذار میکند.
هر مقدار ذخیرهشدهٔ دیگری مثل allParallel رفتار میکند. کاهنده را روی
append بگذارید تا نتیجهٔ هر عضو بهصورت فهرستی زیر کلید خروجی جمع شود.
برای هر و فراخوانی پایپلاین فرعی
بخش با عنوان “برای هر و فراخوانی پایپلاین فرعی”برای هر بهصورت پیشفرض روی کلید حالت items نگاشت میکند
(extras.iterableKey / extras.itemKey روی گره). پرامپتش را یکبار برای هر
آیتم میسازد ({{item}} بهصورت پیشفرض) و عامل را یکبار با این
پرامپتهای بههمپیوسته اعزام میکند. یک مجموعهٔ خالی بیدرنگ با فهرستی خالی
کامل میشود. این یک اعزام موازی برای هر آیتم نیست.
فراخوانی پایپلاین فرعی تا رسیدن اجرای فرزند به یک وضعیت پایانی معلق
میماند، سپس حالت نهایی فرزند را زیر کلید خروجی ادغام میکند (پیشفرض
subflow_result). با extras.templateId آن را به یک فرزند اشاره بدهید. یک
قالب نمیتواند خودش را صدا بزند؛ فرزند ناموفق یا لغوشده، گام والد را ناموفق
میکند و آن گام هم به سیاست تلاش مجدد و ادامه در صورت شکست خودش سپرده میشود.
اعلام ورودیها و اجازهٔ اجرای دستی
بخش با عنوان “اعلام ورودیها و اجازهٔ اجرای دستی”هر دو پشت اجرای دستی در سرصفحهٔ ویرایشگر قرار دارند.
- اجرای دستی را بزنید.
- اجازهٔ اجرای دستی را روشن کنید. این کلید بیدرنگ ذخیره میشود — ردیف
تریگر
manualرا میسازد (یا حذف میکند) که قالب را در صفحهٔ اجرا نشان میدهد. - اگر سقف میخواهید حداکثر اجراهای موازی را تنظیم کنید (برای نامحدود خالی
بگذارید). شروعهای اضافه در وضعیت
queuedمیمانند تا جایی آزاد شود. - برای هر فیلدی که یک اجرای دستی باید جمع کند، افزودن ورودی را بزنید:
| فیلد | توضیح |
|---|---|
| کلید | کلید حالتی که مقدار زیر آن ذخیره میشود؛ با {{key}} به آن ارجاع دهید |
| برچسب | برچسب نمایشی (پیشفرض همان کلید) |
| نوع | متن، متن چندخطی، عدد، کلید، انتخاب، مخزن |
| گزینهها | گزینههای جداشده با ویرگول، فقط برای انتخاب |
| مقدار پیشفرض | مقدار پیشپرشده |
| نگهدار متن | متن راهنمای داخل فیلد خالی |
| متن راهنما | متن کمکی زیر فیلد |
| الزامی | اینکه فرم اجرا با مقدار خالی متوقف شود یا نه |
یک ورودی مخزن گزینندهای روی مخزنهای فضای کاری نمایش میدهد و repo_id،
repo_local_path، repo_full_name و — وقتی مخزن یک ریموت GitHub دارد —
repo_owner و repo_name را در بار دادهٔ اجرا میگذارد.
- در دیالوگ ذخیره را بزنید. ویرایشهای ورودی در پیشنویس ادغام میشوند و وقتی قالب را ذخیره کنید ماندگار میمانند.
ذخیره و فعالسازی
بخش با عنوان “ذخیره و فعالسازی”- در سرصفحهٔ ویرایشگر ذخیره را بزنید. تا آن موقع سرصفحه «تغییرات ذخیرهنشده» را نشان میدهد.
- به تنظیمات → فضای کاری → قالبهای پایپلاین برگردید و بررسی کنید که کلید ردیف قالب روشن باشد. موتور از شروع یک قالب غیرفعال سر باز میزند و یک قالب غیرفعال هرگز در صفحهٔ اجرا ظاهر نمیشود.
- برای شروع خودکار آن، یک تریگر را از کتابخانهٔ گره روی بوم بکشید — به راهاندازی تریگرهای پایپلاین نگاه کنید.
راهنماهای مرتبط
بخش با عنوان “راهنماهای مرتبط”- اجرای دستی یک پایپلاین
- راهاندازی تریگرهای پایپلاین
- نظارت بر اجراهای پایپلاین
- مرجع گامهای پایپلاین