ما هي تفاصيل Jenkinsلماذا نستخدم أداة التكامل المستمر (CI)؟

⚡ ملخص ذكي

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

  • 🔘 الغرض: Jenkins يقوم بتنسيق خطوات البناء والاختبار والنشر تلقائيًا بعد كل عملية إيداع.
  • ☑️ الأصل: تم تطويره من Hudson في عام 2011 وهو الآن خادم التكامل المستمر الأكثر انتشارًا.
  • ✅ خطوط الأنابيب: A Jenkinsيحدد الملف المخزن مع الكود كل مرحلة من مراحل البناء.
  • 🧪 الإضافات: أكثر من ألفي إضافة متصلة Jenkins إلى Git و Maven و Docker و Kubernetes.
  • 🛠️ التنازل عن ميزة ممن أجل الحصول على أخرى: الاستضافة الذاتية توفر تحكمًا كاملاً ولكنها تتطلب أيضًا أعمال إدارة الخادم.

Jenkins نظرة عامة على خادم التكامل المستمر

ما هي تفاصيل Jenkins?

Jenkins هو خادم تكامل مستمر مفتوح المصدر مكتوب فيه Java لتنسيق سلسلة من الإجراءات لتحقيق عملية التكامل المستمر بطريقة آلية. Jenkins يدعم دورة حياة تطوير البرمجيات الكاملة بدءًا من البناء والاختبار وتوثيق البرمجيات ونشرها، بالإضافة إلى المراحل الأخرى لدورة حياة تطوير البرمجيات.

Jenkins يُعدّ تطبيقًا واسع الانتشار حول العالم، حيث تم تثبيته مئات الآلاف من المستخدمين، ويتزايد عددهم يومًا بعد يوم. باستخدام Jenkinsيمكن لشركات البرمجيات تسريع عملية تطوير برامجها، حيث Jenkins يمكن أتمتة عمليات البناء والاختبار بسرعة كبيرة.

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

ملاحظة: نشر الحرب في Apache لا يزال Tomcat يعمل، لكن الإصدارات الحالية تأتي مع حاوية servlet مضمنة، لذلك Jenkins يعمل عادةً بشكل مستقل. يتطلب الإصدار 2.555.x LTS Java 21.

ما هو التكامل المستمر؟

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

يعد هذا الالتزام والبناء والاختبار والنشر عملية مستمرة ومن هنا جاء اسم التكامل/النشر المستمر.

كيف Jenkins العمل؟

Jenkins هو تطبيق قائم على الخادم ويتطلب خادم ويب مثل Apache Tomcat للتشغيل على منصات مختلفة مثل Windows، لينكس ، macOS، يونكس، إلخ. للاستخدام Jenkins، أنت بحاجة إلى إنشاء مسارات عمل، وهي عبارة عن سلسلة من الخطوات التي Jenkins سيقوم الخادم بالمعالجة. Jenkins خط أنابيب التكامل المستمر هو أداة قوية تتكون من مجموعة من الأدوات المصممة لاستضافة ومراقبة وتجميع واختبار التعليمات البرمجية أو تغييرات التعليمات البرمجية، مثل:

  • خادم التكامل المستمر (Jenkins, Bamboo, CruiseControl, TeamCity، وآخرون)
  • أداة التحكم في المصدر (مثل CVS و SVN و GIT و Mercurial و Perforce و ClearCase وغيرها)
  • أدوات البناء (Make، ANT، Maven، Ivy، Gradle، وآخرون)
  • إطار عمل اختبار الأتمتة (Selenium, Appium, TestComplete, UFT، وآخرون)

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

Jenkins تاريخنا

  • كوهسوكي كاواجوتشي، أ Java لقد سئم المطور، الذي يعمل في SUN Microsystems، من بناء التعليمات البرمجية وإصلاح الأخطاء بشكل متكرر. في عام 2004، تم إنشاء خادم أتمتة يسمى Hudson الذي يقوم بأتمتة مهمة البناء والاختبار.
  • في 2011، Oracle كان لدى مالكي شركة صن مايكروسيستمز خلاف مع مجتمع هادسون مفتوح المصدر، فقاموا بإنشاء نسخة معدلة من هادسون وأعادوا تسميتها إلى Jenkins.
  • كل من هدسون و Jenkins استمرت في العمل بشكل مستقل. ولكن في فترة زمنية قصيرة، Jenkins استحوذت على العديد من المشاريع والمساهمين بينما بقي هدسون مع 32 مشروعًا فقط. مع مرور الوقت، Jenkins أصبحت أكثر شعبية، ولم يعد يتم صيانة هدسون.

لماذا نستخدم التكامل المستمر مع Jenkins?

قد يعتقد البعض أن الطريقة القديمة للتطويرping يُعدّ استخدام البرمجيات الخيار الأمثل. دعونا نتعرف على مزايا التكامل المستمر (CI) من خلال Jenkins مع المثال التالي

لنفترض أن هناك حوالي 10 مطورين يعملون على مستودع مشترك. ينجز بعض المطورين مهمتهم في 25 يومًا بينما يستغرق آخرون 30 يومًا لإنجازها.

قبل Jenkins بعد Jenkins

بمجرد انتهاء جميع المطورين من مهام البرمجة المخصصة لهم، اعتادوا على تنفيذ التعليمات البرمجية الخاصة بهم جميعًا في نفس الوقت. Laterتم اختبار البناء ونشره.

Code تم تنفيذ عملية الالتزام، وكانت دورة الاختبار نادرة للغاية، وتم إجراء عملية بناء واحدة بعد عدة أيام.

يتم بناء الكود واختباره بمجرد قيام المطور بإيداع الكود. Jenkins سأقوم ببناء واختبار الكود عدة مرات خلال اليوم

إذا نجحت عملية البناء، فـ Jenkins سيقوم بنشر المصدر في خادم الاختبار وإخطار فريق النشر.

إذا فشلت عملية البناء، فـ Jenkins سيتم إبلاغ فريق التطوير بالأخطاء.

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

دراسة حالة واقعية للتكامل المستمر

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

Laterلقد اعتمدوا نهج التكامل المستمر، كما هو موضح أدناه. يتم بناء البرنامج واختباره فور قيام المطور بإضافة الكود. وفي حال اكتشاف أي خطأ، يستطيع المطور المعني إصلاحه بسرعة.

تم استبدال الإصدار الليلي من نوكيا بدورة تكامل مستمر يتم تشغيلها عن طريق الالتزام

Jenkins الإضافات

افتراضيا، Jenkins يأتي مع مجموعة محدودة من الميزات. إذا كنت ترغب في دمج نظامك Jenkins بعد تثبيت أدوات التحكم في الإصدارات مثل Git، ستحتاج إلى تثبيت الإضافات المتعلقة بـ Git. في الواقع، للتكامل مع أدوات مثل Maven، Amazon بالنسبة لـ EC2، ستحتاج إلى تثبيت المكونات الإضافية المناسبة في Jenkinsكما يظهر في مدير الإضافات أدناه.

Jenkins يعرض مدير الإضافات قائمة بالإضافات المتاحة والجاهزة للتثبيت

مزايا الاستخدام Jenkins

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

عيوب الاستخدام Jenkins

رغم أن Jenkins إنها أداة قوية للغاية، لكنها لا تخلو من العيوب.

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

إذا كانت هذه المقايضات مهمة لفريقك، فقارن بينها ل Jenkins أدوات بديلة والقائمة الأوسع لـ أهم أدوات التكامل المستمر قبل الالتزام بخادم مُستضاف ذاتيًا.

الأسئلة الشائعة

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

يعمل خط الدعم طويل الأمد 2.555.x على Java 21 مع Java كما أيد 25 شخصًا ذلك؛ Java تم إسقاط الإصدار 17 في الإصدار 2.555.1. تحقق من المتطلبات قبل الترقية، لأن إصدار JDK قديم يمنع بدء تشغيل وحدة التحكم.

A Jenkinsالملف هو ملف نصي يحتوي على تعريف خط الأنابيب، ويتم حفظه مع كود التطبيق. يمكن كتابته باستخدام صيغة تصريحية أو برمجية، ويحتفظ بـping يجعل ذلك في نظام التحكم في الإصدارات عملية البناء قابلة للمراجعة مثل أي تغيير آخر.

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

تُصنّف نماذج التعلّم الآلي حالات الفشل المتكررة، وتفصل بين حالات التراجع الحقيقية والاختبارات غير المستقرة، وتُشير إلى التغيير البرمجي الأكثر احتمالاً للتسبب في المشكلة. هذا يُحوّل سجل وحدة التحكم الطويل إلى قائمة مختصرة ومرتبة للمطور المُناوب.

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

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

نعم. يمكن لخطوات البناء أن تستدعي مخضرم, Gradle أو النملة، و JUnit, TestNG or Selenium يتم نشر النتائج مرة أخرى على صفحة المهمة، لذا فإن فشل مجموعة الاختبارات يضع علامة حمراء على عملية البناء بأكملها.

تلخيص هذه التدوينة بـ: