2013-01-11 10 views
6

Sto pensando a una pipeline di distribuzione utilizzando SVN, Jenkins e Maven. Al momento sono bloccato al punto in cui di solito chiamerei lo mvn release:perform su una copia funzionante.È possibile utilizzare il plugin maven-release-plug con una revisione specifica?

Quando si pensa alle pipeline di distribuzione, voglio creare una pipeline in cui ogni commit possa essere utilizzato per rilasciare un software da testare/produrre. Diciamo che ho 5 build e decido di rilasciare build 3 (con revisione 3) in produzione. Ci saranno già 2 nuovi commit nel trunk (che ora è alla revisione 5).

È possibile utilizzare lo maven-release-plugin per eseguire il checkout/build/tag/commit di una versione di revisione 3? Quando il plugin di rilascio di Maven termina il rilascio, di solito esegue il commit delle POM modificate nella cartella .

Sono felice di qualsiasi tipo di informazione o consiglio qui, quindi sentitevi liberi di indicarmi libri (come http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912), post di blog, documentazione di Jenkins ... Forse sono completamente sulla strada sbagliata.

risposta

2

Per impostazione predefinita, il plug-in di rilascio crea la versione in base al contenuto della copia di lavoro, garantisce solo che non si disponga di contenuto non impegnativo prima di procedere. AFAIK non impone un aggiornamento delle fonti, poiché di solito è il lavoro del sistema di integrazione continua (Jenkins nel tuo caso). Quindi qualsiasi cosa venga controllata da Jenkins verrà rilasciata.

Quello che stai cercando di fare suona più come un cambio di configurazione sul lato Jenkins, puntandolo verso la revisione giusta.

D'altra parte, se i file POM vengono modificati come parte della versione, ma sono stati modificati in SVN nel frattempo, si verificherà un conflitto quando Maven vuole verificare i file POM modificati. Questa è una situazione che potrebbe accadere, a seconda di come tornare alla versione.

In base a ciò, potrebbe essere più opportuno creare sempre un ramo prima di fare un rilascio. Quindi dovresti creare un ramo basato sulla revisione 3 e quindi creare il tuo rilascio in quel ramo. In questo modo, non ti imbatterai in problemi con l'impegno di risorse che sono cambiate in revisioni più recenti.

Creare il ramo e verificarlo potrebbe essere automatizzato anche attraverso Jenkins e Maven.

+0

Come possiamo automatizzare il processo di rilascio in jenkins.Per favore, consulta questo http://stackoverflow.com/questions/18778986/how-to-automate-a-job-in-jenkins –

1

Per quanto ho provato, non è possibile.

Più esplicitamente, come nwinler ha detto, quando si rilascia, Maven tenta di impegnare il pom modificato. Ma, se si tratta di una revisione più vecchia di quella attuale, SVN si lamenterà che le tue fonti non sono aggiornate. Quindi non funzionerà. ... per quanto ne so.

È possibile leggere i documenti relativi alla promozione. Non ne trovo nessuno abbastanza chiaro da essere indicato (in pochi minuti dalla stesura di questo messaggio).

Problemi correlati