Integrazione continua con Bamboo e Maven, gestione dei numeri di versione?

4

Attualmente sto sviluppando un prodotto suddiviso in poche parti principali: un server, un client Android, un client desktop e una libreria di classi per fornire strutture di dati comuni. Attualmente il mio team sta usando Maven (con un repository privato Nexus) e TeamCity per fare un'integrazione continua, ma stiamo avendo un sacco di problemi con le build fallite a causa di problemi di numerazione delle versioni. La nostra soluzione attuale prevede l'utilizzo del plug-in di versioni di incremento automatico per Maven, ma ogni volta che facciamo qualsiasi modifica ai nostri file pom dobbiamo aggiornare manualmente la versione del file pom dato che la versione del pom in Git non è più aggiornata.

Io e il mio team abbiamo deciso di guardare ad Atlassian Bamboo e, poiché stiamo apportando modifiche al nostro flusso di lavoro, vorremmo risolvere tutti questi problemi contemporaneamente. Ecco quello che stiamo cercando:

  1. Vogliamo specificare un numero di build maggiore e minore (come 0.3) e avere l'artefatto risultante distribuito nel nostro repository come major.minor.auto-incrementing-build-number (come 0.3.2, 0.3.3 , 0.4.0).
  2. Vogliamo che questo sia il più automatico possibile, dal momento che abbiamo diversi sviluppatori e basta che una persona commetta un errore per causare un'interruzione al flusso di lavoro di tutti.
  3. Preferiamo che questa funzionalità si verifichi in Bamboo, se possibile, poiché la funzione "clone project" di Bamboo ci consentirebbe di replicare rapidamente questa funzionalità tra più applicazioni, oltre a mantenere tutti i nostri file pom da una tonnellata di ulteriori codice per la gestione delle versioni.

Qualcuno ha avuto esperienza nel fare qualcosa del genere con Bamboo, o c'è un altro approccio che dovrei considerare per semplificare questo?

    
posta Brendon Dugan 01.08.2013 - 21:28
fonte

2 risposte

1

Trovo che l'utilizzo di un approccio di istantanea utilizzando la funzionalità di snapshot di Maven funzioni senza problemi.

Maven acquisirà automaticamente l'ultima release di snapshot dal repository per un particolare numero di build principale / secondario.

Diventa quindi solo questione di aggiornare i numeri di versione maggiore / minore quando fai un rilascio, e anche Maven può farlo anche per te tramite il comando maven :: release.

Normalmente uso Jenkins / Hudson per costruire il rilascio e caricare i manufatti nel repository al termine della compilazione. Ho usato TeamCity in precedenza, ma ho trovato Jenkins un'utilità CI molto più funzionale.

    
risposta data 20.08.2013 - 04:36
fonte
0

Un suggerimento di sweetfa, l'approccio migliore è usare le versioni SNAPSHOT di Maven per lo sviluppo. Le versioni aumentano solo al rilascio con l'aiuto del Maven Release Plugin. Tutto questo può essere automatizzato da Jenkins.

Non vedo alcun motivo per cui dovresti aumentare la versione degli artefatti, in qualsiasi momento diverso dalla versione; hai git per tenere il codice in un modo più granulare e puoi creare una build in qualsiasi momento.

    
risposta data 19.09.2013 - 12:25
fonte

Leggi altre domande sui tag