سؤال

أحاول أتمتة عملية الإنشاء للمجموعة الهندسية.وكجزء من هذه الأتمتة، أحاول الوصول إلى نقطة حيث يؤدي تطبيق علامة معينة تلتزم بنمط ما إلى إطلاق عملية تلقائية ستقوم بما يلي:

  • تحقق من كود المصدر
  • قم بإنشاء برنامج نصي للبناء من القالب
  • بناء المشروع

أنا متأكد تمامًا من أنني أستطيع القيام بذلك باستخدام الخطاف اللاحق في التخريب، لكنني أحاول اكتشاف طريقة للقيام بذلك باستخدام شيء آخر غير الخطاف التخريب.

  • هل سيكون من المنطقي مراقبة دليل العلامات في مستودع التخريب لبدء سير العمل الخاص بي؟
  • هل هناك أي أدوات مناسبة تساعد في هذا (سيكون .NET رائعًا إن أمكن).
  • هل من الأفضل أن أكتب محركًا للقيام بذلك؟

تفضيلاتي:

  • المنتج الحالي الذي يقوم بكل هذا أو جزء منه
  • إذا كانت هناك حاجة لأعمال التطوير، فمن الأفضل استخدام .NET
  • يعمل مع نظام التشغيل Windows (لدينا مستودع يستند إلى نظام التشغيل Linux، ولكن جميع عمليات الإنشاء تتم على نظام التشغيل Windows)
هل كانت مفيدة؟

المحلول

انا يعجبني هدسون - سهل الإعداد ويعمل خارج الصندوق باستخدام SVN.

يمكنك تكوينه للبناء على كل التزام.

لقد قمت بتنزيله وبدأت في البناء به خلال يوم واحد.لقد مر بالكثير من التعديلات، لكنني أوصي به لأي شخص.

لقد استخدمت أيضًا نظام تثبيت السرعة ولكني لست سعيدًا بذلك.ليس لدي أي أسباب محددة بخلاف المشكلة عبر الأنظمة الأساسية.

يحرر

لقد قمت مؤخرًا بإضافة وظيفة على خادم بناء Hudson الخاص بي الذي يستمع إلى دردشة Google/Gmail Jabber.يمكنني "الترويج" للإصدار "العادي" لإصدار الإصدار باستخدام هذه الآلية.لقد قمت للتو بإعداد وظيفة جديدة تقوم بالخطوات اللازمة لترويج/نشر إصدار خاص لمرشح الإصدار.

نصائح أخرى

لقد فعلت هذا باستخدام هدسون.في فتحة الخروج العادية من التخريب، لديّ خيار الخروج من صندوق السيارة:

http://dryad.googlecode.com/svn/trunk/dryad

بعد ذلك، كأول إجراء بناء، لدي "تنفيذ الصدفة" وفي تلك الصدفة استخدم مفتاح svn للتغيير إلى أحدث علامة في المستودع:

التبديل svn http://dryad.googlecode.com/svn/tags/'svn ليرة سورية http://dryad.googlecode.com/svn/tags | الذيل -N 1' درياد

خطوة الإنشاء التالية هي أمر "التثبيت النظيف" المخضرم الذي يبدأ الإنشاء باستخدام الكود من الإصدار الموسوم.

لم أكتشف بعد كيفية جعل Hudson يبدأ بأحدث إصدار موسوم بدلاً من الاضطرار إلى إجراء التبديل، لكن التبديل يعمل.يمكنك بعد ذلك الحصول على المشغل عند تحديث دليل العلامات.

إنها آلية...قليلا من الحماقة، لكنه يعمل ...

يجب أن يتضمن المفتاح علامة خلفية لأمر svn الثاني ولكن كان عليه استخدام "" لأن علامة الرجوع لم تظهر هنا.

يبدو أنك تسعى إلى التكامل المستمر لبناء محرك مثل CruiseControl أو Hudson (مكتوب Hudson بلغة Java ولكنه سهل الاستخدام للغاية في Windows).

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

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

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

أنا أوصي هدسون لهذا.

كروز كونترول.نت يمكن بسهولة أتمتة عمليات البناء التلقائية من مستودعات التخريب.

يمكنه مراقبة المستودع (Svn والعديد من الأنواع الأخرى) وبدء الإنشاءات التلقائية باستخدام مجموعة متنوعة من الأدوات.(نانت، MSBuild، الخ.)

لقد تم الإعلان عن منتج تجاري على هذا الموقع لهذا الغرض بالضبط!

http://www.finalbuilder.com/Default.aspx?tabid=314

قد تحتاج إلى إضافة خطاف لاحق إلى SVN لبدء عملية الإنشاء إلا إذا كنت تريد تشغيله بجدول زمني.

وأود أيضًا أن أوصي بهدسون لهذا الغرض.كنت أتطلع إلى القيام بشيء مماثل، وإنشاء علامة وبدء الإنشاء.وبدلاً من ذلك اخترت استخدام هذا البرنامج المساعد لـ hudson:

http://wiki.hudson-ci.org/display/HUDSON/Release+Plugin

واستخدم هذا لدفع إنشاء العلامة وإنشاء إصدار صريح.

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

لست متأكدًا مما إذا كانت المهام الحالية تسمح لك بالقيام بما تريده بالضبط، ولكن ربما يمكنك استخدامه كبداية، وإذا لزم الأمر، يمكنك توسيعه بمهام تناسب احتياجاتك الخاصة (تم تطويره باستخدام .NET).

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

ستعمل العملية بشكل مختلف قليلاً عما وصفته أعلاه.سيقوم خادم البناء بما يلي:

  1. الكشف عن التزام جديد
  2. تحقق من كود المصدر الخاص بك
  3. قم بتشغيل البرنامج النصي للبناء الخاص بك
  4. علامة على البناء الناجح

يؤدي الالتزام إلى تشغيل العملية وإنشاء العلامة بدلاً من العلامة التي تؤدي إلى تشغيل العملية.يقوم الخادم بهذا بمراقبة مستودع svn بدلاً من ربط الالتزام.

راجع وثائق CruiseControl.Net حول هذا الموضوع، وتحديدًا خيارات tagOnSuccess وtagBaseUrl.يجب أن يكون لدى Hudson وCruiseControl خيارات مماثلة.

http://confluence.public.thinktworks.org/display/CCNET/Subversion+Source+Control+Block

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