Abdelrhman

متحكم CI مستضاف ذاتيًا
0 مشاهدات

متحكم CI مستضاف ذاتيًا

متحكم مفتوح المصدر يشغّل عامل Scaleway لمهام GitHub Actions المنتظرة، ويوقفه عند الخمول.

تفاصيل المشروع

Self-Hosted CI متحكم مفتوح المصدر لوظائف GitHub Actions التي تحتاج إلى منفذ تشغيل مستضاف ذاتيًا. يحدد مشرف المستودع الوسوم المطلوبة للوظيفة، فيشغل المتحكم خادم Scaleway عند وجود عمل، ويوقفه بعد فترة خمول.

المشكلة

يستهلك منفذ التشغيل الذي يبقى نشطًا بين الوظائف موارد حسابية حتى عند توقف العمل. وفي المقابل، يفقد إنشاء خادم جديد لكل وظيفة فائدة الاحتفاظ بالآلة وقرصها. يحتفظ هذا النظام بالخادم موردًا متوقفًا، ويشغله للوظائف المنتظرة، ويسجل منفذ GitHub مؤقتًا لكل وظيفة.

الميزات الأساسية

  • يستقبل إشعارات workflow_job من GitHub وينتقي الوظائف ذات وسوم التشغيل المطلوبة.
  • يتحقق من توقيع الإشعار قبل تعديل حالة الطابور.
  • يمنع تكرار الوظائف المنتظرة ويحفظ حالة المتحكم في ملف JSON محلي.
  • ينشئ خادم Scaleway باستخدام cloud-init، أو يعثر على خادم سابق ويعيد مزامنة حالته.
  • يشغل الخادم عند الحاجة ويوقفه بعد مدة خمول محددة.
  • يسلم الوظيفة إلى الخادم عبر مسار داخلي محمي، ويتلقى إشعار إتمامها عبر مسار آخر.
  • يطلب رموز تثبيت GitHub App وتسجيل منفذ التشغيل للمستودع المعني.
  • يقدم مسار فحص صحة يعرض طول الطابور وحالة طاقة الخادم والوظيفة الحالية.

البنية التقنية

يعمل المتحكم باستخدام Node.js وExpress ويستمع على العنوان المحلي. تصل أحداث GitHub إلى مسار الويب عبر الوكيل العكسي المخصص للنشر. يحفظ المتحكم الوظائف وبيانات الخادم في data/state.json بصلاحيات ملف مقيدة. يستدعي أداة Scaleway CLI لإنشاء الخادم وتشغيله وفحصه وإيقافه. يجهز cloud-init أدوات العمل وحلقة استقصاء تعمل عبر systemd. يطلب الخادم الوظيفة التالية، ويسجل منفذ GitHub Actions مؤقتًا، وينفذ الوظيفة، ثم يبلغ بإتمامها. توفر مصادقة GitHub App رموزًا قصيرة العمر بدل حفظ رمز وصول شخصي.

نقاط هندسية

  • يستخدم فحص توقيع HMAC ورمز Bearer الداخلي مقارنة ثابتة الزمن.
  • يفحص المتحكم الإعدادات المطلوبة عند بدء التشغيل، ويقصر الاستماع على الواجهة المحلية.
  • تبقى حالة الطابور بعد إعادة تشغيل المتحكم بفضل ملف الحالة المحلي المقيد.
  • يستطيع المتحكم تبني خادم أُنشئ سابقًا وإعادة مطابقة حالته بعد إعادة التشغيل.
  • يعني الإيقاف عند الخمول تغيير حالة الطاقة؛ إذ يبقى الخادم متاحًا للتشغيل عند وصول وظيفة لاحقة.

معرض الصور

No media available for this project.

آراء العملاء

آراء أشخاص استخدموا هذا المشروع أو شاركوا في تطويره.

شارك تجربتك مع هذا المشروع