يستجيب الـ hook لحدث ما يحدث في Coroid. يمكنك اختيار حدث، وكتابة التعليمات بلغة بسيطة، وسيتم تشغيل الـ hook عند وقوع الحدث.
يمكن العثور عليها في المصنع، ضمن قسم التلقيات.
لإنشاء عنصر في قسم العمل الجديد: اختر خيار الأتمتة، ثم حدد خيار عند حدوث شيء ما. يوفر قسم العمل الجديد أحداث GitHub وأحداث Coroid. اطلع على التلقيات.
الأحداث التي يمكن الاستجابة لها
يتم تشغيل الـ hook فقط للحدث الذي ترسله جهة ما. ترسل Coroid معظم الأحداث المذكورة أدناه، بينما تُطلق بعضها أنظمةك الخاصة. أي حدث آخر محجوز؛ لا يعرضه المحرر، ويتم رفض إنشاء hook جديد له. إذا تم حفظ hook على حدث محجوز، فإن المحرر والقائمة يصنفانه على أنه لن يتم تشغيله، دون حذفه.
أحداث ترسلها Coroid
| الفئة | الأحداث |
|---|---|
| مهمة | تم إنشاؤه، تغيرت الحالة، اكتمل، فشل |
| الوكيل | بدأ، اكتمل، خطأ |
| المستودع | تم دفع التزام، تم إنشاء فرع، تم فتح pull request أو تحديثه أو دمجه، تم فتح مشكلة، تعليق يذكر Coroid |
| السباق | تم إنشاؤه، بدأ التخطيط، بدأ، تمت إضافة مهمة، تمت إزالة مهمة، بدأ المراجعة، اكتمل، تم إلغاؤه |
| الخطة | بدأت المرحلة، اكتملت، فشلت |
| الجدول الزمني | بدأ التشغيل، اكتمل التشغيل، فشل التشغيل |
| التقرير | بدأ، اكتمل، فشل |
| الجودة | بدأ الفحص، نجح أو فشل؛ لم يتم حله تلقائيًا |
| الترويج | تم طلبه، تمت الموافقة عليه، تم رفضه |
| الإصدار | تم إنشاؤه، تغير المرشح، تغيرت الملاحظات، تمت الموافقة على الملاحظات، تغير النطاق، اكتملت قائمة التحقق، تم تقييم البوابة، تم تجاوز البوابة، تمت الموافقة عليه، تم نشره، تم الرجوع به |
| النشر | في الانتظار، قيد التشغيل، نجح، فشل، تم إلغاؤه، تم التحقق منه يدويًا، تم التحقق من الرجوع يدويًا، اجتاز فحص الصحة، فشل فحص الصحة |
| المزامنة | تم تحديث المصدر الخارجي |
| Slack وTelegram | رسالة تتطابق مع مرشح التلقية |
الأحداث التي تطلقها أنظمةك الخاصة
| الفئة | الأحداث |
|---|---|
| التحليل | تم العثور على تبعية، تم العثور على مشكلة أمان، اكتمل التحليل |
| النشر الخارجي | بدأ، اكتمل، فشل |
لا ترسل Coroid هذه الأحداث. تقوم خط أنابيب CI أو أداة مسح أو أي نظام آخر تابع لك بإطلاق الـ hook عبر معرفه: حيث يتم استدعاء POST /api/v1/organizations/hooks/:id/dispatch
مع مفتاح حساب خدمة
الذي يحمل hooks:dispatch النطاق. يتم تشغيل الـ hook للحدث الذي تم حفظه عليه. يعرض المحرر هذه الأحداث تحت عنوان «يطلقها أنظمةك الخاصة».
الأحداث المحجوزة
لم يتم إرسالها أو إطلاقها بعد، لذا لا يعرضها المحرر:
| الفئة | الأحداث |
|---|---|
| مهمة | تغيرت المرحلة |
| الوكيل | تكرار، تم استدعاء الأداة |
| الخطة | تم إنشاؤه، اكتملت المرحلة، بدأت المراجعة النهائية، اكتملت المراجعة النهائية، قبل حدث pull request للخطة |
| الجدول الزمني | تم إنشاؤه، تم تفعيله، تم إيقافه |
| السباق | اكتمل التخطيط، اكتملت المهمة، تغير النطاق |
| الإصدار | في مرحلة التحضير، تم التحقق منه |
| الترويج | قبل حدث pull request للترويج |
| الجودة | غير متاح الفحص؛ بدأت عملية الإصلاح أو تمت محاولتها؛ بدأت إعادة التحقق؛ تم التوصل إلى توافق في الآراء |
مواعيد بدء وانتهاء العمل
ترسل الخطط والجداول الزمنية والتقارير وفحوصات الجودة والترويج والإصدارات حدثًا عند بدء العمل وحدثًا عند انتهائه. يمكن للـ hook الاستجابة لطريقة انتهاء العمل، ويمكن لنظامك قياس المدة التي استغرقها.
| العمل | يبدأ | ينتهي |
|---|---|---|
| الخطة | بدأت المرحلة: يتم إرسال الأولى عند بدء تنفيذ الخطة | اكتمل، فشل |
| الجدول الزمني | بدأ التشغيل | اكتمل التشغيل، فشل التشغيل |
| التقرير | بدأ | اكتمل، فشل |
| فحص الجودة | بدأ الفحص | نجح، فشل، لم يتم حله تلقائيًا |
| الترويج | تم طلبه | تمت الموافقة عليه، تم رفضه |
| الإصدار | تم إنشاؤه | تم نشره، تم الرجوع به |
يسجل كل حدث من هذه الأحداث توقيت حدوثه في occurredAt. كما يسجل الحدث الذي يوضح كيف انتهى العمل توقيت بدء العمل في
startedAt، والمدة التي استغرقها في durationMs. ذلك startedAt هو
occurredAt من حدث البدء، لذا فإن الاثنين يتطابقان دائمًا. الوقت الذي تُقضى فيه العملية في حالة توقف يُحتسب ضمن المدة.
يتم إرسال كل حدث مرة واحدة عند حفظ التغيير. التغيير الذي يتم إلغاؤه لا يُرسل أي شيء، وإعادة المحاولة لا تُرسل شيئًا مرتين. أما الحدث النهائي فيتم إرساله فقط للعمل الذي بدأ: عملية تنفيذ الجدول الزمني التجريبية لا تُرسل شيئًا، وكذلك التقرير الذي تم إلغاؤه قبل بدءه.
ما يحمله كل حدث، بخلاف الأوقات:
| حدث | يتم إرساله عندما | الحقول |
|---|---|---|
| بدء مرحلة التخطيط | يبدأ تنفيذ الخطة (مرحلتها الأولى)، ولاحقًا عندما تبدأ المهمة الأولى لمرحلة أخرى. | planId، plan (id, title), phase (id, sequence, title), firstPhase، executionStartedAt |
| اكتمال الخطة أو فشلها | ينتهي تنفيذ الخطة. الخطة التي تفشل أثناء عملية التخطيط لا تُرسل أي شيء. | planId، plan، status، executionStartedAt |
| بدء تشغيل الجدول الزمني | يبدأ تشغيل الجدول الزمني | scheduleId، runId، schedule (id, name), run (سبب التشغيل، عملية التنفيذ الأصلية) |
| اكتمال تشغيل الجدول الزمني أو فشله | تنتهي العملية | نفس الحقول، status، و tasksCreated أو error |
| بدء توليد التقرير | يبدأ توليد التقرير. عملية الإيقاف والاستئناف تحافظ على نفس وقت البدء. | reportId، report (id, type, title) |
| اكتمال التقرير أو فشله | يتم حفظ التقرير، أو يفشل أو يتم إلغاؤه. | نفس الحقول، و tokensUsed، costUsd و hasActionableFindings، أو error |
| بدء فحص الجودة | يبدأ فحص الجودة | qualityRunId، check (subject, trigger, policy version, commit) |
| نجاح أو فشل فحص الجودة | يصل الفحص إلى قراره. | نفس الحقول، decision، redoCause، failedExpectationIds |
| حالة حل مشكلات الجودة تلقائيًا غير محلولة | Coroid يتوقف عن محاولة إصلاح ما اكتشفه الفحص. | qualityRunId، workItemType، workItemId، reason |
| طلب الترقية | يتم إنشاء ترقية | promotionId، laneId، promotion (title, status, branches, pull request) |
| الموافقة على الترقية | يتم دمج الترقية: الموافقة في Coroid، الدمج الإجباري، الدمج لدى مزود الخدمة أو الشحن في إصدار. | نفس الحقول، approval، approvedBy، forceReason |
| رفض الترقية | يطلب المراجع إجراء تغييرات | نفس الحقول، reason، requestedBy، comment |
| نشر الإصدار | ينجح النشر الأول للإصدار في بيئة الإنتاج. | releaseId، version، commitSha |
| تراجع الإصدار | يستبدل التراجع الإصدار في بيئة معينة. | releaseId، version، rolledBackToReleaseId |
الأحادث المتعلقة بالعمل في مشروع ما تحمل أيضًا projectId، لذا فإن الربط المحدود بمشروع واحد
يُفعّل فقط لتلك المشاريع. إذا كان الربط هو من أنشأ العمل، فإن هذه الأحادث
تُحتسب ضمن عمق سلسلة ذلك الربط.
المحفزات والوجهات
لكل عملية أتمتة مصدر محفز، وهو مصدر الأحادث الخاصة بها، و وجهة تحدد ما يحدث عند تشغيلها. اثنتان من الوجهات تحول الحدث إلى عمل.
| مصدر المحفز | الأحداث |
|---|---|
| حدث سير العمل | الأحادث في Coroid، كما في الجدول أعلاه |
| GitHub | فتح طلب سحب، تحديثه أو دمجه؛ فتح مسألة؛ تعليق يذكر Coroid |
| Slack | رسالة تتطابق مع مرشح الأتمتة |
| Telegram | رسالة تتطابق مع مرشح الأتمتة، مثل تلك التي تبدأ بـ /coroid |
| Jira | مسألة جديدة |
| الوجهة | ما يحدث |
|---|---|
| ربط | ينفذ تعليماتك، للقراءة فقط، كما هو موضح في هذه الصفحة. |
| تأهيل العمل | يسجل الحدث كطلب. بمجرد اجتياز عملية التأهيل، يقوم Coroid بإنشاء العمل. |
| Coroid Check | تم إلغاؤه. مراجعة Coroid لكل pull request تُحدد في ضبط الجودة؛ تم إيقاف تشغيل العمليات الأتمتة الحالية. |
تحتاج أحداث GitHub إلى تطبيق GitHub. التعليق الذي يذكر Coroid لا يُحتسب إلا عندما يكون لدى كاتبه صلاحيات كتابة على المستودع. انظر GitHub.
تبدأ مهمة من عملية تأهيل العمل بمفردها فقط عندما يكون مؤلف الحدث موثوقًا به: مؤلف GitHub pull request، المسألة أو التعليق الذي لديه صلاحيات كتابة على المستودع. مؤلفي Slack وTelegram وJira غير موثوق بهم، لذا تنتظر مهامهم من يبدأها. انظر متى يبدأ العمل.
تصل المسائل الجديدة في Jira إلى Coroid فقط عبر ويبهوك Jira الخاص به. يقبل الويبهوك فقط التسليمات الموقعة بسرّ الويبهوك المُعدّ لـ Coroid، وفقط للمسائل الجديدة، وعندما يتطابق مفتاح مشروع Jira مع مشروع Coroid. على coroid.ai لم يتم إعداد ويبهوك Jira بعد، لذا لا يتلقى مشغّل Jira أي أحداث؛ يمكنك استيراد مسائل Jira بدلاً من ذلك. حيثما يتم إعداد الويبهوك، تذهب المسألة الجديدة إلى عمليات الأتمتة في مشغّل Jira، مثل مصدر طلب Jira في قسم ضبط الجودة، الذي يُنشئ مسائل من الأنواع والأولويات التي تختارها للتأهيل. بدون وجود أتمتة في المشغّل، لا تُنشئ المسألة الجديدة أي شيء. لا تبدأ العمليات من Jira تلقائيًا. انظر أدوات تتبع المسائل.
للقراءة فقط بشكل افتراضي
تحلل الوصلات وتقدم تقارير عنها. يمكنها إنشاء أعمال تابعة؛ لكنها لا تعدّل كودك مباشرة.
هذا الإعداد الافتراضي هو ما يجعل اعتمادها آمنًا. الأتمتة التي تعدّل الكود استجابةً لحدث ما تعمل في اللحظة الأقل احتمالًا لوجود إشراف عليها. الوصلة التي تفتح مهمة تنتج نفس النتيجة عبر المسار المعتاد — مواصفة، خطة، تحقق، مراجعة، pull request.
- جدولةوقت
- أتمتة الأحداثعندما يحدث شيء ما
مهمة عادية
مواصفات، خطة، بناء، تحقق، مراجعة. تستخدم مساحة للوكيل؛ حدد لها أولوية أقل.
P2P3طلب سحب من pull request
لا يمكنه دمج نفسه أو الالتزام بفرعك الأساسي.
أنت تقرّ
كتابة تعليمات جيدة
تُعالج تعليمات الوصلات بواسطة نموذج، لذا تبدو كتعليمات موجهة لزميل بدلاً من كونها كودًا. معيار الجودة مماثل لما هو مطلوب لـ مواصفة: حدد ما يجب مراقبته، وما هو المهم، وما يجب فعله.
كن دقيقًا بشأن حالة «عدم فعل أي شيء». بدون ذلك، ستجد الوصلة دائمًا ما تقوله كلما تم تشغيلها، والوصلات التي تعمل باستمرار هي وصلات يتوقف الناس عن قراءتها.
ضوابط أمان
توجد ثلاث حمايات لأن الأتمتة القائمة على الأحداث تفشل بطرق متوقعة:
حدود معدل التنفيذ. لكل دقيقة، وكل ساعة، وكل يوم، ويمكن تهيئتها لكل وصلة. وإلا، قد تُشغّل الوصلة المرتبطة بحدث ذي تردد عالٍ مئات المرات خلال عملية دمج نشطة.
عمق السلسلة. يمكن للوصلات تشغيل أحداث تؤدي إلى تشغيل وصلات أخرى. يوقف الحد الأقصى لعمق السلسلة حدوث حلقة لا نهائية.
أذونات الأداة. ما يمكن للوصلة الوصول إليه يتم التحكم فيه — الوصول للقراءة فقط، ومكالمات MCP، وإنشاء المهام تخضع جميعها لقواعد منفصلة.
أذونات
يمكن للمالكين والمشرفين فقط إنشاء وصلة أو تغييرها أو اختبارها أو حذفها؛ بينما يمكن لجميع الأعضاء رؤية الوصلات وتاريخ تنفيذها. وبما أن الوصلة تعمل بمستوى المنظمة، فإن هذا التفاوت مقصود.
مراقبتها
تُدرج صفحة كل وصلة في المنصة عمليات التشغيل التي قامت بها وما فعلته خلال آخر 30 يومًا: عمليات التشغيل، والإخفاقات، والتكلفة. كما توجد كل عمليات الأتمتة في قسم إعدادات → نشاط، مع تصفية النتائج حسب فئة الأتمتة. تحقق من عمليات التشغيل بعد تفعيل وصلة جديدة — فوضع الإخفاق ليس خطأً، بل هو التشغيل المستمر دون إنتاج أي نتيجة تستدعي تدخلاً من أحد.
الوصلات والجداول الزمنية
| آلية العمل | مُحفَّز بواسطة |
|---|---|
| وصلة | حدث منصة |
| جدول زمني | وقت |
كلاهما أتمتة، وتُدرج معًا في المنصة. انظر عمليات الأتمتة.