سؤال

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

  • فيجوال ستوديو 2008
  • مشروع تطبيق الويب
  • CruiseControl.NET

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

ومما يثير الاهتمام بشكل خاص أيضًا كيفية دعم بيئات متعددة حيث لدينا dev وqa وuat ثم بالطبع prod.

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

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

المحلول

لقد أمضيت مؤخرًا بضعة أيام في العمل على أتمتة عمليات النشر في شركتي.

نحن نستخدم مزيجًا من CruiseControl وNAnt وMSBuild لإنشاء نسخة إصدار من التطبيق.ثم يستخدم برنامج نصي منفصل MSDeploy وXCopy لإجراء نسخ احتياطي للموقع المباشر ونقل الملفات الجديدة.

تم وصف حلنا بإيجاز في إجابة على هذا السؤال أتمتة النشر لتطبيقات الويب؟

نصائح أخرى

كنت قد تكون مهتمة في MSDeploy. هنا مشاركة سكوت هانسيلمان حول هذا الموضوع.إنه متاح فقط كمعاينة فنية في الوقت الحالي (سبتمبر 2008) ولكنه يستحق التقييم وفقًا لمتطلباتك.

هناك أداة بناء جديدة أخرى (مجمّع ذكي جدًا) تسمى NUBuild.إنه خفيف الوزن ومفتوح المصدر وسهل الإعداد للغاية ويوفر صيانة بدون لمس تقريبًا.تعجبني هذه الأداة الجديدة حقًا وقد جعلناها أداة قياسية لعملية البناء والتكامل المستمرة لمشاريعنا (لدينا حوالي 400 مشروع عبر 75 مطورًا).حاول.

http://nubuild.codeplex.com/

  • واجهة سطر الأوامر سهلة الاستخدام
  • القدرة على استهداف كل نسخة إطار عمل .NET أي1.1، 2.0، 3.0 و 3.5
  • يدعم التكوين القائم على XML
  • يدعم كل من مراجع المشروع والملفات
  • يقوم تلقائيًا بإنشاء "قائمة الإنشاء الكاملة المطلوبة" لمشروع معين - لا توجد صيانة تعمل باللمس.
  • القدرة على اكتشاف وعرض التبعيات الدائرية
  • أداء بنية متوازية - يقرر تلقائيًا أي من المشاريع الموجودة في قائمة الإنشاء التي تم إنشاؤها يمكن بناؤها بشكل مستقل.
  • القدرة على التعامل مع تجميعات الوكيل
  • يوفر فكرة مرئية لعملية الإنشاء على سبيل المثالإظهار "٪ مكتمل" ، "الوضع الحالي" إلخ.
  • يولد سجل تنفيذ مفصل في كل من XML وتنسيق النص
  • دمج بسهولة مع نظام التكامل المستمر Cruise-Control.net
  • يمكن استخدام مسجل مخصص مثل Xmllogger عند استهداف 2.0 + إصدار
  • القدرة على تحليل سجلات الأخطاء
  • القدرة على نشر التجميعات المصممة على الموقع المحدد للمستخدم
  • القدرة على مزامنة رمز المصدر مع نظام التحكم في المصدر
  • القدرة على إدارة الإصدار

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

كان لدي سؤال ذو صلة حول الحصول على مجموعة من الملفات القابلة للنشر من إنشاء آلي.لقد وجدت أن Web Deployment Projects (الروابط وكل ما في السؤال القديم) فعلت ما أحتاجه - فهي وظيفة إضافية لـ VS وMSBuild.

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

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

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

الشيء الوحيد الذي لم تذكره فيما يتعلق بهذه العملية هو جانب نشر قاعدة البيانات.تتطلب معظم تطبيقات ASP.NET قاعدة بيانات مرتبطة بها، وإلا فقد تكون مجرد ملفات HTML ثابتة.من الضروري أن يتم تحديث مخطط قاعدة البيانات إلى إصدار قاعدة البيانات المناسب مع كل عملية نشر.ليس من المستغرب أن توجد وحدة نمطية داخل BuildMaster تتعامل مع هذا الأمر نيابةً عنك أيضًا.والفكرة هي تخزين البرامج النصية DDL-DML داخل الأداة نفسها، ومن خلال تنفيذ البرامج النصية مرة واحدة فقط لكل بيئة، فإنه يضمن أن جميع قواعد البيانات الخاصة بك عبر كل بيئة محدثة حيث يتم نشر الإصدارات الخاصة بك من خلالها.البرامج النصية الأخرى (على سبيل المثال.الإجراءات المخزنة، وطرق العرض، والمشغلات، وما إلى ذلك) هي في الأساس ملفات تعليمات برمجية وبالتالي تنتمي إلى التحكم بالمصادر.يمكن تشغيل البرامج النصية من نوع DROP-CREATE-CONFIGURE في كل مرة في معظم الحالات من خلال إجراء نشر بسيط.

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

على الرغم من أنني أدرك أنني استبعدت CC.NET من الإجابة، إلا أن جميع تطبيقاتنا تم إنشاؤها ونشرها من خلال BuildMaster، لذلك لم نعد بحاجة إليها، على الرغم من أنه يمكننا بسهولة التقاط العناصر من موقع الإسقاط ونشرها في بيئات لاحقة.

أرى أن العديد من الأشخاص يستخدمون CC لمشاريع .NET الخاصة بهم، ولكن لماذا لا يستخدمون Jenkins، Sonarqube؟لقد حصلوا على كل ما تحتاجه.أقوم بإعداد كل هذا في 3 أيام.لدي خادم Win 2008 R2 وMSSQL وJenkins وVIsual SVN وSonarqube.

كل شيء يعمل بشكل رائع وستحصل على جميع المقاييس الخاصة بمشروعك.يستخدم Sonarqube Gallio، وGendarme، وFXcop، وStylecop، وNDepths، وPartCover للحصول على المقاييس الخاصة بك، وكل هذا سهل جدًا نظرًا لأن SonarQube يقوم بذلك تلقائيًا دون الكثير من التكوين.

أقوم بنشر بعض الصور من أجلك أيضًا وأشعر بذلك.هنا تقوم ساحرة Jenkins ببناء والحصول على مقاييس السونار ومهمة أخرى للنشر تلقائيًا إلى IIS

وSonarqube، جميع المقاييس لمشروعي.هذا تطبيق MVC4 بسيط، لكنه يعمل بشكل رائع!:

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

يستخدم هذا الإعداد بأكمله MSBuild، وكذلك إنشاء التطبيقات ونشرها.

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