پائپ لائن ٹیمپلیٹ بنائیں
پائپ لائن ٹیمپلیٹس ورک اسپیس کی ترتیبات میں لکھے جاتے ہیں۔ ورک اسپیس کے سائیڈبار میں پائپ لائنز اندراج رن کی قطار ہے، ٹیمپلیٹس کی فہرست نہیں — اُس میں “ٹیمپلیٹ بنائیں” کا کوئی ایکشن نہیں ہوتا۔
ہر قدم کی قسم، باڈی کلید اور کنفیگ فیلڈ کا مطلب کیا ہے، یہ پائپ لائن قدم کا حوالہ میں دیکھیں۔
ٹیمپلیٹ بنائیں
سیکشن کا عنوان “ٹیمپلیٹ بنائیں”- ترتیبات → ورک اسپیس → پائپ لائن ٹیمپلیٹس پر جائیں
(
/workspaces/<workspace-id>/settings/pipelines)۔ - نیا ٹیمپلیٹ دبائیں۔
کوئی id ڈائیلاگ نہیں کھلتا۔ ایڈیٹر فوراً ایک سیڈ شدہ ڈھانچے پر کھل جاتا ہے جس
کا نام نئی پائپ لائن ہوتا ہے اور جسے خودکار طور پر id الاٹ ہوتی ہے
(pipeline_1، پھر pipeline_2، …)۔ نام بدلنے کے لیے ہیڈر میں عنوان پر کلک
کریں۔
کینوس خالی نہیں ہوتا: ایک Trigger داخلی نوڈ، ایک پرامپٹ-ایجنٹ نوڈ جس کا لیبل Step ہے، اور ایک ٹرمینل سینٹینل جو رن ختم کرتا ہے۔ سینٹینل کھینچا نہیں جاتا۔ ایڈیٹر اُس پوشیدہ ٹرمینل کو ہر قابلِ رسائی سنک سے دوبارہ جوڑ دیتا ہے، اس لیے Step کے بعد لگایا گیا کام پھر بھی چلتا ہے۔
نوڈز شامل کریں
سیکشن کا عنوان “نوڈز شامل کریں”نوڈ لائبریری سائیڈبار ایڈیٹر کے بائیں طرف مستقل رہتا ہے۔ اُسے نوڈز تلاش کریں باکس سے فلٹر کریں اور کوئی اندراج کینوس پر گھسیٹیں — نوڈ وہیں اترتا ہے جہاں آپ اُسے چھوڑتے ہیں، بغیر کسی آنے والے کنکشن کے۔
| پیلیٹ نوڈ | قدم کی قسم | یہ کیا کرتا ہے |
|---|---|---|
| Bash script | listen | {{state}} کی جگہ بھر کر شیل اسکرپٹ چلاتا ہے؛ کوئی ایجنٹ ڈسپیچ نہیں ہوتا |
| Open conversation | listen | رن کی واحد نظر آنے والی اسپیس اور اُس کا چیک آؤٹ کھولتا ہے؛ ایجنٹ نوڈز اسی کمرے میں شامل ہوتے ہیں |
| Clone PR branch | listen | gh pr view کے ذریعے PR کی ہیڈ برانچ تلاش کرتا ہے اور اُسے رن ڈائریکٹری میں کلون کرتا ہے |
| Post PR comment | listen | مجمّع نتائج PR پر GitHub ریویو تبصرے کے طور پر پوسٹ کرتا ہے |
| Reviewer (prompt) | listen | ایک ماہر ریویوور ایجنٹ ڈسپیچ کرتا ہے؛ جب تک ایجنٹ اپنا نتیجہ جمع نہ کرا دے معطل رہتا ہے |
| Consolidate (join) | join | کئی بالائی شاخوں کا انتظار کرتا ہے، پھر ایک ایجنٹ سے اُن کے آؤٹ پٹس مجمّع کرنے کو کہتا ہے |
| Custom prompt | listen | عمومی پرامپٹ پر چلنے والا نوڈ جو promptAgent باڈی سے گزرتا ہے |
| Post to space | listen | میسجنگ اسپیس کو پیغام بھیجتا ہے |
| Condition / switch (router) | router | اسٹیٹ ویلیو پر فلو کو شاخوں میں تقسیم کرتا ہے |
| If file exists (router) | router | جب کلون کے تحت کوئی پاتھ موجود ہو تو "true" روٹ کرتا ہے، ورنہ "false" |
| Any file exists (OR router) | router | جب فہرست کا کوئی بھی پاتھ موجود ہو تو "true" روٹ کرتا ہے |
| All conditions (AND router) | router | "true" صرف اُس وقت روٹ کرتا ہے جب فہرست کا ہر پاتھ موجود ہو |
| Team dispatch | listen | پوری ٹیم ڈسپیچ کرتا ہے اور اُس کے ختم ہونے تک معطل رہتا ہے |
| Approval gate | listen | منظوری کے فیصلے کے لیے رک جاتا ہے |
| For each (map) | forEach | ہر عنصر کے لیے ایک پرامپٹ تیار کرتا ہے، پھر وہ پرامپٹس جوڑ کر ایجنٹ کو ایک بار ڈسپیچ کرتا ہے |
| Call sub-pipeline | listen | کسی دوسرے ٹیمپلیٹ کو متداخل قدم کے طور پر چلاتا ہے |
| Clean up worktrees | listen | پرانے الگ تھلگ worktrees ہٹاتا ہے؛ طے شدہ، کوئی ایجنٹ ڈسپیچ نہیں ہوتا |
لائبریری اِنہیں فلو اور منطق، PR ریویو، ایجنٹس، میسجنگ اور کوڈ کے تحت گروپ کرتی ہے۔ کوئی Demo گروپ نہیں ہے۔
نوڈز کو آپس میں جوڑیں
سیکشن کا عنوان “نوڈز کو آپس میں جوڑیں”ہر کام والے نوڈ کے دائیں کنارے پر ایک گول آؤٹ پٹ پورٹ ہوتا ہے۔ اُس پورٹ سے
دوسرے نوڈ تک گھسیٹ کر اُنہیں جوڑیں۔ شروع کرنے والے ٹریگرز بھی ایسے ہی ہیں: ہر
ایک کا اپنا پورٹ ہوتا ہے، اس لیے شیڈول سے نکلنے والا تار دستی رن سے بھی
نہیں نکلتا۔ کسی نوڈ کے فوراً بعد ایک اور قسم داخل کرنے کے لیے
مرحلہ شامل کریں (+) دبائیں۔ کسی موجودہ کنارے کے درمیانی نقطے پر کرسر
لائیں اور منقطع کرنے کے لیے × دبائیں۔
کنکشنز اُس نوڈ سے بھی ایڈٹ کیے جاتے ہیں جو اُنہیں وصول کرتا ہے:
- نیچے والا نوڈ منتخب کریں۔ اُس کا کنفیگ پینل دائیں طرف کھل جاتا ہے۔
- Triggers from تک سکرول کریں اور ہر اُس بالائی نوڈ کی چپ پر ٹیپ کریں جسے یہ نوڈ سننا چاہیے۔ منتخب چپ پر ٹیپ کرنے سے کنکشن ہٹ جاتا ہے۔
- اگر کوئی بالائی نوڈ روٹر ہو تو چپس کے نیچے روٹ کلیدیں کا بلاک ظاہر ہوتا
ہے، جس میں ہر روٹر کنارے کے لیے ایک <node> سے روٹ کلید فیلڈ ہوتی
ہے۔ وہ کلید درج کریں جس پر وہ کنارہ فائر کرتا ہے — فائل کے وجود والے روٹرز
کے لیے
trueیاfalse، یا سوئچ کے لیے کیس کا نام۔
ہر ٹریگر نوڈ ایک داخلی نقطہ ہے۔ کوئی نوڈ کئی بالائی نوڈز سن سکتا ہے (فین اِن) اور کئی نیچے والوں کو فیڈ کر سکتا ہے (فین آؤٹ)، اور گراف کو حلقے سے پاک ہی رہنا چاہیے — ایڈیٹر میں کوئی چیز آپ کو حلقہ جوڑنے سے نہیں روکتی، اس لیے اپنا کام جانچ لیں۔
ٹرمینل سینٹینل کینوس سے فلٹر کر دیا جاتا ہے، اس لیے اُسے منتخب نہیں کیا جا سکتا۔ گراف بدلتے ہی ایڈیٹر اُسے ہر قابلِ رسائی سنک سے دوبارہ جوڑ دیتا ہے، اس لیے سیڈ شدہ Step کے بعد لگایا گیا کام پھر بھی چلتا ہے۔ خالی گراف (ایسا ٹریگر جس کے بعد کوئی کام والا قدم نہ ہو) ٹریگر کو خود فہرست کرتا ہے تاکہ رن فوراً مکمل ہو جائے۔
نوڈ کنفیگر کریں
سیکشن کا عنوان “نوڈ کنفیگر کریں”نوڈ منتخب کریں تاکہ اُس کا کنفیگ پینل کھل جائے۔ کون سی فیلڈز ظاہر ہوتی ہیں، یہ نوڈ کی باڈی پر منحصر ہے۔
ہر نوڈ میں لیبل، ان پٹ کلیدیں (کاما سے جدا اسٹیٹ کلیدیں جو اجرا کے وقت پڑھی جاتی ہیں) اور اعلیٰ کے تحت ریڈیوسر، ٹائم آؤٹ (ms)، دوبارہ کوششیں، ناکامی پر جاری رکھیں اور آؤٹ پٹ اسکیما ہوتے ہیں۔ listen اور join نوڈز اپنی قسم بھی اِن دونوں کے درمیان بدل سکتے ہیں۔
گفتگو کھولیں
سیکشن کا عنوان “گفتگو کھولیں”ایک ریپو اسکوپ منتخب کنندہ (کون سے ورک اسپیس ریپوز چیک آؤٹ کرنے ہیں؛ خالی کا مطلب کوئی نہیں)، ایک اسپیس کا نام اور ایک گفتگو بنائیں چیک باکس شامل کرتا ہے۔ جب وہ چیک باکس آن ہو تو گفتگو کا عنوان فیلڈ اُس اسٹریم کا نام دیتی ہے جس کے ساتھ کمرہ کھلتا ہے۔ ایجنٹ نوڈز اسی کمرے میں شامل ہوتے ہیں — وہ اپنا الگ کمرہ نہیں کھولتے۔
پرامپٹ ایجنٹ
سیکشن کا عنوان “پرامپٹ ایجنٹ”ایجنٹ (کون سا ایجنٹ ڈسپیچ کرنا ہے)، پرامپٹ ({{key}} سے اِن پٹس یا
بالائی آؤٹ پٹس کا حوالہ دیں) اور آؤٹ پٹ کلید شامل کرتا ہے۔
ٹائم آؤٹ (ms) ملی سیکنڈز میں ہے، سیکنڈز میں نہیں — 900000 پندرہ منٹ
ہیں۔ 900 درج کرنے سے قدم کو 0.9 سیکنڈ ملتے ہیں۔
پرامپٹ-ایجنٹ نوڈ جس گفتگو موڈ میں چلتا ہے، اُس کے لیے ایجنٹ نوڈ پر ایڈیٹر میں
کوئی فیلڈ نہیں ہوتی۔ یہ کمرہ بنانے والے Open conversation نوڈ پر
extras['mode'] (chat، plan یا review) کے ذریعے چلتی ہے (ڈیفالٹ
review)۔ اُسے ایجنٹ قدم پر سیٹ کرنا نظر انداز کر دیا جاتا ہے۔ کلید عین مطابق
میچ ہوتی ہے: کوئی اور ہجے خاموشی سے نظر انداز کر دی جاتی ہے۔
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": "..." }
کی صورت میں حل ہوتا ہے۔ Reviewer (prompt) نوڈز بھی اسی طرح جمع کراتے ہیں۔
ٹیم ڈسپیچ
سیکشن کا عنوان “ٹیم ڈسپیچ”Team ID اور ڈسپیچ موڈ شامل کرتا ہے۔ منتخب کنندہ بالکل دو موڈ پیش کرتا ہے:
allParallel— فی رکن ایک ٹاسک، سب مکمل ہونے تک معطل رہتا ہے۔manager— لیڈر کو ڈسپیچ کرتا ہے، اور وہ آگے تفویض کرتا ہے۔
کوئی بھی اور محفوظ ویلیو allParallel کی طرح برتاؤ کرتی ہے۔ ہر رکن کا نتیجہ
آؤٹ پٹ کلید کے تحت فہرست میں جمع کرنے کے لیے ریڈیوسر کو append پر سیٹ
کریں۔
ہر عنصر کے لیے اور ذیلی پائپ لائن کال
سیکشن کا عنوان “ہر عنصر کے لیے اور ذیلی پائپ لائن کال”For each ڈیفالٹ طور پر items اسٹیٹ کلید پر میپ کرتا ہے (نوڈ پر
extras.iterableKey / extras.itemKey)۔ یہ اپنا پرامپٹ فی عنصر ایک بار تیار
کرتا ہے (ڈیفالٹ {{item}}) اور وہ پرامپٹس جوڑ کر ایجنٹ کو ایک بار ڈسپیچ
کرتا ہے۔ خالی مجموعہ فوراً خالی فہرست کے ساتھ مکمل ہو جاتا ہے۔ یہ فی عنصر ایک
متوازی ڈسپیچ نہیں ہے۔
Call sub-pipeline اُس وقت تک معطل رہتا ہے جب تک چائلڈ رن کسی حتمی حالت تک
نہ پہنچ جائے، پھر چائلڈ کی آخری حالت آؤٹ پٹ کلید کے تحت ضم کر دیتا ہے (ڈیفالٹ
subflow_result)۔ extras.templateId کے ذریعے اُسے کسی چائلڈ کی طرف اشارہ
کریں۔ کوئی ٹیمپلیٹ خود کو کال نہیں کر سکتا؛ ناکام یا منسوخ چائلڈ پیرنٹ قدم کو
ناکام کر دیتا ہے، جو پھر اُس قدم کی دوبارہ کوشش اور ناکامی پر جاری رکھنے کی
پالیسی کو فیڈ کرتا ہے۔
اِن پٹس کا اعلان کریں اور دستی رنز کی اجازت دیں
سیکشن کا عنوان “اِن پٹس کا اعلان کریں اور دستی رنز کی اجازت دیں”دونوں ایڈیٹر ہیڈر میں دستی رن کے پیچھے ہیں۔
- دستی رن دبائیں۔
- دستی رن کی اجازت دیں آن کریں۔ یہ سوئچ فوراً محفوظ ہو جاتا ہے — یہ وہی
manualٹریگر قطار بناتا (یا حذف کرتا) ہے جس سے ٹیمپلیٹ رن لانچر میں ظاہر ہوتا ہے۔ - اگر حد مقرر کرنا چاہیں تو زیادہ سے زیادہ متوازی رنز سیٹ کریں (لامحدود
کے لیے خالی چھوڑیں)۔ اضافی شروع کیے گئے رنز
queuedحالت میں انتظار کرتے ہیں جب تک کوئی سلاٹ خالی نہ ہو۔ - ہر اُس فارم فیلڈ کے لیے ان پٹ شامل کریں دبائیں جو دستی رن کو جمع کرنا چاہیے:
| فیلڈ | تفصیل |
|---|---|
| کلید | وہ اسٹیٹ کلید جس کے تحت ویلیو محفوظ ہوتی ہے؛ اُس کا حوالہ {{key}} سے دیں |
| لیبل | ڈسپلے لیبل (ڈیفالٹ کلید) |
| قسم | متن، کثیر سطری متن، عدد، ٹوگل، منتخب، ریپوزٹری |
| آپشنز | کاما سے جدا اختیارات، صرف منتخب کے لیے |
| ڈیفالٹ ویلیو | پہلے سے بھری ویلیو |
| پلیس ہولڈر | خالی فیلڈ کے اندر اشارے کا متن |
| مدد کا متن | فیلڈ کے نیچے مددگار متن |
| ضروری | یہ کہ رن فارم خالی ویلیو پر رکتا ہے یا نہیں |
ریپوزٹری اِن پٹ ورک اسپیس کے ریپوز پر ایک منتخب کنندہ دکھاتا ہے اور رن پے
لوڈ میں repo_id، repo_local_path، repo_full_name اور — جب ریپو کا GitHub
ریموٹ ہو — repo_owner اور repo_name بھرتا ہے۔
- ڈائیلاگ میں محفوظ کریں دبائیں۔ اِن پٹ کی تبدیلیاں ڈرافٹ میں شامل ہو جاتی ہیں؛ ٹیمپلیٹ محفوظ کرنے پر وہ برقرار رہتی ہیں۔
محفوظ کریں اور فعال کریں
سیکشن کا عنوان “محفوظ کریں اور فعال کریں”- ایڈیٹر ہیڈر میں محفوظ کریں دبائیں۔ ایسا کرنے تک ہیڈر “غیر محفوظ تبدیلیاں” دکھاتا ہے۔
- واپس ترتیبات → ورک اسپیس → پائپ لائن ٹیمپلیٹس پر جائیں اور دیکھیں کہ ٹیمپلیٹ کی قطار کا سوئچ آن ہو۔ انجن غیر فعال ٹیمپلیٹ شروع کرنے سے انکار کرتا ہے اور غیر فعال ٹیمپلیٹ رن لانچر میں کبھی ظاہر نہیں ہوتا۔
- خودکار طور پر شروع کرنے کے لیے نوڈ لائبریری سے کوئی ٹریگر کینوس پر گھسیٹیں — دیکھیں پائپ لائن ٹریگرز سیٹ کریں۔
متعلقہ گائیڈز
سیکشن کا عنوان “متعلقہ گائیڈز”- پائپ لائن دستی طور پر چلائیں
- پائپ لائن ٹریگرز سیٹ کریں
- پائپ لائن رنز کی نگرانی کریں
- پائپ لائن قدم کا حوالہ