Frage

Ich bin Einrichtung Hudson die Batch-Task-Plugin verwenden Maven Versionen unserer internen Repository zu tun. Ich mache es über:

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

Ich habe Interesse an anderen Methoden Menschen und die Vor- und Nachteile dieser Methoden verwendet haben. Außerdem haben Fallstricke Menschen stoßen.

War es hilfreich?

Lösung

Ich habe eher die Releases immer von Hand aus einigen Gründen zu tun. Erstens, wenn Sie rollen müssen wieder ist es einfacher, wenn Sie zurück in die ursprüngliche Release-Lage gehen und es tun. Zweitens, weil Sie alle Snapshot-Abhängigkeiten als Teil des Prozesses lösen müssen.

Unser Entwicklungsprozess hat uns Abhängigkeiten außerhalb des aktuellen Build bei der vorherigen Release-Version, bis ein Update erfordert ein Upgrade zu verlassen. Das bedeutet, dass, wenn ich die Freigabe Nexus, Maven, etc, dann sehe ich Schnappschüsse und es bedeutet, dass ich gehen und lassen Sie die zuerst. Dieser Prozess nicht wirklich möglich ist, zu automatisieren, da sie variiert basierend auf dem, was seit der letzten Version geändert hat.

Das heißt, wir haben eine spezielle Maschine (bei Sonatype es ist nur eine vm) -Anlage nur für aufbaut. Dies geschieht, keine Veränderungen der Umwelt zu gewährleisten vorkommen, dass ein Build zufällig (wie ein jdk ändern) beeinflussen könnten. Es macht es auch leichter für jedermann den Freigabeprozess zu holen, weil es immer bereit ist zu gehen.

Andere Tipps

Vor kurzem wurde ein m2release Plugin kam, um meine Aufmerksamkeit. Schien schön. Althought, würde ich meinen Freigabeprozess gern vollständig «Pom-Tweaking frei» sein. Was ich damit meine ist, dass wir vier Eingangsparameter zur Verfügung zu stellen haben eine vollständige Freigabe zu verarbeiten:

  1. die Release-Version (ex. 1.0.0)
  2. die neue Entwicklungsversion (ex. 1.0.1-SNAPSHOT)
  3. der Freigabe-Tag in SCM (ex. Release 1.0.0 oder 1.0.0)
  4. der Tag Basispfad in SCM

Die erste 2 akzeptable Standardwerte. Die Version auf der Bug-Fix-Version stelliges Bumping ist völlig in Ordnung für mich.

Nummer 4 in der pom angegeben werden. Es wird sich nicht ändern.

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

Es ist die dritte, die mich von einer vollständigen Automatisierung einer Freigabe am Knopfdruck verhindern. Das Standard-Release-Tag-Etikett wird es für uns nicht tun, so dass wir es angeben:

<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 könnte nur sein, was ich brauchte, habe ich am Ende am Ende mit dem -snapshot einen SVN-Tag zu müssen. :( Also muss ich den Tag-Parameter in der Hudson Job-Konfiguration übergeben. Außerdem muss ich gehen es wir ... machen für jedes Release ändern, die nicht genau das, was ich brauche.


Also, am Ende, in der hudson ein maven2 Typ Projekt mit + dem m2release hudson Plugin + Maven Release Plugin richtig konfiguriert ist die Mutter aller Freigabeprozesses die ich bisher gesehen habe. Zwar nicht perfekt, es hat mich gerettet viel tiedous Arbeit.

JS.

Ich habe immer die Menge ausgelöst Release manuell mit offensichtlichen Vor- und Nachteilen: -)

Wir haben mit der Hudson Maven Release Plugin zu experimentieren, obwohl ich ein bisschen bin herausgefordert damit immer richtig die Releases kreditieren, ohne böse Dinge wie Passwörter in unsere Build-Dateien zu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top