The Hack typeface build test shootout: Travis CI vs. Semaphore CI

خلال الأشهر القليلة الماضية ، قمنا بمقارنة اختبارات الإنشاء الخاصة بـ محرف Hack بين خطط حساب مجاني ومفتوح المصدر يتم تقديمها من خلال خدمات اختبار التكامل المتكامل Travis و Semaphore. لقد كان هذا الاختبار جزءًا من فحص طريقة اختبار CI الخاصة بنا عبر مستودعات برمجيات Source Foundry التي تتضمن برمجيات المصدر المفتوح Python و Go و C / C ++ و UFO.

لماذا الاختبار؟

أبلغ فريق Semaphore عن تخفيض بنسبة 50٪ في أوقات الاختبار لمجموعة اختبار الإكسير-لانج / الإكسير نسبة إلى الأوقات التي تمت ملاحظتها على منصات اختبار Travis CI و Circle CI. في ما يلي لقطة شاشة للبيانات من صفحة الهبوط semaphore.com:

مثيرة للاهتمام! كمستخدم لفترة طويلة من Travis CI ، قررت وضع خدمات الاختبار للاختبار ومعرفة ما إذا كانت هذه الفوائد تنطبق على احتياجات اختبار البرمجيات لدينا. يقارن التحليل التالي بين خدمتين الاختبار مع نفس أوامر git التي تم دفعها إلى مستودع محرف Hack وبنيت في وقت واحد على كلتا منصات اختبار CI عبر ربطات ربط GitHub.

البناء

تتضمن عملية الإنشاء سلسلة الخطوات التالية:

  • تثبيت Python محرف ترجمة وبرنامج تعديل الخط بعد تجميع مع نقطة
  • ترجمة مكتبات FreeType و Harfbuzz و ttfautohint القابل للتنفيذ من مصدر C / C ++ مع سير عمل التحويل البرمجي المستند إلى تكوين
  • تجميع أربعة أشكال خطوط كاملة الأحرف (مائل ، مائل ، غامق ، مائل) في تنسيقات سطح المكتب (* .ttf) وخطوط الويب (* .woff ، * .woff2) من ملفات مصدر محرف الإصدار 2 UFO
  • تجميع أربعة أنواع من خطوط مجموعة فرعية من الأحرف في تنسيقات خط الويب (* .woff ، * .woff2) من ملفات مصدر محرف الإصدار 2 UFO
  • يكتب التعديل اللاحق للترجمة إلى ثنائيات الخطوط مع مجموعات التعليمات (على سبيل المثال ، تلميحات)
  • يكتب التعديل اللاحق للترجمة إلى ثنائيات الخطوط مع إصلاحات أخرى لجدول OpenType بما في ذلك الاستهزاء بجدول DSIG وتعديل إذن fstype

تطلبت عملية الإنشاء هذه تاريخيا حوالي 4-5 دقائق على منصة ترافيس. نحن نقوم بإجراء اختبارات الوبر النصية المتوازية التي لم يتم أخذها في الاعتبار في هذا التحليل لأنها مختصرة بالنسبة لاختبارات الترجمة لدينا ولا تؤثر على الوقت الإجمالي لاختبار الإكمال. اختبارات مكثفة للوقت بالنسبة لنا هي تلك المبينة في القائمة أعلاه.

منصات الاختبار

تم إجراء اختبارات Travis و Semaphore على أنظمة Ubuntu 14.04 LTS. كانت إصدارات بوابة 2.13.0 على ترافيس و 2.14.2 على إشارة. كانت إصدارات gcc 4.8.4 على Travis و 4.9 على Semaphore. كانت إصدارات Python 2.7.13 على Travis و 3.6.x على Semaphore.

نتائج الإختبار

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

أوقات البناء الخام عن طريق بوابة الالتزام

يوضح الشكل التالي وقت البناء الأولي بالثواني من خلال git ملتزمة بمستودع محرف Hack. يتم تصنيف أوامر git مع git ارتكاب سلاسل تجزئة قصيرة SHA1 على المحور ص.

مرات البناء (بالثواني) بواسطة Hack typeface reitititit git الالتزام لـ Semaphore (blue) و Travis (red) builds

احصائيات ملخصة

يعني (+/- SD) لأوقات البناء عبر خمس التزامات إلى مستودع محرف Hack لـ Semaphore (أزرق) و Travis (أحمر). ف <0.05

كان هناك انخفاض كبير في الإحصاء (p <0.05) في وقت الإنشاء عبر هذه الالتزامات الخمسة الأخيرة التي بلغت 110.8 ثانية في المتوسط ​​المحفوظة في خدمة Semaphore CI. كانت أوقات البناء المتوسطة 208.6 ثانية (+/- 16.7s) في إشارة و 319.4 ثانية (+/- 33.6s) على ترافيس. تم حل دقيقتين تقريبًا من تصميماتنا في المتوسط ​​باستخدام إعدادات اختبار Semaphore الافتراضية! هذا مثير للإعجاب بكل المقاييس.

لماذا سيمافور CI أسرع؟

لقد تواصلت مع المؤسس المشارك لـ Semaphore CI ، Marko Anastasov ، لمعرفة ما إذا كان بإمكانه شرح هذه الاختلافات وهنا ما قاله:

"في Semaphore نأخذ الأداء على محمل الجد ويستند منصة CI / CD الخاصة بنا إلى أجهزة مخصصة مع أداء من فئة سطح المكتب. نتيجة لذلك ، تبلغ سعة الأجهزة التي تأتي في عامل CI واحد (نسميها مربع) 2x مقارنة بالخدمات الأخرى. "

كان لدى Marko أيضًا التوصية التالية لتحقيق مكاسب محتملة إضافية في مشاريع مثل مشروعنا:

"نوصي أيضًا باستخدام آلية التخزين المؤقت المضمنة لتجنب إعادة بناء التبعيات الخارجية التي لا تتغير بين البنيات."

يمكن العثور على الوثائق الخاصة بذاكرة التخزين المؤقت التبعية لـ Semaphore CI التي أشار إليها هنا.

استنتاج

استنادًا إلى هذه النتائج وتلك المستخلصة من التحليلات المماثلة في مستودعات برامج Python الخاصة بنا ، ننتقل إلى Semaphore CI لمعظم اختبارات التكامل المستمر الخاصة بنا عبر مشاريع مصدر محرف Go و Python و UFO. تستحق هذه الخدمة البحث عن الفرق الأخرى التي لديها عمليات بناء اختبارات طويلة نسبيًا. يمكنك تحديد توفير كبير للوقت من خلال قرص تهيئة بسيط في مستودعاتك.

البيانات

جميع بيانات الاختبار التاريخية لدينا مفتوحة ومتاحة للمراجعة بواسطة git الالتزام على حسابات Travis و Semaphore الخاصة بنا لأولئك الذين يرغبون في التحقق من هذه النتائج وتأكيد أنها كانت مستقرة مع مرور الوقت. تتوفر بيانات هذا التحليل في جدول بيانات مستندات Google هذا.

  • إشارة: https://semaphoreci.com/
  • ترافيس: https://travis-ci.org/