معركة جنكينز و GitLab CI / CD

في العقد الماضي ، تم إحراز تقدم كبير في تطوير أدوات التكامل المستمر (التكامل المستمر ، CI) والنشر المستمر (التسليم المستمر ، القرص المضغوط). أدى تطوير تقنيات دمج تطوير البرامج وتشغيلها (عمليات التطوير ، DevOps) إلى زيادة سريعة في الطلب على أدوات CI / CD. يتم تحسين الحلول الحالية باستمرار ، في محاولة لمواكبة العصر ، ويتم إصدار إصداراتها الجديدة ، في عالم برامج ضمان الجودة (ضمان الجودة ، QA) ، تظهر العديد من المنتجات الجديدة باستمرار. مع هذا الكم الهائل من الخيارات ، فإن اختيار الأداة المناسبة ليس بالمهمة السهلة.

معركة جنكينز و GitLab CI / CD

من بين جميع أدوات CI / CD الحالية ، هناك مشروعان يستحقان الاهتمام بالتأكيد لشخص يبحث عن شيء ما في هذه المنطقة. نحن نتحدث عن Jenkins وأداة GitLab CI / CD ، والتي تعد جزءًا من منصة GitLab. لدى جينكينز أكثر من 16000 النجوم على جيثب. سجل مستودع GitLab على gitlab.com أكثر من ذلك بقليل 2000 النجوم. إذا قارنا شعبية المستودعات ، اتضح أن Jenkins سجل نجومًا أكثر بـ 8 مرات من النظام الأساسي ، الذي يتضمن GitLab CI / CD. ولكن عند اختيار أداة CI / CD ، فإن هذا أبعد ما يكون عن المؤشر الوحيد الذي يجب الانتباه إليه. هناك الكثير من الآخرين ، وهذا يفسر لماذا في العديد من المقارنات ، فإن Jenkins و GitLab CI / CD قريبان جدًا من بعضهما البعض.

خذ ، على سبيل المثال ، البيانات من منصة G2 ، التي تجمع مراجعات لمجموعة متنوعة من المنتجات والتصنيفات التي يمنحها المستخدمون لها. هنا هو متوسط ​​التقييم جنكينز، استنادًا إلى 288 مراجعة ، هو 4,3 نجوم. أوه أوه GitLab يوجد 270 تقييمًا ، ومتوسط ​​تقييم هذه الأداة هو 4,4 نجوم. لن نخطئ في قولنا إن Jenkins و GitLab CI / CD يتنافسان مع بعضهما البعض على قدم المساواة. من المثير للاهتمام ملاحظة أن مشروع Jenkins ظهر في عام 2011 ومنذ ذلك الحين أصبح الأداة المفضلة للمختبرين. ولكن في الوقت نفسه ، احتل مشروع GitLab CI / CD ، الذي تم إطلاقه في عام 2014 ، مكانته العالية جدًا بفضل الميزات المتقدمة التي توفرها هذه المنصة.

إذا تحدثنا عن شعبية Jenkins مقارنة بالمنصات الأخرى المماثلة ، نلاحظ أننا ، بعد نشر مقال يقارن بين منصات Travis CI و Jenkins ، قمنا بترتيب استطلاع. شارك 85 مستخدمًا فيه. طُلب من المستجيبين اختيار أداة CI / CD التي يحبونها أكثر من غيرها. 79٪ اختاروا Jenkins و 5٪ اختاروا Travis CI و 16٪ أشاروا إلى أنهم يفضلون الأدوات الأخرى.

معركة جنكينز و GitLab CI / CD
نتائج الاستطلاع

من بين أدوات CI / CD الأخرى ، تم ذكر GitLab CI / CD في أغلب الأحيان.

إذا كنت جادًا بشأن DevOps ، فأنت بحاجة إلى اختيار الأدوات المناسبة بعناية ، مع مراعاة تفاصيل المشروع وميزانيته والمتطلبات الأخرى. لمساعدتك في اتخاذ القرار الصحيح ، سنراجع Jenkins و GitLab CI / CD. نأمل أن يساعدك هذا في اتخاذ القرار الصحيح.

مقدمة لجنكينز

معركة جنكينز و GitLab CI / CD
جنكينز هي أداة CI / CD معروفة ومرنة مصممة لأتمتة العديد من المهام المتعلقة بمشاريع البرامج. تمت كتابة Jenkins بالكامل بلغة Java وتم إصدارها بموجب ترخيص MIT. يحتوي على مجموعة قوية من الميزات التي تهدف إلى أتمتة المهام المرتبطة ببناء البرامج واختبارها ونشرها ودمجها وإصدارها. يمكن استخدام هذه الأداة على أنظمة تشغيل مختلفة. يتضمن ذلك macOS و Windows والعديد من توزيعات Linux مثل OpenSUSE و Ubuntu و Red Hat. توجد حزم تثبيت لـ Jenkins مصممة لأنظمة تشغيل مختلفة ، ويمكن تثبيت هذه الأداة على Docker وعلى أي نظام به JRE (Java Runtime Environment).

أنشأ مطورو Jenkins مشروعًا آخر ، Jenkins X ، مصمم للعمل في بيئة Kubernetes. يدمج Jenkins X بين Helm و Jenkins CI / CD Server و Kubernetes وأدوات أخرى لبناء خطوط أنابيب CI / CD تتبع أفضل ممارسات DevOps. على سبيل المثال ، يتم استخدام GitOps هنا.

يمكن للمرء أن يضيف إلى خزانة مزايا Jenkins حقيقة أن نصوصه منظمة بشكل جيد للغاية ومفهومة وسهلة القراءة. أنشأ فريق Jenkins حوالي 1000 مكون إضافي تهدف إلى تنظيم تفاعل Jenkins مع مجموعة متنوعة من التقنيات. يمكن أن تستخدم البرامج النصية أنظمة المصادقة ، والتي ، على سبيل المثال ، تسمح لك بالاتصال بأنظمة مغلقة متنوعة.

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

ملامح جنكينز

من بين الميزات المعروفة لـ Jenkins سهولة الإعداد ، والمستوى العالي من التشغيل الآلي للعمليات المختلفة ، والتوثيق الممتاز. إذا تحدثنا عن حل مهام DevOps ، فإن Jenkins هنا تعتبر أداة موثوقة للغاية ، والتي ، كقاعدة عامة ، ليس من المنطقي مراقبة عملية معالجة المشروع بالكامل عن كثب. هذا ليس هو الحال مع أدوات CI / CD الأخرى. دعنا نتحدث عن بعض أهم ميزات Jenkins.

▍1. دعم مجاني ومفتوح المصدر ومتعدد المنصات

يمكن تشغيل Jenkins على أنظمة macOS و Windows و Linux. يمكن أن تعمل أيضًا في بيئة Docker ، والتي تسمح لك بتنظيم تنفيذ موحد وسريع للمهام الآلية. يمكن أيضًا تشغيل هذه الأداة كخادم في الحاويات التي تدعم Java مثل Apache Tomcat و GlassFish. تركيب جنكينز نوعيًا موثقة.

▍2. تطوير النظام البيئي للمكوِّن الإضافي

يبدو أن النظام البيئي للمكونات الإضافية لـ Jenkins أكثر نضجًا من الأنظمة البيئية الخاصة بالمكونات الإضافية لأدوات CI / CD الأخرى. يوجد حاليًا أكثر من 1500 مكون إضافي لـ Jenkins. تهدف هذه المكونات الإضافية إلى حل مجموعة واسعة من المهام ، وبمساعدتها يمكنك أتمتة مجموعة متنوعة من المشاريع. تعني ثروة المكونات الإضافية المجانية للاختيار من بينها أنه إذا كنت تستخدم Jenkins ، فلن تضطر إلى شراء مكونات إضافية مدفوعة الثمن. ثمة احتمال وارد دمج Jenkins مع العديد من أدوات DevOps.

▍3. سهل التركيب والإعداد

Jenkins سهل التثبيت والتكوين إلى حد ما. في نفس الوقت ، عملية تحديث النظام مريحة للغاية أيضًا. هنا ، مرة أخرى ، تجدر الإشارة إلى جودة الوثائق ، حيث يمكنك العثور على إجابات لمجموعة متنوعة من الأسئلة المتعلقة بتثبيت وتكوين Jenkins.

▍4. مجتمع ودود

كما ذكرنا سابقًا ، فإن Jenkins هو مشروع مفتوح المصدر ، يشتمل نظامه البيئي على عدد كبير من المكونات الإضافية. تطور مجتمع كبير من المستخدمين والمطورين حول جينكينز للمساعدة في تطوير المشروع. المجتمع هو أحد العوامل التي تدفع تطور جينكينز.

▍5. توافر REST API

أثناء العمل مع Jenkins ، يمكنك استخدام واجهة برمجة تطبيقات REST ، والتي تعمل على توسيع إمكانيات النظام. يتم تقديم API للوصول عن بعد إلى النظام في ثلاثة إصدارات: XML ، JSON مع دعم JSONP ، Python. ها هو صفحة الوثائق التي تغطي تفاصيل العمل مع Jenkins REST API.

▍6. دعم التنفيذ المتوازي للمهام

يدعم Jenkins موازاة مهام DevOps. يمكن دمجها بسهولة مع الأدوات ذات الصلة وتلقي الإخطارات حول نتائج المهام. يمكن تسريع اختبار الكود من خلال تنظيم بناء متوازي للمشروع باستخدام أجهزة افتراضية مختلفة.

▍7. دعم للعمل في البيئات الموزعة

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

مقدمة إلى GitLab

معركة جنكينز و GitLab CI / CD
GitLab CI / CD يمكن أن يطلق عليه أحد أحدث أدوات DevOps وأكثرها شهرة. هذه الأداة المجانية مفتوحة المصدر مدمجة في نظام التحكم في إصدار GitLab. تحتوي منصة GitLab على إصدار مجتمعي ، فهي تدعم إدارة المستودعات ، وأدوات تتبع المشكلات ، وتنظيم مراجعة الكود ، والآليات الموجهة نحو التوثيق. يمكن للشركات تثبيت GitLab محليًا ، وربطها بـ Active Directory وخوادم LDAP للحصول على ترخيص ومصادقة آمنة للمستخدم.

ها هو فيديو تعليمي لمساعدتك على تعلم كيفية إنشاء خطوط أنابيب CI / CD باستخدام إمكانات GitLab CI / CD.

تم إصدار GitLab CI / CD في الأصل كمشروع مستقل ، ولكن في عام 2015 تم دمج هذه المجموعة من الأدوات في GitLab 8.0. يمكن لخادم GitLab CI / CD واحد دعم أكثر من 25000 مستخدم. بناءً على هذه الخوادم ، يمكنك إنشاء أنظمة متوفرة بشكل كبير.

تمت كتابة GitLab CI / CD ومشروع GitLab الرئيسي بلغة Ruby and Go. تم إطلاق سراحهم بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. GitLab CI / CD ، بالإضافة إلى الميزات المعتادة لأدوات CI / CD ، يدعم أيضًا ميزات إضافية مرتبطة ، على سبيل المثال ، بجدولة العمل.

يعد دمج GitLab CI / CD في مشروع أمرًا سهلاً للغاية. عند استخدام GitLab CI / CD ، يتم تقسيم عملية معالجة كود المشروع إلى مراحل ، يمكن أن تتكون كل منها من عدة مهام يتم تنفيذها بترتيب معين. يمكن صقل المهام.

يمكن أن تعمل المهام بالتوازي. بعد إعداد تسلسل المراحل والمهام ، يكون خط أنابيب CI / CD جاهزًا للعمل. يمكنك مراقبة تقدمه من خلال مراقبة حالة المهام. نتيجة لذلك ، يعد استخدام GitLab CI / CD ملائمًا للغاية ، وربما يكون أكثر ملاءمة من الأدوات المماثلة الأخرى.

ميزات GitLab CI / CD و GitLab

يعد GitLab CI / CD أحد أكثر أدوات DevOps شيوعًا. يتميز المشروع بتوثيق عالي الجودة ، ومميزاته سهلة ومريحة في الاستخدام. إذا لم تكن معتادًا على استخدام GitLab CI / CD ، فستمنحك القائمة التالية بميزات هذه الأداة فكرة عامة عما يمكنك توقعه منها. تجدر الإشارة إلى أن العديد من هذه الميزات مرتبطة بمنصة GitLab نفسها ، والتي يتم فيها دمج GitLab CI / CD.

▍1. شعبية

GitLab CI / CD هي أداة جديدة نسبيًا واستخدمت على نطاق واسع. أصبح GitLab CI / CD ببطء أداة CI / CD ذات شعبية كبيرة تستخدم للاختبار الآلي ونشر البرامج. من السهل اقامة. وهي أيضًا أداة CI / CD مجانية مدمجة في منصة GitLab.

▍2. دعم لصفحات GitLab و Jekyll

Jekyll هو منشئ موقع ثابت يمكن استخدامه داخل نظام GitLab Pages لإنشاء مواقع استنادًا إلى مستودعات GitLab. يأخذ النظام المواد المصدر ويولد موقعًا ثابتًا جاهزًا بناءً عليها. يمكنك التحكم في مظهر وميزات هذه المواقع عن طريق تحرير الملف _config.yml، مستخدم بواسطة Jekyll.

▍3. قدرات تخطيط المشروع

بفضل القدرة على تخطيط مراحل المشاريع ، تزداد سهولة تتبع المشكلات ومجموعاتها. يتيح لك ذلك إدارة تنظيم العمل في المشاريع ، والتخطيط لتنفيذها في تاريخ محدد.

▍4. التحجيم التلقائي للعدائين CI

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

▍5. أدوات تتبع المشكلة

قادت قدرات GitLab القوية لتتبع المشكلات العديد من المشاريع مفتوحة المصدر لاستخدام النظام الأساسي. يسمح GitLab CI / CD باختبار موازٍ لفروع الكود المختلفة. يتم تحليل نتائج الاختبار بسهولة في واجهة النظام. هذا يميز GitLab CI / CD بصرف النظر عن Jenkins.

▍6. تقييد الوصول إلى المستودعات

تدعم منصة GitLab تقييد الوصول إلى المستودعات. على سبيل المثال ، أولئك الذين يتعاونون في مشروع في مستودع يمكن تعيين أذونات مناسبة لأدوارهم. هذا ينطبق بشكل خاص على مشاريع الشركات.

▍7. دعم المجتمع النشط

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

▍8. دعم لأنظمة التحكم في الإصدارات المختلفة

GitLab CI / CD هو نظام يمكنه العمل مع أكثر من مجرد كود مستضاف في مستودعات GitLab. على سبيل المثال ، يمكن تخزين الكود في مستودع GitHub ، ويمكن تنظيم خط أنابيب CI / CD على أساس GitLab باستخدام GitLab CI / CD.

مقارنة بين Jenkins و GitLab CI / CD

تعد Jenkins و GitLab CI / CD أدوات جيدة جدًا ، وكلاهما قادر على جعل خط أنابيب CI / CD يعمل بسلاسة. لكن إذا قارناها ، يتبين أنه على الرغم من أنها متشابهة من نواح كثيرة ، إلا أنها تختلف عن بعضها البعض في بعض النواحي.

وصف
جنكينز
GitLab CI / CD

المصدر المفتوح أو المصدر المغلق
المصدر المفتوح
المصدر المفتوح

تركيب
مطلوب.
غير مطلوب لأن هذه ميزة مضمنة في منصة GitLab.

خصائص فريدة
دعم البرنامج المساعد.
تكامل عميق في نظام التحكم في الإصدار.

Поддержка
لا شيء.
متاح.

التثبيت والإعداد
الصعوبات لا تسبب
الصعوبات لا تسبب

النشر الذاتي للنظام
هذه هي الطريقة الوحيدة لاستخدام النظام.
أيد.

إنشاء خطوط أنابيب CI / CD
مدعوم ، باستخدام خط أنابيب جنكينز.
أيد.

مراقبة أداء التطبيق
لا شيء.
متاح.

النظام البيئي
يوجد أكثر من 1000 مكون إضافي.
يتم تطوير النظام داخل GitLab.

API
يدعم نظام API متقدم.
يقدم واجهة برمجة تطبيقات لتكامل أعمق في المشاريع.

دعم JavaScript
متاح.
متاح.

التكامل مع الأدوات الأخرى
يتم دعم التكامل مع الأدوات والأنظمة الأساسية الأخرى (Slack و GitHub).
العديد من الأدوات للتكامل مع أنظمة الجهات الخارجية ، على وجه الخصوص - مع GitHub و Kubernetes.

مراقبة جودة الكود
معتمد - استخدام المكون الإضافي SonarQube والمكونات الإضافية الأخرى.
أيد.

الاختلافات بين Jenkins و GitLab CI / CD

بعد وصف ومقارنة Jenkins و GitLab CI / CD ، دعنا نركز على الاختلافات بين أدوات DevOps هذه. ستساعدك معرفة هذه الاختلافات على فهم أولئك الذين يفضلون إحدى هذه الأدوات على الأخرى.

  • يمكن لـ GitLab CI / CD التحكم بشكل كامل في مستودعات Git. نحن نتحدث عن إدارة فروع المستودعات وبعض الميزات الأخرى. لكن Jenkins ، على الرغم من قدرتها على العمل مع المستودعات ، إلا أنها لا تعطي نفس مستوى التحكم فيها مثل GitLab CI / CD.
  • Jenkins هو مشروع مجاني مفتوح المصدر. من يختارها ينشرها بشكل مستقل. ويتم تضمين GitLab CI / CD في منصة GitLab ، وهو حل متكامل.
  • يدعم GitLab CI / CD أدوات إدارة المهام المتقدمة التي تعمل على مستوى المشروع. هذا الجانب من Jenkins أقل تطوراً.

Jenkins و GitLab CI / CD: نقاط القوة والضعف

الآن لديك فكرة عن Jenkins و GitLab CI / CD. الآن ، لتعرف أكثر على هذه الأدوات ، دعنا نلقي نظرة على نقاط القوة والضعف فيها. نفترض أنك قد قررت بالفعل الأداة التي تحتاجها. نأمل أن يسمح لك هذا القسم باختبار نفسك.

▍ قدرات جنكينز

  • عدد كبير من الإضافات.
  • تحكم كامل في تركيب الأداة.
  • التصحيح البسيط للعدائين.
  • إعداد سهل للعقدة.
  • سهولة نشر التعليمات البرمجية.
  • نظام إدارة اعتماد جيد جدا.
  • المرونة والتنوع.
  • دعم لغات البرمجة المختلفة.
  • النظام مفهوم على مستوى حدسي.

▍ نقاط ضعف جنكينز

  • يمكن أن تكون المكونات الإضافية صعبة الاستخدام.
  • عند استخدام Jenkins في المشاريع الصغيرة ، يمكن أن يكون الوقت اللازم لتكوينها بنفسك كبيرًا بشكل غير معقول.
  • نقص المعلومات التحليلية العامة عن سلاسل CI / CD.

▍ نقاط القوة في GitLab CI / CD

  • تكامل جيد مع Docker.
  • تحجيم بسيط للعدائين.
  • التنفيذ المتوازي للمهام التي تشكل جزءًا من مراحل خط أنابيب CI / CD.
  • استخدام نموذج الرسم البياني غير الدوري الموجه عند إعداد علاقات المهام.
  • مستوى عالٍ من قابلية التوسع بسبب إمكانية التنفيذ المتوازي للعدائين.
  • سهولة إضافة المهام.
  • حل بسيط للنزاع.
  • نظام أمان موثوق.

▍ نقاط الضعف في GitLab CI / CD

  • لكل مهمة ، تحتاج إلى وصف وتحميل / تنزيل القطع الأثرية.
  • لا يمكنك اختبار نتائج دمج الفروع قبل دمجها بالفعل.
  • عند وصف مراحل خط أنابيب CI / CD ، ليس من الممكن بعد تحديد المراحل الفردية فيها.

نتائج

يتمتع كل من Jenkins و GitLab CI / CD بنقاط قوة ونقاط ضعف. تعتمد الإجابة على سؤال ماذا تختار على احتياجات وخصائص مشروع معين. تحتوي كل أداة من أدوات CI / CD التي تمت مراجعتها اليوم على ميزات معينة ، على الرغم من أن هذه الأدوات تم إنشاؤها لحل نفس المشكلة. في الوقت نفسه ، تعد Jenkins أداة قائمة بذاتها ، و GitLab CI / CD جزء من منصة مصممة للتعاون في الكود.

عند اختيار نظام CI / CD ، بالإضافة إلى إمكانياته ، من الجدير مراعاة التكاليف التي قد ترتبط به ، وما اعتاد مهندسو DevOps الذين يدعمون المشروع على العمل معه.

ما هي أدوات CI / CD التي تستخدمها؟

معركة جنكينز و GitLab CI / CD

معركة جنكينز و GitLab CI / CD

المصدر: www.habr.com

إضافة تعليق