تخطَّ إلى المحتوى

إنشاء قالب خط أنابيب

تُكتَب قوالب خطوط الأنابيب في إعدادات مساحة العمل. عنصر خطوط الأنابيب في الشريط الجانبي لمساحة العمل هو طابور التشغيلات لا قائمة القوالب، ولا إجراء فيه لإنشاء قالب.

لما يعنيه كل نوع خطوة ومفتاح جسم وحقل إعداد، انظر أنواع خطوات خط الأنابيب.

  1. انتقل إلى الإعدادات ← مساحة العمل ← قوالب خطوط الأنابيب (/workspaces/<workspace-id>/settings/pipelines).
  2. انقر قالب جديد.

لا حوار للمعرّف. يفتح المحرّر فورًا على هيكل مبذور باسم خط أنابيب جديد، وبمعرّف يُخصَّص تلقائيًا (pipeline_1 ثم pipeline_2، …). انقر العنوان في الترويسة لإعادة تسميته.

اللوحة ليست فارغة: عقدة دخول Trigger، وعقدة وكيل موجّه بعنوان Step، وحارس terminal يختم التشغيل. الحارس غير مرسوم. يعيد المحرّر توصيل ذلك الطرف المخفي إلى كل عقدة بلا مخرج يمكن بلوغها، فالعمل الذي توصله بعد Step يبقى يعمل.

يبقى الشريط الجانبي مكتبة العقد على يسار المحرّر. صفِّها بمربع البحث في العقد واسحب عنصرًا إلى اللوحة. تستقر العقدة حيث تفلتها، بلا اتصال وارد.

عقدة اللوحة نوع الخطوة ما تفعله
سكربت Bash listen يشغّل سكربت صدفة مع استبدال {{state}}، بلا إرسال وكيل
فتح محادثة listen يفتح المساحة الظاهرة الوحيدة للتشغيل وسحبها، وتنضم عقد الوكيل إلى هذه الغرفة
استنساخ فرع طلب السحب listen يكتشف فرع رأس طلب السحب عبر gh pr view ويستنسخه في دليل التشغيل
نشر تعليق على طلب السحب listen ينشر النتائج المجمَّعة على طلب السحب كتعليق مراجعة على GitHub
مراجع (موجّه) listen يرسل وكيل مراجعة متخصصًا، ويُعلَّق حتى يسلّم الوكيل نتيجته
تجميع (دمج) join ينتظر عدة فروع سابقة، ثم يطلب من وكيل تجميع مخرجاتها
موجّه مخصّص listen عقدة عامة يحركها موجّه، وتمر عبر جسم promptAgent
النشر في مساحة listen يرسل رسالة إلى مساحة مراسلة
شرط / تفريع (router) router يفرّع المسار حسب قيمة في الحالة
إن وُجد ملف (router) router يوجّه "true" حين يوجد مسار تحت النسخة، وإلا "false"
وجود أي ملف (router بـ OR) router يوجّه "true" حين يوجد أي مسار من القائمة
كل الشروط (router بـ AND) router يوجّه "true" فقط حين يوجد كل مسار في القائمة
إرسال الفريق listen يرسل فريقًا كاملًا ويُعلَّق حتى ينتهي
بوابة الموافقة listen يتوقف انتظارًا لقرار موافقة
لكل عنصر (map) forEach يصيغ موجّهًا لكل عنصر، ثم يرسل الوكيل مرة واحدة بهذه الموجّهات مضمومة
استدعاء خط أنابيب فرعي listen يشغّل قالبًا آخر كخطوة متداخلة
تنظيف أشجار العمل listen يزيل أشجار العمل المعزولة القديمة، بشكل حتمي وبلا إرسال وكيل

تجمعها المكتبة تحت التدفق والمنطق ومراجعة PR والوكلاء والمراسلة والكود. لا توجد مجموعة Demo.

لكل عقدة عمل مقبض إخراج دائري على حافتها اليمنى. اسحب من ذلك المقبض إلى عقدة أخرى لوصلها. مشغّلات البدء كذلك: لكل واحد مقبضه، فسلك يخرج من جدولة لا يخرج معه من تشغيل يدوي. انقر إضافة خطوة (+) بعد العقدة مباشرة لتدرج نوعًا بعدها. مرّر المؤشر فوق منتصف حافة قائمة وانقر × لفصل الاتصال.

تُحرَّر الاتصالات أيضًا من العقدة التي تستقبلها:

  1. حدّد العقدة التالية. تفتح لوحة إعداداتها على اليمين.
  2. انزل إلى المشغّلات من وانقر شريحة كل عقدة سابقة ينبغي لهذه العقدة أن تستمع إليها. النقر على شريحة محددة يزيل الاتصال.
  3. إن كانت عقدة سابقة من نوع router، يظهر قسم مفاتيح التوجيه تحت الشرائح، وفيه حقل مفتاح التوجيه من <عقدة> لكل حافة router. أدخل المفتاح الذي تُطلقه تلك الحافة: true أو false لعقد وجود الملف، أو اسم الحالة لوضع تفريع.

كل عقدة مشغّل نقطة دخول. قد تستمع العقدة إلى عدة خطوات تسبقها وتغذّي عدة خطوات تليها، ويجب أن يبقى المخطط غير حلقي. لا شيء في المحرّر يمنع توصيل حلقة، فتحقق من عملك.

حارس terminal مستبعد من اللوحة، فلا يمكن تحديده. يعيد المحرّر توصيله إلى كل عقدة بلا مخرج يمكن بلوغها كلما تغيّر المخطط، فالعمل الذي توصله بعد عقدة Step المبذورة يبقى يعمل. المخطط الفارغ (مشغّل بلا خطوات عمل تليه) يدرج المشغّل نفسه حتى يكتمل التشغيل فورًا.

حدّد عقدة لتفتح لوحة إعداداتها. الحقول التي تظهر تعتمد على جسم العقدة.

لكل عقدة التسمية ومفاتيح الإدخال (مفصولة بفواصل) (مفاتيح الحالة التي تُقرأ وقت التنفيذ)، وتحت متقدم: المخفِّض والمهلة (مللي ثانية) ومحاولات الإعادة والمتابعة إذا فشلت هذه الخطوة ومخطط الإخراج (JSON). تستطيع عقد listen وjoin تبديل النوع بينهما.

تضيف منتقي المستودعات المطلوب استنساخها (مستودعات مساحة العمل التي تُسحَب، والفراغ يعني لا شيء)، واسم المساحة، وخانة فتح محادثة فيها. حين تُفعَّل تلك الخانة، يسمّي حقل اسم المحادثة المجرى الذي تُفتح به الغرفة. عقد الوكيل تنضم إلى هذه الغرفة، ولا تفتح غرفة خاصة بها.

تضيف الوكيل (الوكيل الذي يُرسَل)، وقالب الموجّه (استخدم {{key}} للإشارة إلى المدخلات أو مخرجات الخطوات السابقة)، ومفتاح الإخراج.

المهلة (مللي ثانية) تُقاس بال_مللي ثانية_ لا بالثواني. 900000 يساوي 15 دقيقة. إدخال 900 يمنح الخطوة 0.9 ثانية.

وضع المحادثة الذي تعمل تحته عقدة وكيل الموجّه ليس له حقل في المحرّر على عقدة الوكيل. يُحمَل في extras['mode'] (chat أو plan أو review) على عقدة فتح محادثة التي أنشأت الغرفة (الافتراضي review). ضبطه على خطوة وكيل يُتجاهل. يُطابَق المفتاح حرفيًا، وأي كتابة أخرى تُتجاهل بصمت.

تضيف سكربت Bash. لا حقول لدليل العمل ولا للبيئة، فكلاهما غير قابل للضبط:

  • تشترك كل خطوة bash في التشغيل في دليل العمل <cc_root>/pipelines/<runId>/.
  • يُحقَن GITHUB_TOKEN من مخزن بيانات الاعتماد، فتعمل gh و git clone https://x-access-token:$GITHUB_TOKEN@… بلا إعداد.
  • يُطلَق السكربت بوصفه الملف التنفيذي الحرفي bash، فيجب أن يكون bash على PATH لمضيف الخادم. هذا اعتبار يخص Windows.

تقيّم عقدة router شرطًا وتعيد مفتاح توجيه. يُطلق المحرّك الحافة التالية التي يطابق مفتاح توجيهها فقط، ويعلّم سائر الفروع متخطاة.

تحديد عقدة router يستبدل حقل مفتاح الإخراج بمحرّر الشرط. اختر أحد أوضاعه الأربعة:

  • وجود ملف/ملفات — أي منها: يوجّه "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. لا يستطيع القالب استدعاء نفسه. التشغيل الفرعي الفاشل أو الملغى يُفشل خطوة الأب، فتُطبَّق عندئذ سياسة إعادة المحاولة والمتابعة عند الفشل الخاصة بتلك الخطوة.

إعلان المدخلات والسماح بالتشغيل اليدوي

قسم بعنوان “إعلان المدخلات والسماح بالتشغيل اليدوي”

كلاهما خلف تشغيل يدوي في ترويسة المحرّر.

  1. انقر تشغيل يدوي.
  2. فعّل السماح بالتشغيل اليدوي. يُحفَظ هذا المفتاح فورًا، فهو ينشئ (أو يحذف) صف المشغّل manual الذي يجعل القالب يظهر في صفحة التشغيل.
  3. اضبط الحد الأقصى للتشغيلات المتوازية إن أردت سقفًا (اتركه فارغًا لغير المحدود). البدايات الزائدة تنتظر في حالة queued حتى يتحرر مكان.
  4. انقر إضافة مدخل لكل حقل ينبغي أن يجمعه التشغيل اليدوي:
الحقل الوصف
المفتاح مفتاح الحالة الذي تُخزَّن تحته القيمة، ويُشار إليه بـ {{key}}
التسمية تسمية العرض (الافتراضي هو المفتاح)
النوع نص، نص متعدد الأسطر، رقم، مفتاح تبديل، قائمة اختيار، مستودع
الخيارات (مفصولة بفواصل) خيارات مفصولة بفواصل، لقائمة الاختيار فقط
القيمة الافتراضية قيمة مملوءة مسبقًا
النص النائب نص التلميح داخل الحقل الفارغ
نص المساعدة نص مساعد تحت الحقل
مطلوب هل يمنع نموذج التشغيل الإرسال حين تكون القيمة فارغة

مدخل مستودع يعرض منتقيًا لمستودعات مساحة العمل، ويملأ repo_id وrepo_local_path وrepo_full_name، وإن كان للمستودع بعيد على GitHub يملأ أيضًا repo_owner وrepo_name في حمولة التشغيل.

  1. انقر حفظ في الحوار. تُدمَج تعديلات المدخلات في المسودة، وتُحفَظ حين تحفظ القالب.
  1. انقر حفظ في ترويسة المحرّر. تعرض الترويسة «تغييرات غير محفوظة» إلى أن تفعل ذلك.
  2. ارجع إلى الإعدادات ← مساحة العمل ← قوالب خطوط الأنابيب وتأكد أن مفتاح صف القالب مفعّل. يرفض المحرّك بدء قالب معطّل، والقالب المعطّل لا يظهر في صفحة التشغيل.
  3. لبدء التشغيل تلقائيًا، اسحب مشغّلًا من مكتبة العقد إلى اللوحة. انظر إعداد مشغّلات خط الأنابيب.