CrestVPS

self hosted github runner

CI and build runners

أنشئات تُنجز قبل أن تنتقل من التبويب.

ما سننشره

‏44.03 €/شهريًا

‏62.90 €30% سنوي

دقائق CI المستضافة تُحسب، وتُوضع في قوائم انتظار، وبطيئة، ويصبح منحنى التكلفة قبيحًا بمجرد أن يكون الفريق منتجًا. زوج من مثيلات النوى المخصصة مع NVMe سريع سيتفوق على معظم الطبقات المستضافة وتكلفته مبلغ ثابت كل شهر بغض النظر عن عدد مرات الدفع. التصور الافتراضي المتداخل مضمن، لذا فإن Docker-in-Docker ومجموعات الاختبار القائمة على KVM تعمل دون حل بديل.

لماذا هذا التكوين

TORQUE يمنحك عدد النوى، وGen5 NVMe يمنحك إنتاجية القطع الأثرية، والمحاكاة الافتراضية المتداخلة لا تكلف شيئًا. سجّل العدائين على منصة البناء واحذف الخطة المستضافة.

ما سننشره

PlanTORQUE T2
vCPU8 (dedicated)
RAM32 GB
التخزين400 GB
الصورةUbuntu Server 24.04 LTS

الحجم

نواتان مخصصتان و4 جيجابايت لكل وظيفة متزامنة هي الحد الأدنى؛ اللغات المترجمة تريد 4 أنوية و8 جيجابايت. عقدة TORQUE بـ32 نواة تشغل إذن 8 وظائف ثقيلة أو حوالي 14 وظيفة خفيفة، وليس 32. مساحة القرص المؤقتة أهم من كليهما — خصص 30-50 جيجابايت لكل وظيفة متزامنة على NVMe لطبقات الصور وأشجار الاعتماديات ومخرجات البناء. أضف نواة لكل عقدة إذا كانت الوظائف تحتاج محاكاة افتراضية متداخلة. وقت انتظار قائمة الانتظار، وليس مدة الوظيفة، يخبرك متى تضيف عقدة.

المحاكاة الافتراضية المتداخلة، ومتى تحتاجها

معظم تشغيل CI يعمل في حاوية. ثلاث حالات تحتاج مراقب أجهزة حقيقي داخل الضيف: اختبار صور الأجهزة الافتراضية وcloud-init، تشغيل محاكيات Android أو الأنظمة المدمجة مع تسريع KVM، وأي وظيفة ينفذ فيها طلب سحب غير موثوق كودًا يجب ألا يصل إلى العداء. TORQUE يكشف SVM للضيف، لذا يعمل KVM داخل VPS الخاص بك ويعمل المحاكي بسرعة أصلية بدلاً من المحاكاة البرمجية، وهو فرق يقارب عشرة أضعاف في مجموعات اختبار Android. التكلفة هي نواة واحدة من الحمل الزائد للمراقب الخارجي وقرص أبطأ قليلاً في الضيف الداخلي. خصص الميزانية لكليهما.

مسار القطع الأثرية هو عادة عنق الزجاجة

حلّل خط أنابيب بطيئًا وستجد أن خطوة الترجمة نادرًا ما تكون الشريط الأكبر. سحب الصور الأساسية واستعادة ذاكرات التخزين المؤقت ورفع القطع الأثرية ودفع النتيجة تمثل معظم وقت الساعة في البناء النموذجي. ثلاثة إصلاحات، بالترتيب حسب العائد: أبقِ ذاكرة تخزين مؤقت للسحب في السجل على نفس VLAN الخاص لتصل الطبقات عبر الشبكة المحلية بدلاً من الإنترنت العام؛ ضع مساحة العمل المؤقتة على NVMe حتى لا يكون فك ضغط الطبقات مقيدًا بالبحث؛ واجعل مفتاح ذاكرة التخزين المؤقت دقيقًا، بحيث تستعيد ما تحتاجه بدلاً من أرشيف ضخم. أنوية Bergamo الكثيفة رخيصة. الانتظار على الشبكة ليس كذلك.

ما الذي يحدث بشكل خاطئ

  • تكديس overlayfs على overlayfs لتشغيل Docker داخل Docker. برامج تشغيل الطبقات المتداخلة بطيئة وتتلف الطبقات أحيانًا. استخدم جهاز تخزين كتليًا مخصصًا داخل الوظيفة، أو شغّل البناء عبر KVM متداخل بدلاً من ذلك.
  • عدم التنظيف أبدًا. الصور المعلقة وذاكرة التخزين المؤقت للبناء ووحدات التخزين القديمة تملأ NVMe المؤقت في أسابيع، وأول عرض هو فشل بناء في خطوة عملت لمدة عام. نظّف على مؤقت، وليس عند الفشل.
  • السماح لنقل ذاكرة التخزين المؤقت بتجاوز وقت البناء. ذاكرة تخزين مؤقت للاعتماديات بحجم 3 جيجابايت تُسحب وتُدفع لكل وظيفة يمكن أن تكلف أكثر من الترجمة من الصفر. قِس كليهما، وأبقِ ذاكرة التخزين المؤقت على نفس VLAN الخاص مع العدائين.

اضبط الجهاز

  • كل شيء آخرNested virtualisation (VMX/SVM) · مشمول
  • جدولة المعالجPinned physical cores · ‏9 €
  • التخزين والتشفيرZFS with hourly snapshots · ‏7 €