Un semplice scenario:
- 2 progetti sono in controllo della versione
- L'applicazione
- Il test (s)
- Un numero significativo di check-in viene effettuato giornalmente sull'applicazione.
- CI crea e gestisce tutta l'automazione ogni notte.
Per scrivere e / o eseguire test è necessario aver creato l'applicazione (per fare riferimento / caricare assiemi strumentati). Ora, considera l'applicazione massiccia , in modo tale che la sua costruzione sia proibitiva nel tempo (un'intera giornata da compilare). L'ovvio effetto collaterale qui è che una volta eseguita una build a livello locale, è immediatamente incoerente con l'ultima.
Ad esempio:
Se dovessi eseguire la sincronizzazione con le ultime e aprire uno dei progetti di test, non verrà creato localmente fino a quando non avrò creato l'applicazione. Questo è lo stesso quando si esegue la sincronizzazione con un altro ramo / build / tag. Quindi, per iniziare a lavorare, ho bisogno di aspettare un giorno per creare l'applicazione localmente, in modo che gli assembly possano essere caricati - e quindi quegli assembly non sarebbero più recenti.
Come organizzi il repository o (idealmente) il tuo ambiente di sviluppo in modo che tu possa continuamente sviluppare test contro qualunque sia la build attuale, o una specifica build, minimizzando allo stesso tempo la compilazione dell'applicazione il più possibile?