في العقد الماضي ، تم إحراز تقدم كبير في تطوير أدوات التكامل المستمر (التكامل المستمر ، CI) والنشر المستمر (التسليم المستمر ، القرص المضغوط). أدى تطوير تقنيات دمج تطوير البرامج وتشغيلها (عمليات التطوير ، DevOps) إلى زيادة سريعة في الطلب على أدوات CI / CD. يتم تحسين الحلول الحالية باستمرار ، في محاولة لمواكبة العصر ، ويتم إصدار إصداراتها الجديدة ، في عالم برامج ضمان الجودة (ضمان الجودة ، QA) ، تظهر العديد من المنتجات الجديدة باستمرار. مع هذا الكم الهائل من الخيارات ، فإن اختيار الأداة المناسبة ليس بالمهمة السهلة.
من بين جميع أدوات CI / CD الحالية ، هناك مشروعان يستحقان الاهتمام بالتأكيد لشخص يبحث عن شيء ما في هذه المنطقة. نحن نتحدث عن Jenkins وأداة GitLab CI / CD ، والتي تعد جزءًا من منصة GitLab. لدى جينكينز أكثر من
خذ ، على سبيل المثال ، البيانات من منصة G2 ، التي تجمع مراجعات لمجموعة متنوعة من المنتجات والتصنيفات التي يمنحها المستخدمون لها. هنا هو متوسط التقييم
إذا تحدثنا عن شعبية Jenkins مقارنة بالمنصات الأخرى المماثلة ، نلاحظ أننا ، بعد نشر مقال يقارن بين منصات Travis CI و Jenkins ، قمنا بترتيب استطلاع. شارك 85 مستخدمًا فيه. طُلب من المستجيبين اختيار أداة CI / CD التي يحبونها أكثر من غيرها. 79٪ اختاروا Jenkins و 5٪ اختاروا Travis CI و 16٪ أشاروا إلى أنهم يفضلون الأدوات الأخرى.
نتائج الاستطلاع
من بين أدوات CI / CD الأخرى ، تم ذكر GitLab CI / CD في أغلب الأحيان.
إذا كنت جادًا بشأن DevOps ، فأنت بحاجة إلى اختيار الأدوات المناسبة بعناية ، مع مراعاة تفاصيل المشروع وميزانيته والمتطلبات الأخرى. لمساعدتك في اتخاذ القرار الصحيح ، سنراجع Jenkins و GitLab CI / CD. نأمل أن يساعدك هذا في اتخاذ القرار الصحيح.
مقدمة لجنكينز
أنشأ مطورو 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 ، فلن تضطر إلى شراء مكونات إضافية مدفوعة الثمن. ثمة احتمال وارد
▍3. سهل التركيب والإعداد
Jenkins سهل التثبيت والتكوين إلى حد ما. في نفس الوقت ، عملية تحديث النظام مريحة للغاية أيضًا. هنا ، مرة أخرى ، تجدر الإشارة إلى جودة الوثائق ، حيث يمكنك العثور على إجابات لمجموعة متنوعة من الأسئلة المتعلقة بتثبيت وتكوين Jenkins.
▍4. مجتمع ودود
كما ذكرنا سابقًا ، فإن Jenkins هو مشروع مفتوح المصدر ، يشتمل نظامه البيئي على عدد كبير من المكونات الإضافية. تطور مجتمع كبير من المستخدمين والمطورين حول جينكينز للمساعدة في تطوير المشروع. المجتمع هو أحد العوامل التي تدفع تطور جينكينز.
▍5. توافر REST API
أثناء العمل مع Jenkins ، يمكنك استخدام واجهة برمجة تطبيقات REST ، والتي تعمل على توسيع إمكانيات النظام. يتم تقديم API للوصول عن بعد إلى النظام في ثلاثة إصدارات: XML ، JSON مع دعم JSONP ، Python.
▍6. دعم التنفيذ المتوازي للمهام
يدعم Jenkins موازاة مهام DevOps. يمكن دمجها بسهولة مع الأدوات ذات الصلة وتلقي الإخطارات حول نتائج المهام. يمكن تسريع اختبار الكود من خلال تنظيم بناء متوازي للمشروع باستخدام أجهزة افتراضية مختلفة.
▍7. دعم للعمل في البيئات الموزعة
يتيح لك Jenkins تنظيم الإنشاءات الموزعة باستخدام أجهزة كمبيوتر متعددة. هذه الميزة قابلة للتطبيق في المشاريع الكبيرة وتستخدم مخطط العمل ، والذي بموجبه يوجد خادم Jenkins رئيسي واحد والعديد من ماكينات الرقيق. يمكن أيضًا استخدام ماكينات الرقيق في المواقف التي يكون فيها من الضروري تنظيم اختبار المشروع في بيئات مختلفة. هذه الميزات تميز Jenkins عن غيرها من المشاريع المماثلة.
مقدمة إلى GitLab
تم إصدار 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 التي تستخدمها؟
المصدر: www.habr.com