سؤال

أقوم بإعداد Hudson لاستخدام البرنامج المساعد لمهمة الدفعة للقيام بإطلاقات Maven إلى مستودعنا الداخلي. أنا أفعل ذلك عن طريق:

mvn --batch-mode release:prepare
mvn --batch-mode release:perform

أنا مهتم بطرق أخرى استخدم الناس والإيجابيات وسلبيات تلك الأساليب. أيضا، لقد صادف أي شخص gotchas.

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

المحلول

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

تتمتع عملية التطوير الخاصة بنا بترك التبعيات الخارجية على الإنشاء الحالي في إصدار الإصدار السابق حتى يتطلب الإصلاح ترقية. هذا يعني أنه إذا قمت بإصدار Nexus، Maven، ETC، فأنا أرى اللقطات وهذا يعني أنني يجب أن أخرج وإطلاق أولئك الأولى. هذه العملية غير ممكنة حقا أتمتة لأنه يختلف بناء على ما تم تغييره منذ الإصدار الأخير.

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

نصائح أخرى

في الآونة الأخيرة، جاء البرنامج المساعد M2Release إلى انتباهي. بدا لطيفا. على الرغم من ذلك، كنت قد أحببت عملية الإفراج الخاصة بي لتكون تماما «خالية من POM-Tweaking ما أقصد ذلك هو أنه يتعين علينا تقديم 4 معلمة إدخال لمعالجة الإصدار الكامل:

  1. إصدار الإصدار (EX. 1.0.0)
  2. النسخة التطوير الجديدة (EX. 1.0.1-Snapshot)
  3. علامة الإصدار في SCM (EX. الإصدار-1.0.0 أو 1.0.0)
  4. مسار قاعدة العلامة في SCM

أول 2 لها افتراضيات مقبولة. الإصدار يصطدم في رقم إصدار الإصدار إصلاح الأخطاء هو جيد تماما بالنسبة لي.

رقم 4 يمكن تحديدها في بوم. لن يتغير.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <configuration>
        <tagBase>https://example.com/svn/myProject/releases</tagBase>
    </configuration>
</plugin>

إنها الثالثة التي تمنعني من أتمتة كاملة عن إصدار دفعة زر واحدة. لن تفعل تسمية علامة الإصدار الافتراضية ذلك بالنسبة لنا لذلك علينا تحديد ذلك:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <configuration>
        <tag>release-${pom.version}</tag>
        <tagBase>https://example.com/svn/myProject/releases</tagBase>
    </configuration>
</plugin>

الآن، في حين أن هذا قد يكون مجرد ما أحتاجه، فقد انتهى بي الأمر وجود علامة SVN مع -Snapshot في النهاية. :( لذلك لا بد لي من اجتياز المعلمة العلامة في تكوين الوظيفة Hudson. علاوة على ذلك، يجب أن أذهب لتغييره لكل إصدار أقوم به ... ليس بالضبط ما أحتاج إليه.


لذلك، في النهاية، وجود مشروع من نوع MAVEN2 في Hudson + البرنامج المساعد Hudson M2Release + المكون الإضافي للبرنامج Maven تم تكوينه بشكل صحيح هو أم كل عملية الإصدار التي رأيتها حتى الآن. في حين ليست مثالية، فقد أنقذتني الكثير من العمل Tiedous.

JS.

لقد أدت دائما إلى إطلاق سراح يدويا مع إيجابيات وسلبيات واضحة :-)

لقد تم تجربتها مع البرنامج المساعد Hudson Maven المكون الإضافي، على الرغم من أنني تحدى بعض الشيء مع الحصول عليها بشكل صحيح الائتمان، دون أشياء شريرة مثل كلمات مرور Hardcoding في ملفاتنا المبنى.

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