2009-07-28 13 views
5

Sono stato incaricato di creare un server CI nella mia azienda e sto cercando alcuni consigli su quali configurazioni di configurazione ho bisogno per i miei progetti. Come primo passo ho impostato le generazioni come:Configurazioni di configurazione di integrazione continua

commit Corporatura: compila il codice e corre unità di test
Integrazione Corporatura: compila il codice e long run l'esecuzione di test di integrazione

Io sono sicuro che altro i dovrebbe completare l'immagine della CI. Ad esempio, quali configurazioni di build hai nel tuo negozio?

So che ci deve essere un passaggio per la distribuzione delle mie build riuscite, ma renderei l'implementazione parte dell'integrazione?

Utilizzando TeamCity, MSBsuild e SVN

cerca di consigli tanto necessaria.

risposta

2

Le cose che eseguiamo in un progetto precedente su ciascun elemento della configurazione vengono eseguite dove i record di copertura del codice, , pubblicano la documentazione generata automaticamente e i rapporti Checkstyle.

Questo ci ha dato alcune statistiche sulla qualità statistica di ogni check-in per la progettazione e il miglioramento delle nostre abitudini lavorative.

1

Dobbiamo costruire configurazioni per

  • test di compilazione + fisso + analisi statica (findbugs nel nostro caso) + copertura del codice (innescato il commit)
  • test di integrazione (innescato su un programma finché ci è un commit)
  • distribuzione di prova (attivata manualmente)

la configurazione di distribuzione consente una risorsa non tecnico QA per distribuire nell'ambiente di verifica ogniqualvolta sono pronti a testare qualcosa ed evitano la confusione che una correzione di bug abbia già colpito l'ambiente di test.

6

La build più completa che abbia mai visto ha seguito le seguenti istruzioni nell'ordine indicato. Esistono due gruppi, tutti i target di ciascun gruppo vengono eseguiti indipendentemente dall'errore, ma il gruppo fallisce se un membro del gruppo fallisce. Quindi vediamo TUTTI i problemi.

primo gruppo di lavoro sulle fonti:

  • directory di lavoro pulito
  • aggiornamento per le fonti più recenti, ottenere tutto da SVN
  • compilare i sorgenti, ecc rmic
  • risorse valudate XML (come almeno in Java c'erano molto, come descrittori di deployment, fogli di stile, ecc.)
  • fare analisi del codice statico disponibile per sorgenti, ad es. controllando spazi bianchi, nomi di convenzioni di codifica, nomi di file o più controlli sofisticati eseguiti sull'AST della sorgente (come PMD lo fa per Java).
  • controllare le convenzioni di denominazione di altri file, ad es. abbiamo controllato i nomi di tutte le librerie dipendenti per contenere un numero di versione.

Secondo gruppo sta lavorando sul codice prodotto, solo se il primo passo è riuscito:

  • eseguire l'unità test test
  • conduzione integrazione veloce
  • fare analisi statica del codice disponibili per le sorgenti (la maggior parte degli strumenti per Java lo fa in questo modo), ad es controllare i tipici schemi di errore (come Findbugs lo fa per Java)
  • fare controllo di riferimento, ad es. far rispettare stratificazione di architettura, l'assegno di utilizzo di alcune classi da altre classi ecc
  • creare il pacchetto completo dispiegamento

Questa è la build principale che viene attivato di volta in volta per i commit. Ha fatto molto, ma con una macchina potente che utilizzava diversi core era di circa 4 minuti per 500k LOC. I tester possono ottenere le build di istantanee più recenti, se lo desiderano.

test di integrazione di gestione a lungo (2 ore ciascuno) avrebbero eseguito una volta per notte e solo fare

  • compilare
  • di lungo periodo test in esecuzione

Un'altra costruzione è stato un puro accumulo documantion, innescato una volta a notte Non fallirebbe mai.

  • creare documentazione API
  • fare una completa analisi statica del codice con tutte le regole e di produrre una sorta di indicatore della qualità complessiva del progetto
  • rapporti di copertura prodotti (è un peccato che non abbiamo applichiamo la copertura a crescere) da tutti i progetti creati prima del
  • produce tutti i tipi di documentazione di fantasia come il sito Maven o Sonar report ecc. Questo è per la gestione/QA la maggior parte del tempo.
1

abbiamo avuto una conversazione simile alla più recente CITCON Nord America (Continuous Integration e conferenza Testing) dove abbiamo condiviso le nostre esperienze e ha cercato di mettere insieme una road map da semplice CI a molto costruito in CI e rilasciare sistemi .

Le note di conferenza originali sono here. Insieme a Flickr photostream. A cleaned up version è disponibile anche sul blog di urbancode.

Gli australiani rivisitato l'argomento in CITCON Brisbane e un pencast di che è disponibile

Speranza alcune di queste risorse sono utili.

1

Sto lavorando su questo al momento. La nostra configurazione di generazione fa il seguente:

Corporatura:

  • Compile.
  • Test.
  • Merge diversi valori di configurazione specifici ambiente con una configurazione di base (questo ci lascia con Staging.config, Test.config ecc)
  • creare un file chiamato version.txt che le liste costruire volte, numeri di revisione ecc
  • Pubblicare tutto questo in una directory pulita. Questo viene quindi considerato come un artefatto di costruzione da parte di teamcity.

Ora abbiamo un programma che può essere pubblicato a qualsiasi server semplicemente copiandolo nella directory di distribuzione, e rinominare il file di configurazione appropriato per web.config

Abbiamo poi 3 più configurazioni per la distribuzione. Il primo viene distribuito in un ambiente di sviluppo dopo ogni build di successo. Questo ci dà sempre una versione funzionante dell'ultimo codebase. Il secondo viene schierato per la messa in scena manuale. Questo è impostato per la distribuzione dall'ultima build di sviluppo bloccata. Infine, esiste una configurazione di distribuzione in tempo reale, quindi distribuita dall'ultima build di staging distribuita. Questo fa un certo numero di cose in più:

  • Tag versione rilasciata
  • Creare un archivio di un posto in una directory per il salvataggio mantenere
  • andare oltre tutti i commenti checkin dopo l'ultima costruzione diretta ed estratto quelli con i numeri di biglietto. Quindi utilizzare i titoli dei ticket per generare una lista di modifiche preliminari. Questo è modificato dal PM prima di essere salvato per i posteri.
Problemi correlati