2013-01-23 18 views
7

In un ambiente in cui è possibile creare più build (rilascio di pacchetti candidati) ogni giorno ma solo uno al mese viene promosso in produzione, penso che memorizzare ogni build in Git sarebbe uno spreco ma ci dovrebbe essere una posizione a breve termine che le ultime build sono pubblicatiGit deve essere utilizzato per memorizzare le build di integrazione continua?

Attualmente sto pubblicandoli in una directory condivisa. Ho visto IVY utilizzato per questo tipo di editoria binaria in passato. Git sembra eccessivo, perché gonfia a causa del suo modello di non cancellare mai nulla.

Esiste un modo concordato e standardizzato di gestire/pubblicare questi artefatti di costruzione transitori?

+4

Perché memorizzare l'artefatto? Le build possono essere ricreate. –

+0

(Voglio dire, in git, comunque. La maggior parte dei server CI mantiene comunque le build per un tempo configurabile?) –

+0

Le build possono essere ricreate ma gli ambienti di creazione a volte non possono. Unles mantieni l'intera catena di strumenti sotto controllo di revisione, non c'è la certezza che puoi costruire lo stesso binario dopo che è trascorso un grande lasso di tempo. Inoltre, è impossibile creare esattamente lo stesso binario (i timestamp incorporati generano diversi checksum dei file). Ciò rende difficile per le terze parti fidarsi o certificare il software a meno che non lo costruiscano anche dal sorgente. –

risposta

10

non vorrei conservare i manufatti Costruire in git, ma invece cercare di condividere i manufatti costruire da un server Continuos Integration (CI) o un repository dedicato come artefatto artifactory o nexus. In generale, trovo il modo migliore per evitare binari di grandi dimensioni in tutti gli SCM in quanto non li differisci o fare aggiornamenti incrementali, così troverai il tuo repository git cresce rapidamente mentre memorizza una versione completa del file binario ad ogni modifica.

La maggior parte degli strumenti di integrazione continua (come Jenkins) avrà la possibilità di archiviare gli ultimi artefatti di X build o tutti gli artefatti di build realizzati nell'ultimo mese. Dispongono anche di plug-in che aiutano a supportare e automatizzare il processo di promozione delle build che ritieni utili (ad esempio Jenkins build promotion).

Utilizzando un repository di risorse o il server CI per gestire le risorse di build, è anche possibile accedere alle risorse tramite un'API che risulta molto utile quando si desidera automatizzare i processi di distribuzione, ad esempio è possibile effettuare chiamate come 'getLastSuccesfullBuild' e 'getLastPromotedBuild()' ecc.

+2

+1 I gestori di repository come Nexus, Artifactory o Archiva sono progettati per risolvere questo problema. Guarda le loro caratteristiche. Utilizziamo Nexus Professional che ci consente di "mettere in scena" i nostri rilasci e creare flussi di lavoro di certificazione, dove DEV crea gli artefatti di costruzione, che vengono successivamente approvati da Test e QA prima di colpire il repository di produzione. –

Problemi correlati