إعداد خطاف الويب للمستودع
تستخدم تعليمات PAT/OAuth هنا ويب هوك لكل مستودع. تستخدم اتصالات GitHub App ويب هوك مركزيًا واحدًا وتعد عبر نافذة التطبيق.
يمكن أن يتلقى Repovio خطافات الويب الموقعة لمزامنة المستودع المتعقب في وقت أقرب من الفاصل الزمني للاستقصاء العادي. لا يقوم مطلقًا بإنشاء أو تحديث أو حذف أو اختبار خطافات الويب من خلال واجهات برمجة تطبيقات الموفر. يقوم المسؤول بتكوين كل خطاف ويب للمستودع يدويًا في GitHub أو GitLab أو Forgejo أو Gitea.
افتح المستودعات، وحدد مستودعًا متعقبًا، واستخدم بطاقةRepository webhook الخاصة به. تعرض البطاقة عنوان URL لرد الاتصال الخاص بالمستودع، وتقوم بإنشاء سر التوقيع أو قبوله، والإبلاغ عن آخر تسليم تم قبوله. Repovio لا يرسل هذا التكوين أبدًا إلى الموفر.
تعد خطافات الويب بمثابة تحسين، وليست مصدرًا للحقيقة. يجب أن تحدد الحمولة الموقعة المستودع المحدد بواسطة عنوان URL لرد الاتصال. يقوم Repovio بعد ذلك بقراءة البيانات الحالية من خلال محول موفر القراءة فقط الذي تم تكوينه. تتضمن عمليات التسليم المقبولة مزامنة دائمة للمستودع؛ يتم دمج التسليمات المستلمة خلال 15 ثانية. الفاصل الزمني للاستقصاء الاحتياطي الافتراضي هو 30 دقيقة.
قم بتكوين خطاف ويب للمستودع
- أضف المستودع إلى Repovio وافتح بطاقة Repository webhook الخاصة به.
- انسخ عنوان URL لرد الاتصال.
- أنشئ سر توقيع فريدًا وعالي الإنتروبيا أو الصق رمز التوقيع الدقيق الذي يوفره الموفر. لا تقم مطلقًا بإعادة استخدام رمز الوصول أو سر مستودع آخر.
- احفظ السر. يقوم Repovio بتشفيره باستخدام AES-256-GCM ولا يُرجعه أبدًا من خلال واجهة برمجة التطبيقات (API).
- قم بتكوين عنوان URL لرد الاتصال والسر في إعدادات موفر هذا المستودع.
- حافظ على تمكين التحقق من TLS وأرسل تسليمًا تجريبيًا.
تستخدم عمليات الاسترجاعات الثابتة /api/webhooks/<provider>/<repository-id>. تتوفر أيضًا عمليات الاسترجاعات ذات الإصدار
/api/v1/webhooks/<provider>/<repository-id>. لم تعد عناوين URL لرد الاتصال بحساب الموفر من Repovio 0.2.9 والإصدارات
الأقدم مقبولة. بعد الترقية، أعد إنشاء كل خطاف ويب باستخدام رد اتصال المستودع الخاص به وسر المستودع الجديد.
تقوم عمليات التسليم الناجحة بإرجاع HTTP 202 مع { "accepted": true }. تقوم معرفات تسليم الموفر المتكررة بإرجاع
{ "accepted": true, "duplicate": true } ولا تقوم بإدراج مزامنة أخرى. يتم رفض المستودعات غير المعروفة أو المعطلة،
وحسابات الموفر المعطلة، والأسرار المفقودة، والتوقيعات غير الصالحة، ومعرفات مستودع الموفر غير المتطابقة، ومعرفات التسليم
المفقودة دون الكشف عن تفاصيل التكوين.
تستمر المزامنة في قائمة الانتظار بعد إعادة تشغيل واجهة برمجة التطبيقات (API). تستخدم المثيلات المتعددة عقود إيجار قاعدة البيانات ولا تقوم بمزامنة حساب الموفر نفسه بشكل متزامن. تعمل رؤوس الحد الأقصى للسعر على تأخير العمل للحساب المتأثر، بينما تعالج عمليات إعادة المحاولة المقيدة حالات الفشل العابرة.
إجراءات GitHub
- افتح الإعدادات → Webhooks في المستودع واخترAdd webhook.
- استخدم
https://repovio.example.com/api/webhooks/github/<repository-id>كعنوان URL للحمولة. - حدد
application/json، والصق سر المستودع، واشترك في تشغيل سير العمل (workflow_run). - حافظ على تمكين التحقق من طبقة المقابس الآمنة (SSL) واحفظ خطاف الويب.
يتحقق Repovio من X-Hub-Signature-256 على الجسم الخام ويستخدم X-GitHub-Delivery للعجز الجنسي. انظر GitHub
وثائق حدث webhook.
خطوط الأنابيب GitLab
- افتح الإعدادات → Webhooks للمشروع وحددإضافة خطاف ويب جديد.
- استخدم
https://repovio.example.com/api/webhooks/gitlab/<repository-id>كعنوان URL. - أنشئ رمز التوقيع المميز واحفظ قيمته الكاملة، بما في ذلك
whsec_، في بطاقة مستودع Repovio. - حدد أحداث المسار، وحافظ على تمكين التحقق من طبقة المقابس الآمنة (SSL)، ثم احفظ تسليمًا تجريبيًا وأرسله.
يتحقق Repovio من توقيعات Webhooks القياسية HMAC-SHA256 ويفضل webhook-id لعدم الكفاءة. تظل رؤوس X-Gitlab-Token
وX-Gitlab-Event-UUID القديمة مدعومة للمثيلات الأقدم. انظر GitLab
وثائق الويب هوك.
إجراءات Forgejo
- افتح الإعدادات → Webhooks الخاصة بالمستودع وأضف خطاف الويبForgejo JSON الأصلي.
- استخدم
https://repovio.example.com/api/webhooks/forgejo/<repository-id>كعنوان URL المستهدف. - الصق سر المستودع وحدد أحداث الدفع بالإضافة إلى أي أحداث إجراءات متاحة.
- حافظ على تمكين التحقق من TLS واحفظ خطاف الويب.
يتحقق Repovio من X-Forgejo-Signature ويستخدم X-Forgejo-Delivery للعجز. تظل الرؤوس المتوافقة مع Gitea مقبولة للتوافق
مع Forgejo. انظر Forgejo وثائق الويب هوك.
إجراءات Gitea
- افتح الإعدادات → Webhooks الخاصة بالمستودع وأضف خطاف الويبGitea JSON الأصلي.
- استخدم
https://repovio.example.com/api/webhooks/gitea/<repository-id>كعنوان URL المستهدف. - الصق سر المستودع وحدد دفع الأحداث بالإضافة إلى أي أحداث سير عمل متاحة.
- حافظ على تمكين التحقق من TLS واحفظ خطاف الويب.
يتحقق Repovio من X-Gitea-Signature على الجسم الخام ويستخدم X-Gitea-Delivery للعجز الجنسي. انظر Gitea
وثائق الويب هوك.
استكشاف الأخطاء وإصلاحها
401يعني أن Repovio لم يتمكن من التحقق من المستودع أو نوع الموفر أو السر أو التوقيع أو معرف مستودع الحمولة النافعة أو معرف التسليم. قم بتأكيد UUID لمستودع رد الاتصال والسر الدقيق.- يتم توقع
202معduplicate: trueعندما يقوم الموفر بإعادة محاولة التسليم. - يؤدي التسليم الناجح فقط إلى مزامنة للقراءة فقط؛ ولا يقوم أبدًا بتعديل سير عمل الموفر.
- تحقق من
/api/healthلمعرفة حالة مزامنة الموفر المستمرة. - اضبط
SCHEDULER_SYNC_INTERVAL_SECONDS=1800على 30 دقيقة احتياطية. - يحتفظ
SCHEDULER_ENABLED=falseبالطلبات الموضوعة في قائمة الانتظار ولكنه يوقف مؤقتًا عملية وضع قائمة الانتظار الاحتياطية ومعالجتها.