Kürzlich kam ein M2release-Plugin zu meiner Aufmerksamkeit. Sah nett aus. Allerdings hätte ich mir gewünscht, dass mein Release-Prozess komplett "pom-tweaking-free" wäre. Was ich damit meine ist, dass wir vier Eingangsparameter zur Verfügung zu stellen haben eine vollständige Freigabe zu verarbeiten: (Bsp. 1.0.0)
- die Release-Version
- die neue Entwicklungsversion (ex 1.0.1-. SCHNAPPSCHUSS)
- die Freisetzung in SCM-Tag (ex. release 1.0.0 oder 1.0.0)
- die Tag-Basis-Strecke in SCM
die ersten 2 akzeptable Standardwerte haben. Die Version, die an der Versionsnummer der Bug-Fix-Version anstößt, ist vollkommen in Ordnung für mich.
Nummer 4 kann in der POM angegeben werden. Es wird sich nicht ändern.
Es ist der dritte, der mich von einer vollständigen Automatisierung einer Freigabe auf Knopfdruck hindert. Das Standard-Release-Tag-Etikett wird es nicht für uns, so dass wir es an:
<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>
Jetzt, während dies nur sein könnte, was ich brauchte, ich am Ende mit dem -snapshot bei der einen SVN-Tag mit Ende. :(Also muss ich den Tag-Parameter in der Hudson-Job-Konfiguration übergeben. Außerdem muss ich es für jede Version, die wir machen, ändern ... was nicht genau das ist, was ich brauche.
Also, am Ende, in der hudson ein maven2 Typ Projekt mit + die m2release hudson Plugin + Maven Release Plugin richtig konfiguriert ist die Mutter aller Freigabeprozess die ich bisher gesehen habe. Obwohl es nicht perfekt war, hat es mir viel Arbeit gespart.
JS.
Leider halte ich manuelle Releases für eine Lösung, die technisch akzeptabel, aber politisch inakzeptabel wäre. Ich werde erwähnen, dass eine ältere Person bei Sonatype _personally_ vorgeschlagen hat, dass wir unsere Releases per Hand machen. – sal
Die Alternative ist, dass du das Release machst: Bereite das Ziel von Hand vor oder zumindest das Release: bereite -Ddryrun = true vor, bis du sicher bist, dass alle Kriterien erfüllt sind, dann kannst du deinen Build-Prozess starten und einigermaßen sicher sein es wird funktionieren. –
Ich mag diese Idee wirklich. Nach dem Release: prepare -Ddryrun = true zuerst ausgeführt sollte die meisten Probleme, die wir haben könnten, verhindern. – sal