انتقل إلى المحتوى

إدماج مستمر: الفرق بين النسختين

من ويكيبيديا، الموسوعة الحرة
[نسخة منشورة][نسخة منشورة]
تم حذف المحتوى تمت إضافة المحتوى
لا ملخص تعديل
وسم: تعديل مصدر 2017
JarBot (نقاش | مساهمات)
ط بوت:الإبلاغ عن رابط معطوب أو مؤرشف V5.0
سطر 8: سطر 8:
|مسار أرشيف= https://web.archive.org/web/20200616073739/https://martinfowler.com/articles/continuousIntegration.html|تاريخ أرشيف=2020-06-16}}</ref> مصحوبة باختباره بصفة متكررة.<ref>{{استشهاد ويب |الأخير =Cunningham |الأول=Ward |وصلة مؤلف=Ward Cunningham |عنوان=Integration Hell |عمل=WikiWikiWeb |تاريخ=5 August 2009 |مسار=http://c2.com/cgi/wiki?IntegrationHell |تاريخ الوصول=19 September 2009| مسار أرشيف = https://web.archive.org/web/20160825191848/http://c2.com/cgi/wiki?IntegrationHell | تاريخ أرشيف = 25 أغسطس 2016 }}</ref><ref>{{استشهاد ويب|مسار=https://www.thoughtworks.com/continuous-integration|عنوان=Continuous Integration|الأخير=|الأول=|تاريخ=|موقع=| مسار أرشيف = https://web.archive.org/web/20190516151746/https://www.thoughtworks.com/continuous-integration| تاريخ أرشيف = 16 مايو 2019|وصلة مكسورة=|تاريخ الوصول=}}</ref><ref>{{استشهاد بكتاب |الأخير= Booch |الأول= Grady |وصلة مؤلف= Grady Booch |سنة= 1991 |عنوان=Object Oriented Design: With Applications |مسار= https://books.google.com/books?id=w5VQAAAAMAAJ&q=continuous+integration+inauthor:grady+inauthor:booch&dq=continuous+integration+inauthor:grady+inauthor:booch&hl=en&sa=X&ei=0_TxU6TqIMOZyASJ3ICYCQ&ved=0CEQQ6AEwAg |ناشر= [[Benjamin Cummings]] |صفحة= 209 |isbn= 9780805300918 |تاريخ الوصول= 18 August 2014 |مسار أرشيف= https://web.archive.org/web/20170421195713/https://books.google.com/books?id=w5VQAAAAMAAJ&q=continuous+integration+inauthor:grady+inauthor:booch&dq=continuous+integration+inauthor:grady+inauthor:booch&hl=en&sa=X&ei=0_TxU6TqIMOZyASJ3ICYCQ&ved=0CEQQ6AEwAg|تاريخ أرشيف=2017-04-21}} {{Webarchive|url=https://web.archive.org/web/20170421195713/https://books.google.com/books?id=w5VQAAAAMAAJ&q=continuous+integration+inauthor:grady+inauthor:booch&dq=continuous+integration+inauthor:grady+inauthor:booch&hl=en&sa=X&ei=0_TxU6TqIMOZyASJ3ICYCQ&ved=0CEQQ6AEwAg |date=21 أبريل 2017}}</ref>
|مسار أرشيف= https://web.archive.org/web/20200616073739/https://martinfowler.com/articles/continuousIntegration.html|تاريخ أرشيف=2020-06-16}}</ref> مصحوبة باختباره بصفة متكررة.<ref>{{استشهاد ويب |الأخير =Cunningham |الأول=Ward |وصلة مؤلف=Ward Cunningham |عنوان=Integration Hell |عمل=WikiWikiWeb |تاريخ=5 August 2009 |مسار=http://c2.com/cgi/wiki?IntegrationHell |تاريخ الوصول=19 September 2009| مسار أرشيف = https://web.archive.org/web/20160825191848/http://c2.com/cgi/wiki?IntegrationHell | تاريخ أرشيف = 25 أغسطس 2016 }}</ref><ref>{{استشهاد ويب|مسار=https://www.thoughtworks.com/continuous-integration|عنوان=Continuous Integration|الأخير=|الأول=|تاريخ=|موقع=| مسار أرشيف = https://web.archive.org/web/20190516151746/https://www.thoughtworks.com/continuous-integration| تاريخ أرشيف = 16 مايو 2019|وصلة مكسورة=|تاريخ الوصول=}}</ref><ref>{{استشهاد بكتاب |الأخير= Booch |الأول= Grady |وصلة مؤلف= Grady Booch |سنة= 1991 |عنوان=Object Oriented Design: With Applications |مسار= https://books.google.com/books?id=w5VQAAAAMAAJ&q=continuous+integration+inauthor:grady+inauthor:booch&dq=continuous+integration+inauthor:grady+inauthor:booch&hl=en&sa=X&ei=0_TxU6TqIMOZyASJ3ICYCQ&ved=0CEQQ6AEwAg |ناشر= [[Benjamin Cummings]] |صفحة= 209 |isbn= 9780805300918 |تاريخ الوصول= 18 August 2014 |مسار أرشيف= https://web.archive.org/web/20170421195713/https://books.google.com/books?id=w5VQAAAAMAAJ&q=continuous+integration+inauthor:grady+inauthor:booch&dq=continuous+integration+inauthor:grady+inauthor:booch&hl=en&sa=X&ei=0_TxU6TqIMOZyASJ3ICYCQ&ved=0CEQQ6AEwAg|تاريخ أرشيف=2017-04-21}} {{Webarchive|url=https://web.archive.org/web/20170421195713/https://books.google.com/books?id=w5VQAAAAMAAJ&q=continuous+integration+inauthor:grady+inauthor:booch&dq=continuous+integration+inauthor:grady+inauthor:booch&hl=en&sa=X&ei=0_TxU6TqIMOZyASJ3ICYCQ&ved=0CEQQ6AEwAg |date=21 أبريل 2017}}</ref>


اقترح {{وإو|عر=غرادي بوش|تر=Grady Booch}} لأول مرة مصطلح CI في {{وإو|تر=Booch method|عر=طريقة بوك|نص=أسلوبه لعام 1991}}،<ref>{{استشهاد بكتاب|مؤلف1=Booch|first=Grady|url=https://books.google.com/?id=w5VQAAAAMAAJ&q=continuous+integration+inauthor:grady+inauthor:booch&dq=continuous+integration+inauthor:grady+inauthor:booch|title=Object Oriented Design: With Applications|publisher=[[Benjamin Cummings]]|year=1991|ISBN=9780805300918|page=209|author-link=Grady Booch|accessdate=18 August 2014}}</ref> على الرغم من أنه لم يدافع عن التركيب عدة مرات في اليوم. اعتمدت [[برمجة قصوى|البرمجة القصوى]] (XP) مفهوم CI ودعت إلى التركيب أكثر من مرة واحدة في اليوم والذي قد يصل إلى عشرات المرات في اليوم.<ref>{{استشهاد بدورية محكمة|last=Beck|first=K.|date=1999|title=Embracing change with extreme programming|journal=Computer|volume=32|issue=10|pages=70–77|DOI=10.1109/2.796139|issn=0018-9162}}</ref>
اقترح {{وإو|عر=غرادي بوش|تر=Grady Booch}} لأول مرة مصطلح CI في {{وإو|تر=Booch method|عر=طريقة بوك|نص=أسلوبه لعام 1991}}،<ref>{{استشهاد بكتاب|مؤلف1=Booch|first=Grady|url=https://books.google.com/?id=w5VQAAAAMAAJ&q=continuous+integration+inauthor:grady+inauthor:booch&dq=continuous+integration+inauthor:grady+inauthor:booch|title=Object Oriented Design: With Applications|publisher=[[Benjamin Cummings]]|year=1991|ISBN=9780805300918|page=209|author-link=Grady Booch|accessdate=18 August 2014| مسار الأرشيف = https://web.archive.org/web/20200716103128/https://books.google.com/books?id=w5VQAAAAMAAJ&q=continuous+integration+inauthor:grady+inauthor:booch&dq=continuous+integration+inauthor:grady+inauthor:booch&hl=en | تاريخ الأرشيف = 16 يوليو 2020 }}</ref> على الرغم من أنه لم يدافع عن التركيب عدة مرات في اليوم. اعتمدت [[برمجة قصوى|البرمجة القصوى]] (XP) مفهوم CI ودعت إلى التركيب أكثر من مرة واحدة في اليوم والذي قد يصل إلى عشرات المرات في اليوم.<ref>{{استشهاد بدورية محكمة|last=Beck|first=K.|date=1999|title=Embracing change with extreme programming|journal=Computer|volume=32|issue=10|pages=70–77|DOI=10.1109/2.796139|issn=0018-9162}}</ref>


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

نسخة 19:31، 8 أغسطس 2020

التركيب المتواصل أو التكامل المتواصل أو التكامل المستمر (إختصارًا 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 مايو 2006). "Continuous Integration". مؤرشف من الأصل في 2020-06-16. اطلع عليه بتاريخ 2014-01-09.
  2. ^ Cunningham، Ward (5 أغسطس 2009). "Integration Hell". WikiWikiWeb. مؤرشف من الأصل في 2016-08-25. اطلع عليه بتاريخ 2009-09-19.
  3. ^ "Continuous Integration". مؤرشف من الأصل في 2019-05-16.
  4. ^ Booch، Grady (1991). Object Oriented Design: With Applications. Benjamin Cummings. ص. 209. ISBN:9780805300918. مؤرشف من الأصل في 2017-04-21. اطلع عليه بتاريخ 2014-08-18. نسخة محفوظة 21 أبريل 2017 على موقع واي باك مشين.
  5. ^ Booch، Grady (1991). Object Oriented Design: With Applications. Benjamin Cummings. ص. 209. ISBN:9780805300918. مؤرشف من الأصل في 2020-07-16. اطلع عليه بتاريخ 2014-08-18.
  6. ^ Beck، K. (1999). "Embracing change with extreme programming". Computer. ج. 32 ع. 10: 70–77. DOI:10.1109/2.796139. ISSN:0018-9162.