Nel nostro negozio di sviluppo software .NET, abbiamo CruiseControl.NET istituito per costruire 28 progetti, alcuni dei quali sono interdipendenti. Ogni progetto rappresenta approssimativamente un progetto di Visual Studio o una libreria Flex abbinata a test di unità. Quello che mi infastidisce è che non ho trovato un buon modo per garantire che i progetti vengano creati in un ordine che rappresenta le dipendenze.ordine di generazione in CruiseControl.NET con dipendenze di progetto
Ecco quello che sto facendo:
- Tutto è nella stessa coda di costruzione. L'ho fatto in modo che le build vengano eseguite in sequenza e così posso evitare di dover utilizzare più directory di lavoro.
- Ho impostato le priorità delle code sui progetti, che ho pensato avrebbero influenzato il loro ordine di costruzione. Ma dopo aver letto la documentazione con più attenzione, ho scoperto che controlla solo la priorità quando ci sono più richieste di compilazione in una coda.
- Oltre a utilizzare intervallo di trigger per dare il via una build, io uso progetto innesca in modo che quando le dipendenze costruire con successo, a loro carico anche costruire.
In un certo senso, questa configurazione funziona. Il problema principale è se qualcuno commette modifiche al codice sia nel progetto A che nel progetto B, in cui il progetto B dipende dal progetto A. Talvolta, il progetto B verrà creato prima del progetto A. Poiché il progetto A non è ancora stato creato, questo può a volte causano la rottura del progetto B. Questo è temporaneo, poiché il trigger a intervalli fa in modo che il progetto A si sviluppi in un secondo momento, e la sua build di successo attiva il progetto B per ricostruire e correggere. Quello che voglio evitare è la costruzione del progetto B prima del progetto A, in modo che la rottura intermedia non possa accadere.
Quali pratiche si usa per gestire correttamente le interdipendenze sul server CruiseControl.NET? A questo punto, non sono disposto a passare a un pacchetto di integrazione continua non libero come TeamCity.
Fare questo in questo modo significherebbe che dovrei duplicare le istruzioni di compilazione per ogni progetto di dipendenza in ogni progetto dipendente. Ma suppongo che se si scopre che non riesco a controllare l'ordine di compilazione in CC.NET, dovrò essere ridondante. Almeno posso usare il supporto di CC.NET per le entità XML per incapsulare i passi di costruzione di un progetto. – Jacob
Non necessariamente. Utilizzare un singolo file cruise.build per memorizzare lo script NAnt. Condividi questo singolo file cruise.build attraverso i progetti, in questo modo tutti aderiscono alla gerarchia delle dipendenze e non stai duplicando lo script. –
Anche se fa schifo che la casella di compilazione debba ancora fare un duplicato di costruzione, sembra che non ci sia un buon modo per aggirarla. Questa risposta sembra la migliore. – Jacob