Voglio qualcosa che non sono stato finora in grado di trovare in nient'altro che su giornali e libri teorici. Se non esiste sono piuttosto sbalordito perché sembra che molte persone usino questi tipi di sistemi e che funzionino molto bene. Forse quello di cui ho bisogno è una specie di combinazione di cose, non ne sono sicuro. Ecco i miei requisiti per il sistema:
- È possibile eseguire il hook in SVN tramite il check-in.
- Può configurare componenti indipendenti come "pipeline" del progetto
- Intendo dire che un check-in su un componente attiva quel componente per creare, eseguire test unitari e sputare un distributore.
- Può configurare componenti che dipendono da altri componenti
- Se eseguo il check-in per il componente A e il componente B dipende dal componente A, il componente B ha una dipendenza A aggiornata e ricompila al completamento del componente A.
- Utilizza processi di compilazione nativi come msbuild o make.
- Non devo configurare qualcosa di completamente nuovo solo per questo.
- Se una dipendenza fallisce, i componenti a monte non la aggiornano, ma aggiorneranno altri componenti che non hanno avuto esito negativo.
Questa è la fine del server di build. Voglio anche l'integrazione lato sviluppatore.
- Un nuovo sviluppatore dovrebbe essere in grado di eseguire un comando che ottiene tutto e crea tutto per la prima volta.
- Ciò includerebbe tutti i componenti per un dato progetto.
- La stessa build, aggiornamento, processo di creazione avviene sulla macchina di uno sviluppatore.
- Uso di qualsiasi IDE
Tutto quanto sopra è automatizzato . La mia squadra attualmente ha questo, ma fa quasi tutto a mano: (
Quello che sto descrivendo è descritto in molti posti, tra cui il libro Continuous Delivery e il documento intitolato Continuous Release. Il più vicino che riesco a trovare finora è Maven, ma non sembra avere la funzione "può usare il sistema di costruzione nativo" (gli dici che ogni file che vuoi compilare e il compilatore / linker ....) un file make XML). Sembra anche molto orientato verso Java e voglio qualcosa di linguistico agnostico ... in effetti voglio qualcosa che non costruisca necessariamente programmi, potrebbe costruire qualcosa che ha bisogno di qualche forma di compilazione.
Quindi, come? Che cosa? Dove? e quanto?