مواد پر جائیں

پائپ لائن ٹیمپلیٹ بنائیں

پائپ لائن ٹیمپلیٹس ورک اسپیس کی ترتیبات میں لکھے جاتے ہیں۔ ورک اسپیس کے سائیڈبار میں پائپ لائنز اندراج رن کی قطار ہے، ٹیمپلیٹس کی فہرست نہیں — اُس میں “ٹیمپلیٹ بنائیں” کا کوئی ایکشن نہیں ہوتا۔

ہر قدم کی قسم، باڈی کلید اور کنفیگ فیلڈ کا مطلب کیا ہے، یہ پائپ لائن قدم کا حوالہ میں دیکھیں۔

  1. ترتیبات → ورک اسپیس → پائپ لائن ٹیمپلیٹس پر جائیں (/workspaces/<workspace-id>/settings/pipelines)۔
  2. نیا ٹیمپلیٹ دبائیں۔

کوئی 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 گروپ نہیں ہے۔

ہر کام والے نوڈ کے دائیں کنارے پر ایک گول آؤٹ پٹ پورٹ ہوتا ہے۔ اُس پورٹ سے دوسرے نوڈ تک گھسیٹ کر اُنہیں جوڑیں۔ شروع کرنے والے ٹریگرز بھی ایسے ہی ہیں: ہر ایک کا اپنا پورٹ ہوتا ہے، اس لیے شیڈول سے نکلنے والا تار دستی رن سے بھی نہیں نکلتا۔ کسی نوڈ کے فوراً بعد ایک اور قسم داخل کرنے کے لیے مرحلہ شامل کریں (+) دبائیں۔ کسی موجودہ کنارے کے درمیانی نقطے پر کرسر لائیں اور منقطع کرنے کے لیے × دبائیں۔

کنکشنز اُس نوڈ سے بھی ایڈٹ کیے جاتے ہیں جو اُنہیں وصول کرتا ہے:

  1. نیچے والا نوڈ منتخب کریں۔ اُس کا کنفیگ پینل دائیں طرف کھل جاتا ہے۔
  2. Triggers from تک سکرول کریں اور ہر اُس بالائی نوڈ کی چپ پر ٹیپ کریں جسے یہ نوڈ سننا چاہیے۔ منتخب چپ پر ٹیپ کرنے سے کنکشن ہٹ جاتا ہے۔
  3. اگر کوئی بالائی نوڈ روٹر ہو تو چپس کے نیچے روٹ کلیدیں کا بلاک ظاہر ہوتا ہے، جس میں ہر روٹر کنارے کے لیے ایک <node> سے روٹ کلید فیلڈ ہوتی ہے۔ وہ کلید درج کریں جس پر وہ کنارہ فائر کرتا ہے — فائل کے وجود والے روٹرز کے لیے true یا false، یا سوئچ کے لیے کیس کا نام۔

ہر ٹریگر نوڈ ایک داخلی نقطہ ہے۔ کوئی نوڈ کئی بالائی نوڈز سن سکتا ہے (فین اِن) اور کئی نیچے والوں کو فیڈ کر سکتا ہے (فین آؤٹ)، اور گراف کو حلقے سے پاک ہی رہنا چاہیے — ایڈیٹر میں کوئی چیز آپ کو حلقہ جوڑنے سے نہیں روکتی، اس لیے اپنا کام جانچ لیں۔

ٹرمینل سینٹینل کینوس سے فلٹر کر دیا جاتا ہے، اس لیے اُسے منتخب نہیں کیا جا سکتا۔ گراف بدلتے ہی ایڈیٹر اُسے ہر قابلِ رسائی سنک سے دوبارہ جوڑ دیتا ہے، اس لیے سیڈ شدہ Step کے بعد لگایا گیا کام پھر بھی چلتا ہے۔ خالی گراف (ایسا ٹریگر جس کے بعد کوئی کام والا قدم نہ ہو) ٹریگر کو خود فہرست کرتا ہے تاکہ رن فوراً مکمل ہو جائے۔

نوڈ منتخب کریں تاکہ اُس کا کنفیگ پینل کھل جائے۔ کون سی فیلڈز ظاہر ہوتی ہیں، یہ نوڈ کی باڈی پر منحصر ہے۔

ہر نوڈ میں لیبل، ان پٹ کلیدیں (کاما سے جدا اسٹیٹ کلیدیں جو اجرا کے وقت پڑھی جاتی ہیں) اور اعلیٰ کے تحت ریڈیوسر، ٹائم آؤٹ (ms)، دوبارہ کوششیں، ناکامی پر جاری رکھیں اور آؤٹ پٹ اسکیما ہوتے ہیں۔ listen اور join نوڈز اپنی قسم بھی اِن دونوں کے درمیان بدل سکتے ہیں۔

ایک ریپو اسکوپ منتخب کنندہ (کون سے ورک اسپیس ریپوز چیک آؤٹ کرنے ہیں؛ خالی کا مطلب کوئی نہیں)، ایک اسپیس کا نام اور ایک گفتگو بنائیں چیک باکس شامل کرتا ہے۔ جب وہ چیک باکس آن ہو تو گفتگو کا عنوان فیلڈ اُس اسٹریم کا نام دیتی ہے جس کے ساتھ کمرہ کھلتا ہے۔ ایجنٹ نوڈز اسی کمرے میں شامل ہوتے ہیں — وہ اپنا الگ کمرہ نہیں کھولتے۔

ایجنٹ (کون سا ایجنٹ ڈسپیچ کرنا ہے)، پرامپٹ ({{key}} سے اِن پٹس یا بالائی آؤٹ پٹس کا حوالہ دیں) اور آؤٹ پٹ کلید شامل کرتا ہے۔

ٹائم آؤٹ (ms) ملی سیکنڈز میں ہے، سیکنڈز میں نہیں — 900000 پندرہ منٹ ہیں۔ 900 درج کرنے سے قدم کو 0.9 سیکنڈ ملتے ہیں۔

پرامپٹ-ایجنٹ نوڈ جس گفتگو موڈ میں چلتا ہے، اُس کے لیے ایجنٹ نوڈ پر ایڈیٹر میں کوئی فیلڈ نہیں ہوتی۔ یہ کمرہ بنانے والے Open conversation نوڈ پر extras['mode'] (chat، plan یا review) کے ذریعے چلتی ہے (ڈیفالٹ review)۔ اُسے ایجنٹ قدم پر سیٹ کرنا نظر انداز کر دیا جاتا ہے۔ کلید عین مطابق میچ ہوتی ہے: کوئی اور ہجے خاموشی سے نظر انداز کر دی جاتی ہے۔

اسکرپٹ شامل کرتا ہے۔ کوئی ورکنگ ڈائریکٹری یا ماحول کی فیلڈ نہیں ہوتی، کیونکہ دونوں میں سے کوئی بھی کنفیگر نہیں کیا جا سکتا:

  • ایک رن میں ہر 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 کے ذریعے اُسے کسی چائلڈ کی طرف اشارہ کریں۔ کوئی ٹیمپلیٹ خود کو کال نہیں کر سکتا؛ ناکام یا منسوخ چائلڈ پیرنٹ قدم کو ناکام کر دیتا ہے، جو پھر اُس قدم کی دوبارہ کوشش اور ناکامی پر جاری رکھنے کی پالیسی کو فیڈ کرتا ہے۔

اِن پٹس کا اعلان کریں اور دستی رنز کی اجازت دیں

سیکشن کا عنوان “اِن پٹس کا اعلان کریں اور دستی رنز کی اجازت دیں”

دونوں ایڈیٹر ہیڈر میں دستی رن کے پیچھے ہیں۔

  1. دستی رن دبائیں۔
  2. دستی رن کی اجازت دیں آن کریں۔ یہ سوئچ فوراً محفوظ ہو جاتا ہے — یہ وہی manual ٹریگر قطار بناتا (یا حذف کرتا) ہے جس سے ٹیمپلیٹ رن لانچر میں ظاہر ہوتا ہے۔
  3. اگر حد مقرر کرنا چاہیں تو زیادہ سے زیادہ متوازی رنز سیٹ کریں (لامحدود کے لیے خالی چھوڑیں)۔ اضافی شروع کیے گئے رنز queued حالت میں انتظار کرتے ہیں جب تک کوئی سلاٹ خالی نہ ہو۔
  4. ہر اُس فارم فیلڈ کے لیے ان پٹ شامل کریں دبائیں جو دستی رن کو جمع کرنا چاہیے:
فیلڈ تفصیل
کلید وہ اسٹیٹ کلید جس کے تحت ویلیو محفوظ ہوتی ہے؛ اُس کا حوالہ {{key}} سے دیں
لیبل ڈسپلے لیبل (ڈیفالٹ کلید)
قسم متن، کثیر سطری متن، عدد، ٹوگل، منتخب، ریپوزٹری
آپشنز کاما سے جدا اختیارات، صرف منتخب کے لیے
ڈیفالٹ ویلیو پہلے سے بھری ویلیو
پلیس ہولڈر خالی فیلڈ کے اندر اشارے کا متن
مدد کا متن فیلڈ کے نیچے مددگار متن
ضروری یہ کہ رن فارم خالی ویلیو پر رکتا ہے یا نہیں

ریپوزٹری اِن پٹ ورک اسپیس کے ریپوز پر ایک منتخب کنندہ دکھاتا ہے اور رن پے لوڈ میں repo_id، repo_local_path، repo_full_name اور — جب ریپو کا GitHub ریموٹ ہو — repo_owner اور repo_name بھرتا ہے۔

  1. ڈائیلاگ میں محفوظ کریں دبائیں۔ اِن پٹ کی تبدیلیاں ڈرافٹ میں شامل ہو جاتی ہیں؛ ٹیمپلیٹ محفوظ کرنے پر وہ برقرار رہتی ہیں۔
  1. ایڈیٹر ہیڈر میں محفوظ کریں دبائیں۔ ایسا کرنے تک ہیڈر “غیر محفوظ تبدیلیاں” دکھاتا ہے۔
  2. واپس ترتیبات → ورک اسپیس → پائپ لائن ٹیمپلیٹس پر جائیں اور دیکھیں کہ ٹیمپلیٹ کی قطار کا سوئچ آن ہو۔ انجن غیر فعال ٹیمپلیٹ شروع کرنے سے انکار کرتا ہے اور غیر فعال ٹیمپلیٹ رن لانچر میں کبھی ظاہر نہیں ہوتا۔
  3. خودکار طور پر شروع کرنے کے لیے نوڈ لائبریری سے کوئی ٹریگر کینوس پر گھسیٹیں — دیکھیں پائپ لائن ٹریگرز سیٹ کریں۔