من بين جميع أدوات CI / CD الموجودة ، هناك مشروعان يستحقان الاهتمام بالتأكيد لأي شخص يبحث عن شيء ما في هذه المنطقة. نحن نتحدث عن Jenkins وأداة GitLab CI / CD ، والتي تعد جزءًا من منصة GitLab. لدى Jenkins أكثر من 16000 نجمة على GitHub. يحتوي مستودع GitLab في gitlab.com على ما يزيد قليلاً عن 2000 نجمة. إذا قارنا شعبية المستودعات ، اتضح أن Jenkins قد سجلت نجومًا أكثر بـ 8 مرات من المنصة ، والتي تتضمن GitLab CI / CD. ولكن عند اختيار أداة CI / CD ، فإن هذا ليس المؤشر الوحيد الذي يستحق الاهتمام به. هناك الكثير من الآخرين ، وهذا ما يفسر سبب وجود العديد من المقارنات بين Jenkins و GitLab CI / CD قريبين جدًا من بعضهما البعض.
خذ على سبيل المثال البيانات من منصة G2 ، والتي تجمع مراجعات لمجموعة متنوعة من المنتجات والتقييمات التي يقدمها المستخدمون. هنا ، حصل Jenkins على متوسط تقييم 4.3 نجوم بناءً على 288 تقييمًا. وحول 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٪ أشاروا أنهم يفضلون أدوات أخرى.

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

Jenkins هي أداة 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 و Kubernetes وأدوات أخرى لإنشاء خطوط أنابيب CI / CD تتبع أفضل ممارسات DevOps. على سبيل المثال ، يستخدم GitOps هنا.
يمكن للمرء أن يضيف إلى مزايا بنك جنكينز حقيقة أن نصوصه منظمة بشكل جيد للغاية ومفهومة وسهلة القراءة. أنشأ فريق 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 ، والتي توسع إمكانيات النظام. يتم تقديم واجهة برمجة التطبيقات للوصول عن بُعد إلى النظام في ثلاثة إصدارات: XML و JSON مع دعم JSONP و Python. فيما يلي صفحة توثيق تكشف عن تفاصيل العمل باستخدام Jenkins REST API.
▍6. دعم المهام الموازية
يدعم Jenkins مواءمة مهام DevOps. يمكن دمجها بسهولة مع الأدوات ذات الصلة وإخطارها بتقدم المهمة. يمكن تسريع اختبار الكود الخاص بك عن طريق تنظيم بناء متوازي للمشروع باستخدام أجهزة افتراضية مختلفة.
▍7. دعم للعمل في البيئات الموزعة
يتيح لك Jenkins تنظيم الإنشاءات الموزعة باستخدام أجهزة كمبيوتر متعددة. هذه الميزة قابلة للتطبيق في المشاريع الكبيرة وتستخدم مخطط عمل ، والذي بموجبه يوجد خادم Jenkins واحد رئيسي والعديد من ماكينات الرقيق. يمكن أيضًا استخدام ماكينات الرقيق في المواقف التي تحتاج فيها إلى تنظيم اختبار مشروع في بيئات مختلفة. هذه الميزات تميز Jenkins عن غيرها من المشاريع المماثلة.
تقديم GitLab

يعد 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. تم إطلاق سراحهم بموجب ترخيص MIT. يدعم 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.
مقارنة بين جينكينز وجيتلاب CI / CD
تعد Jenkins و GitLab CI / CD أدوات جيدة جدًا ، كل منها قادر على جعل خط أنابيب CI / CD يعمل بشكل صحيح. لكن ، إذا قارنتهم ، يتبين أنه على الرغم من تشابههم في نواح كثيرة ، إلا أنهم يختلفون بطريقة ما عن بعضهم البعض.
| صفة مميزة | جينكينز | GitLab CI/CD |
| . | , — GitLab. | |
| . | . | |
| . | . | |
| — . | . | |
| CI/CD- | , Jenkins Pipeline. | . |
| . | . | |
| 1000 . | GitLab. | |
| API | 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 التي تستخدمها؟
