In continua integrazione qual è il modo migliore per gestire le dipendenze delle applicazioni esterne

StackOverflow https://stackoverflow.com/questions/119724

Domanda

Usando il nostro server di integrazione continua TeamCity abbiamo scoperto alcuni problemi che non siamo sicuri sul modo migliore di gestire. Vale a dire come fare riferimento alle applicazioni esterne richieste dalla nostra applicazione sul server CI.

Questo è stato inizialmente scoperto con una dipendenza da Crystal Reports, quindi abbiamo installato Crystal Reports sul server per risolvere il problema immediato. Tuttavia, quando spostiamo più applicazioni sul server CI, troviamo più dipendenze.

Qual è la migliore strategia qui? Continuare a installare le applicazioni richieste sul server?

Grazie

È stato utile?

Soluzione

Ove possibile, rendere le dipendenze esterne parte del sistema di compilazione. Ad esempio, controlla il programma di installazione nel tuo sistema di controllo della versione e fai un passaggio che lo verifica e lo esegue in modalità silenziosa (molti installatori supportano una modalità senza azione dell'utente a volte utilizzando la riga / i di comando).

In questo modo, se è necessario configurare un'altra macchina di compilazione per un ramo o solo per un nuovo hardware, tutto è ripetibile.

Altri suggerimenti

Se i tuoi build richiedono l'applicazione effettiva per completare il build, probabilmente dovresti continuare a installare l'applicazione sul tuo server di build.

Se hai solo bisogno di riferimenti a dll o assembly dall'applicazione, allora quello che abbiamo fatto nella mia azienda è creare "SDK" installabili dei riferimenti richiesti per un particolare applicazione e installarli sul nostro sviluppo e costruire macchine in ben note directory di librerie a cui fanno riferimento le nostre soluzioni.

Sulla macchina di compilazione, i nostri passaggi di pre-compilazione installano la versione corretta delle dipendenze e quindi le puliscono al termine.

Di recente, siamo passati all'utilizzo di macchine virtuali per le nostre macchine di costruzione attivate dal nostro processo di costruzione. Queste VM ottengono gli SDK installati su di esse come pre-build e quindi vengono ripristinate allo stato di snapshot dopo la compilazione. Avevamo alcune dipendenze che erano quasi impossibili da disinstallare, quindi ogni volta è stato un punto di partenza pulito.

Se usi Maven per creare, puoi definire le tue dipendenze nel file pom.xml. Verranno quindi scaricati automaticamente se necessario.

Non sono sicuro di aver seguito correttamente ...

Suppongo che la tua applicazione dipenda da questa app esterna, mentre stai costruendo? In tal caso dovrebbe essere sulla macchina a fare CI ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top