سؤال

إذن، من خلال تجربتك، ما هي أفضل طريقة؟هل هناك طريقة آمنة قابلة للبرمجة/التشغيل في أداة أتمتة البناء؟

يحرر:يجب أن أذكر أن هذا هو windows/.net وسأقوم بالنشر على iis6

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

المحلول

بالنسبة لبعض المشاريع التي أستخدمها كابيسترانو لدفع للعيش.إنه مبني على روبي ويجعل نشر كتابة البرامج النصية أمرًا سهلاً للغاية ويستخدم ssh.

في مشاريع أخرى، لدي تطبيق نشر صغير يستخدم bash للقيام بتصدير svn إلى دليل مؤقت ثم rsync إلى الخادم المباشر.يمكنك جعل rsync يستخدم ssh.

أفضّل طريقة Capistrano كثيرًا، حتى لو لم يكن مشروعك في روبي/ريلز.

نصائح أخرى

يبدو أن هذا هو الشيء الذي يمكن القيام به بسهولة باستخدام SFTP.نلقي نظرة على المعجون (psftp وpscp) أو WinSCP لنظام التشغيل Windows، أو rsync و OpenSSH ليونكس.

@ نيل ، أود أن أضيف أ set -e في السطر الثاني، لأنك لا تريد استبدال الموقع المباشر إذا كان rsync يفشل لأي سبب من الأسباب. set -e يؤدي إلى خروج البرنامج النصي في حالة فشل أي من أوامره.

يحرر:ال set -e يجب أن يكون أول شيء في البرنامج النصي، مباشرة بعد ذلك #!/bin/bash.

قم بعمل نسخة من دليل موقعك المباشر، استخدم rsync لتحديث تلك النسخة بأحدث إصدار لديك، ثم قم بإعادة تسمية الدلائل المباشرة والمحدثة بحيث يصبح الإصدار المحدث الآن مباشرًا.

في باش:

#!/bin/bash

set -e
cp -R /var/livesite /var/newversion
rsync user@devserver:/var/readytogolive /var/newversion
mv /var/livesite /var/oldlivesite
mv /var/newversion /var/livesite

فيولا!

يحرر:@ تيد بيرسيفال - هذه فكرة جيدة.لم أكن أعرف حتى عن "set -e".تحديث البرنامج النصي.يحرر:تم التحديث مرة أخرى بناءً على اقتراح Ted (على الرغم من أنني أعتقد أنه سيظل يعمل إذا فشل الأمر cp بطريقة أو بأخرى، وإذا فشل cp فمن المحتمل أن يكون لديك مشكلات أكثر خطورة.)

سأؤيد التوصية لـ كابيسترانو, ، على الرغم من أنك إذا كنت تبحث عن حل يستند إلى واجهة المستخدم الرسومية، فيمكنك تجربة ويبسترانو نهاية المقدمة.دلالات النشر والتراجع النظيفة والمبنية على SSH والبرمجة النصية السهلة والقابلية للتوسعة عبر روبي.

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

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

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

بمجرد اختباره، فقط؛استبدل الملفات الموجودة على webroot للإنتاج :)

/ النائب

في وظيفة مستقلة قمت بها، أنشأنا ثلاث بيئات منفصلة.

  • يستمر إنشاء خادم Dev الذي تم تشغيله باستخدام CruiseControl.أي تسجيل وصول من شأنه أن يؤدي إلى البناء.تم إجراء اختبار ضمان الجودة هنا.
  • خادم اختبار، تم إجراء اختبار قبول المستخدم عليه.
  • إنتاج.

وكان سير العمل على النحو التالي:

  1. يتحقق المطور من التغييرات التي تم إجراؤها على SourceControl.
  2. يقوم CruiseControl بإنشاء البنية ونشرها على Dev.
  3. ديف هو QA'ed
  4. بعد اجتياز ضمان الجودة، يتم تشغيل برنامج نصي robocopy لنشر إصدار Dev للاختبار.
  5. الاختبار هو UAT'ed
  6. بعد اجتياز الاختبار، يتم تشغيل البرنامج النصي robocopy الذي ينشر الاختبار إلى PRD.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top