الأخبار التكنولوجية والاستعراضات والنصائح!

فهم التكامل المستمر والنشر المستمر

هل سمعت عن CI / CD ولكنك غير متأكد ما هو؟

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

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

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

    ماهو الحل؟

    التكامل المستمر

    لمنع السيناريوهات التي ذكرتها أعلاه ؛ يمكن للفرق الهندسية استخدام الممارسة التي تسمى التكامل المستمر – كما يوحي الاسم ، فهي تتضمن التكامل المستمر لتغييرات التعليمات البرمجية التي يقوم بها المطورون في الفرع / المستودع المشترك. يجب أن يخضع الكود المراد دمجه لاختبار تم التحقق منه للتأكد من أنه لا يكسر التطبيق. فقط عندما يتم تشغيل الاختبار يتم دمجه

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

    قبل دمج هذا التغيير الجديد ، يجب إجراء سلسلة من الاختبارات.

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

    يتم إنشاء نتائج الاختبارات ويمكن للمطور الذي أنشأ طلبات السحب رؤية النتائج وإجراء التغييرات اللازمة. فوائد التمسك بهذا النمط لدمج الكود بأقل قدر ممكن وإجراء اختبار تم التحقق منه للتشغيل هي ؛

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

    أنواع الاختبارات

    عند كتابة الاختبارات التي ستكون جزءًا من عملية التكامل ، إليك بعض الاختبارات التي يمكن تنفيذها في هذه العملية:

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

    أدوات للتكامل المستمر

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

  • Travis CI – مشهور في عالم مفتوح المصدر ويعدك باختبار الكود الخاص بك بسهولة في دقائق.
  • Circle CI – يمنحك القوة والمرونة والتحكم لأتمتة خط الأنابيب الخاص بك من التحكم إلى النشر.
  • Jenkins – يوفر مئات المكونات الإضافية لدعم بناء ونشر وأتمتة أي مشروع.
  • إذا كنت جديدًا على Jenkins ، أقترح عليك أن تأخذ دورة Udemy هذه لتعلم CI باستخدام Java و .NET.

    التوزيع المستمر

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

    الهدف عند ممارسة النشر المستمر هو نقل التغييرات إلى المستخدمين بمجرد أن يقوم المطورون بدمج هذه التغييرات في الفرع الرئيسي.

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

    لكي يستفيد الفريق من تمرين النشر المستمر ، يجب أن يكون لديه ما يلي ؛

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

    استنتاج

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

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

    يمكنك أيضًا معرفة كيفية توسيع وتحسين CI / CD.

    إذا كنت مطورًا ومهتمًا بتعلم CI / CD ، فراجع هذه الدورة الرائعة.

    هل استمتعت بقراءة المقال؟ ماذا عن المشاركة مع العالم؟