سؤال

جويل يبدو ان فكر بشدة في البنيات اليومية.بالنسبة للتطبيق التقليدي المترجم، يمكنني بالتأكيد رؤية مبرراته، ولكن كيف يتوازى هذا مع تطوير الويب - أم لا؟

قليلاً عن المشروع الذي أطلبه - يوجد مطوران يعملان على تطبيق الويب Django (Python).لدينا مستودع 1 svn.يحتفظ كل مطور بنسخة خاصة به من MySQL تعمل محليًا (إذا لم تكن معتادًا على Django، فهو يأتي مزودًا بخادم الاختبار الخاص به، تمامًا كما يمكن تشغيل تطبيقات ASP داخل Visual Studio).يتم إجراء التطوير والاختبار محليًا، ثم يتم إرسالهما مرة أخرى إلى المستودع.نسخة العمل الفعلية لموقع الويب هي عبارة عن فحص SVN (أعلم عن تصدير SVN ويستغرق وقتًا طويلاً).أقرب ما لدينا إلى "الإنشاء" هو ملف دفعي يقوم بتشغيل تحديث SVN على نسخة العمل، ويقوم بتات django ("manage.py syncdb")، ويحدث ذاكرة التخزين المؤقت لمحرك البحث (solr)، ثم يعيد تشغيل Apache.

أعتقد أن ما لا أراه هو التوازي مع تطبيقات الويب.

هل تقوم بإنشاء تطبيق ويب يتم التحكم فيه من خلال المصدر باستخدام "الإصدارات الليلية" - إذا كان الأمر كذلك، كيف يبدو ذلك؟

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

المحلول

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

وهذا ما نقوم به.

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

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

ونحن في خضم النظر في بيثون 2.6 (الذي يعمل تماما بالنسبة لنا) وإجراء الاختبارات وحدتنا مع خيار -3 لمعرفة الميزات الموقوفة لنستخدمه. وجود مجموعة كاملة من وحدة الاختبارات يؤكد لنا أن تغيير لبيثون 3 التوافق لن كسر الإنشاء. وتشغيلها يعني ليلا أن علينا أن نكون <م> متأكد نحن إعادة بيع ديون بشكل صحيح.

نصائح أخرى

والتكامل المستمر هو مفيد إذا كان لديك العمليات الصحيحة حوله. TeamCity من JetBrains هو نقطة انطلاق كبيرة إذا كنت ترغب في بناء الألفة:

http://www.jetbrains.com/teamcity/index.html

وهناك كبيرة من المادة التي تتعلق مباشرة إلى جانغو هنا:

http://www.ajaxline.com/continuous-integration-in -django المشروع

وهذا الأمل يحصل على انك بدأته.

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

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

إذا كنت أنت ومطور آخر فقط تعملان عليه، فمن المحتمل ألا تمنحك الإصدارات الليلية الكثير.

أود أن أقول إن تطبيق الويب المكافئ للإنشاءات الليلية سيكون عبارة عن مواقع مرحلية (والتي يمكن إنشاؤها ليلاً).

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

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

لذا، في الختام، الإعداد الذي أعمل فيه:

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

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

لقد حققت نجاحًا كبيرًا باستخدام هدسون للتكامل المستمر.تفاصيل حول استخدام هدسون مع بايثون ريدسولو.

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

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

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