Domanda

Sono la creazione di Hudson usare il plugin batch compito di fare release Maven al nostro repository interno. Lo sto facendo tramite:

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

Mi interessa altri metodi persone hanno utilizzato ed i pro ei contro di questi metodi. Inoltre, tutte le persone Gotchas hanno incontrato.

È stato utile?

Soluzione

Ho avuto la tendenza a fare le uscite sempre a mano per un paio di motivi. In primo luogo se avete di ripristinare è più facile quando si può tornare alla posizione originale di rilascio e farlo. In secondo luogo, perché è necessario risolvere tutte le dipendenze istantanee come parte del processo.

Il nostro processo di sviluppo ha lasciandoci dipendenze esterne alla generazione corrente alla versione precedente fino a quando una correzione richiede un aggiornamento. Ciò significa che se sto rilasciando Nexus, Maven, ecc, poi vedo istantanee e significa che devo andare via e liberare quei primi. Questo processo non è davvero possibile automatizzare in quanto varia in base a che cosa è cambiato dopo l'ultima release.

Detto questo, abbiamo una macchina speciale (a Sonatype è solo una VM) messa a punto solo per costruisce. Questo viene fatto per garantire cambiamenti ambientali si verificano che potrebbero influenzare una build accidentalmente (come un cambiamento JDK). E rende anche più facile per chiunque di prendere il processo di rilascio perché è sempre pronto ad andare.

Altri suggerimenti

Di recente, un plugin m2release venuto alla mia attenzione. Sembrava bello. Althought, mi sarebbe piaciuto il mio processo di rilascio di essere completamente «pom-libera-tweaking». Quello che voglio dire con questo è che dobbiamo fornire 4 parametro di input per elaborare un rilascio completo:

  1. la versione (es. 1.0.0)
  2. la nuova versione di sviluppo (es. 1.0.1-SNAPSHOT)
  3. il tag rilascio in SCM (es. Rilascio-1.0.0 o 1.0.0)
  4. il percorso di base tag in SCM

I primi 2 hanno valori predefiniti accettabili. La versione urtando alla versione di bug-fix cifre è perfettamente bene per me.

Numero 4 può essere specificato nel pom. Non cambierà.

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

E 'la terza che mi impediscono di una completa automazione di un rilascio con la semplice pressione di un tasto. L'etichetta di identificazione versione di default non lo farà per noi, così dobbiamo specificare che:

<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>

Ora, mentre questo potrebbe essere proprio quello che mi serviva, io alla fine avere un tag svn con la -snapshot alla fine. :( Quindi devo passare il parametro tag nella configurazione del processo di Hudson. Inoltre, devo andare cambiarlo per ogni release che facciamo ... che non è esattamente quello che mi serve.


Così, alla fine, avere un progetto di tipo maven2 a Hudson + il plugin m2release Hudson + il rilascio Maven plugin di configurato correttamente è la Madre di tutto il processo di rilascio che ho visto finora. Anche se non è perfetto, mi ha salvato un sacco di lavoro tiedous.

JS.

Ho sempre innescato manualmente un rilascio con evidenti vantaggi e svantaggi: -)

avuto modo di sperimentare con il plugin rilascio Hudson Maven, anche se sono un po 'in discussione con ottenerlo ad accreditare correttamente le uscite, senza cose cattive come hardcoding le password nei nostri file di generazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top