تركيب متواصل

من ويكيبيديا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث

التركيب المتواصل أو التكامل المتواصل أو التكامل المستمر (إختصارًا CI ) هو مصطلح خاص بهندسة البرمجيات يصف أسلوبًا في تطوير البرمجيات يتسم بتواصل عملية إعادة بناء تطبيق ما، بمزامنة نسخ عمل جميع المطورين في خط رئيسي مشترك عدة مرات في اليوم،[1] مصحوبة باختباره بصفة متكررة.[2][3][4]

اقترح غرادي بوش [الإنجليزية] لأول مرة مصطلح CI في أسلوبه لعام 1991 [الإنجليزية]،[5] على الرغم من أنه لم يدافع عن التركيب عدة مرات في اليوم. اعتمدت البرمجة القصوى (XP) مفهوم CI ودعت إلى التركيب أكثر من مرة واحدة في اليوم والذي قد يصل إلى عشرات المرات في اليوم.[6]

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

الطريقة الأكثر شيوعا في التركيب المتواصل هي التركيب المتواصل الآلي (Automated Continuous Integration) حيث يقوم السرفر بمراقبة كافة التغييرات بكل نسخة وتشغيلها مع إعادة البناء آليا ثم اختبارها. يقوم السرفر أيضا بعمل إحصائيات بما تم انجازه.

إعادة البناء بصفة دورية يمكن اعتباره تركيبا متواصلا في حال إذا ما كانت فترات البناء متقاربة بشكل كاف.

متطلبات العملية[عدل]

تتطلب هذه العملية:

  • أن يكون الكود المصدري مشتركاً بين المبرمجين بإستعمال أدوات مثل نظام النسخ المتلاقية وجت وميركوريال.
  • أن يقوم المبرمج بإعادة المصدر إلى السرفير(commit) على الأقل يومياً بعد التعديل.
  • أن يتم عمل اختبارات تركيب (Integration testing) للتحقق من صحة التطبيق بإستعمال أدوات مثل JUnit.

المزايا الأساسية[عدل]

  • اكتشاف وحل المشاكل بشكل سريع ومستمر
  • الإنذار المبكر بوجود أخطاء أو ssIncompatible Code
  • اختبار موحد لجميع التغييرات
  • توافر عينة (Demo) غير نهائية من البرنامج طوال فترة البناء
  • النظام نفسه يعمل كحافز للمبرمجين على العمل بصورة تراكمية ويقصر الفترات التي تستغرقها التعديلات التي تدخل على عمل كل منهم


المراجع[عدل]

  1. ^ Fowler, Martin (1 May 2006). "Continuous Integration". مؤرشف من الأصل في 16 يونيو 2020. اطلع عليه بتاريخ 09 يناير 2014. الوسيط |CitationClass= تم تجاهله (مساعدة)
  2. ^ Cunningham, Ward (5 August 2009). "Integration Hell". WikiWikiWeb. مؤرشف من الأصل في 25 أغسطس 2016. اطلع عليه بتاريخ 19 سبتمبر 2009. الوسيط |CitationClass= تم تجاهله (مساعدة)
  3. ^ "Continuous Integration". مؤرشف من الأصل في 16 مايو 2019. الوسيط |CitationClass= تم تجاهله (مساعدة)
  4. ^ Booch, Grady (1991). Object Oriented Design: With Applications. Benjamin Cummings. صفحة 209. ISBN 9780805300918. مؤرشف من الأصل في 21 أبريل 2017. اطلع عليه بتاريخ 18 أغسطس 2014. الوسيط |CitationClass= تم تجاهله (مساعدة) نسخة محفوظة 21 أبريل 2017 على موقع واي باك مشين.
  5. ^ Booch, Grady (1991). Object Oriented Design: With Applications. Benjamin Cummings. صفحة 209. ISBN 9780805300918. مؤرشف من الأصل في 16 يوليو 2020. اطلع عليه بتاريخ 18 أغسطس 2014. الوسيط |CitationClass= تم تجاهله (مساعدة)
  6. ^ Beck, K. (1999). "Embracing change with extreme programming". Computer. 32 (10): 70–77. doi:10.1109/2.796139. ISSN 0018-9162. الوسيط |CitationClass= تم تجاهله (مساعدة)


Computer.svg
هذه بذرة مقالة عن الحاسوب أو العاملين في هذا المجال، بحاجة للتوسيع. شارك في تحريرها.