Ultimamente ho pensato a CI e alle build automatiche e sono interessato a sapere se ci sono delle best practice per l'impostazione e il mantenimento di un ambiente di integrazione continuo. Mantieni tutti i tuoi file relativi al CI registrati con la fonte del tuo progetto? Come strutturate normalmente il vostro CI e create i file? Qualsiasi suggerimento è benvenuto!Integrazione continua - Best practice
risposta
Se non l'hai già, sicuramente check out il libro Continuous Integration della serie Martin Fowler, da Duvall/Matyas/Glover. Copre tutte le domande che chiedi in profondità con esempi solidi.
C'è anche il "Pragmatic Project Automation" della serie Pragmatic.
Ovviamente, tutti i file necessari per la compilazione devono essere archiviati. In che altro modo CI potrebbe ottenere da loro?
Ho usato CI con Java, quindi significa Ant build.xml e Cruise Control, Team City o Hudson. È possibile che il file build.xml sia generico se si mantiene una struttura di directory coerente per i propri progetti.
Sì. Dovrai installare diverse cose sul tuo build server, ma l'obiettivo è quello di avere tutti i tuoi file relativi alla CI sotto il controllo del codice sorgente (e di fare in modo che il server CI estragga i file da lì). Usiamo TeamCity per lo sviluppo di C#. Se una build diventa complessa, usiamo NAnt (che può chiamare anche MSBuild). – TrueWill
Se lo script di generazione inizia a diventare grande, è possibile dividerlo e includere le parti pertinenti. Ciò migliora la manutenzione e la leggibilità.
Il mio altro consiglio sarebbe diverso da quello della programmazione tradizionale: quando si crea una sceneggiatura si fa uso di quantità generose di commenti.
- Iniziare con una fase di costruzione. Se non si dispone di questo, non si può avere qualsiasi CI ragionevole
- Se non è in controllo del codice sorgente, non esiste
- Se l'installazione e la manutenzione del CI supera lo sforzo di creare uno sviluppatore workstation quindi sei troppo dipendente dal tuo IDE o la struttura del tuo progetto è eccessivamente complicata. Consideralo un'opportunità di refactoring.
- Non hai bisogno di niente di speciale per fare CI. Non hai nemmeno bisogno di sapere cosa vuol dire farlo. Ho scritto su my earlier experience here, quando ho implementato un ingenuo CI prima di aver mai sentito il termine CI.
Kohsuke Kawaguchi, il fondatore del popolare strumento CI Jenkins/Hudson, ha appena pubblicato un white paper che potrebbe risultare utile. 7 Ways to Optimize Jenkins
allot fo CI le cose sono indipendenti dalla piattaforma, ma come strutturate il vostro CI e create file parte della vostra domanda potrebbe essere influenzata dalla piattaforma. Ti interessa condividere la tua piattaforma? – olle
Sto vivendo in un ambiente .NET/Windows. Al momento utilizziamo Cruise Control .NET, MSBuild e NAnt per le nostre build. –
Controlla questo articolo: http://www.yegor256.com/2014/07/21/read-only-master-branch.html – yegor256