سؤال

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

هل كانت مفيدة؟

المحلول

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

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

وأنا لا أعرف، على الرغم من، إذا كان ذلك من الناحية الفنية لا يزال CI، منذ كنت تفعل سوى "جزئيا" بناء كل مرة، من خلال تجاهل بعض الاختبارات.

نصائح أخرى

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

ليبني ليلا، إلا أننا دمج فقط التعليمات البرمجية المصدر التي تم من خلال عملية مراجعة النظراء وتعتبر جاهزة للاختبار.

وبهذه الطريقة، وبناء ليلا يحتوي دائما بناء هذا هو 'ميزة على استعداد "للاختبار، في حين أن بناء CI يحتوي على ميزات أنه في حين ظيفية (إلى درجة أن وحدة الاختبارات تمر) قد لا تكون مستعدة لإرسال للاختبار المجموعة.

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

نعم، إذا كانت لديك عملية تريد إرفاقها بالبنية، ولكنها ثقيلة الموارد.على سبيل المثال، في فريقي نقوم بتشغيل JTest أثناء البناء الليلي.لا يمكننا تشغيله خلال النهار للأسباب التالية:

  1. يتطلب الكثير من الموارد، والتي قد لا تكون متاحة
  2. يستغرق إكماله 4 ساعات في كل مرة

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

وعلى سبيل المثال، إذا عملية الإنشاء الخاصة بك يأخذ 5 ساعات لإكمال هناك حقا أي سبب للقيام بناء على الاختيار في.

وأبعد من ذلك، هناك الكثير من القيمة في معرفة أقرب وقت ممكن عند فشل بناء أنه يتجاوز المخاوف الأخرى.

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

وكنا التكامل المستمر في وظيفتي الماضي لبضعة أغراض مختلفة.

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

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

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

إذا كانت لديك عملية CI قوية ولطيفة، فإن "الليلة" لا تزال مفيدة.

  1. كما ذكرنا سابقًا، يمكن للإصدار "الليلي" إجراء اختبارات شاملة وربما بعض اختبارات النظام عالية المستوى.الاشياء من النهاية إلى النهاية.
  2. يمكن بسهولة فهم مفهوم البناء "الليلي" من قبل كل فرد في المؤسسة.إذا كنت تواجه مشكلة في توصيل تصميمات CI إلى مجموعات أخرى (على سبيل المثال، مجموعة ضمان الجودة التي لا تمتلك نفس المقبض على Agile الذي قد تمتلكه مجموعة Dev) فإن "الليلة" هي مفهوم قوي وبسيط.
  3. إذا كانت مجموعتك الليلية عبارة عن مجموعة منفصلة من الموارد، فيمكن إدارتها بشكل منفصل واستخدامها لقص الصور "الذهبية" مع بعض الادعاءات المتعلقة بسلامة البرامج.على سبيل المثال، يقوم المطور بكتابة التعليمات البرمجية، ويقوم بعض أنظمة البناء الموثوقة التي لا يستطيع المطورون لمسها ببناءها، وتقوم ضمان الجودة باختبار البنية الذهبية وتوقيعها.في مثل هذه الحالة، يعمل البناء الليلي مثل نظام بناء الإنتاج.

فقط بعض الأفكار.

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

في بعض المنظمات يبني مسؤول يتم معالجتها من قبل فريق إدارة البناء / البنية التحتية / الإفراج / SCM استجابة الحد الأدنى. في هذه الحالات قد وضعها المسؤول عن بناء ليلا ثم قم بتشغيل بناء CI من التنمية. هذا يتجنب قتال بسبب بناء على ما زال "بناء الرسمية" وCI الإنشاء الخاصة بك تعطيك ردود الفعل التي تحتاج إليها.

ونحن على حد سواء التكامل المستمر ويبني ليلا في المكان. أنها تخدم غرضين مختلفين.

ولدينا آلية التكامل المستمر يبني البرنامج وتدير وحدة الاختبارات تحت جناح التكامل المستمر.

ولدينا بناء ليلا علامة باسم المصدر تحت التحكم في الإصدار، ويبني البرنامج، يتم تشغيل وحدة الاختبارات تحت جناح بناء ليلا. ثم يتم استخدام البرامج المضمنة هنا في مختلف اختبارات نظام واختبارات التحمل.

وأعتقد أن واحدا من الاختلافات الرئيسي لبناء ليلا هو نظام الاختبارات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top