È questo l'ambiente sbagliato per CI?

5

Sfondo

Dimensioni team / progetto

Attualmente nella nostra azienda, abbiamo un team di 3 sviluppatori. Ognuno di noi ha i nostri progetti su cui lavoriamo. Quindi, non abbiamo mai più di una persona che lavora su un progetto di sviluppo software allo stesso tempo. Di tanto in tanto, è possibile che uno sviluppatore vada a modificare il progetto di un altro sviluppatore (mesi o anni lungo la strada).

Gestione progetti

Seguiamo la metodologia cascata molto da vicino, e funziona bene per noi. Ci viene fornita una serie di specifiche di progettazione software che rimangono invariate per 30 anni (o più). Di tanto in tanto potrebbe esserci stato un errore di battitura o un errore con le specifiche di progettazione e i requisiti potrebbero cambiare leggermente, ma questo quasi mai accade.

Monitoraggio dei problemi

Riceviamo bug nel nostro software, ma questi sono in genere segnalati rapidamente dalla nostra piccola base di utenti (10 - 15 persone) e risolti direttamente sul posto. Rilasciamo quindi una nuova versione del software con le modifiche integrate molto rapidamente e non dobbiamo più fare nulla per anni.

Controllo versione

Abbiamo repository Git sulla nostra unità condivisa aziendale che usiamo per mantenere le versioni del software e tenere traccia delle modifiche.

Domanda

Ho sollevato l'idea di utilizzare un'integrazione continua con qualcosa come Jenkins e mi è stato detto che non sarebbe stato necessario. Dato il nostro ambiente, dovremmo usare CI?

Inoltre, vorrei sapere in che modo mi riguarderà personalmente se non imparerò mai CI.

    
posta Snoop 11.04.2016 - 13:26
fonte

2 risposte

4

Provalo - Jenkins è una scelta fantastica per il server CI, è facile da configurare e utilizzare. Neanche ci vuole molta risorsa del server.

Ciò che ti fornisce CI è una "persona build" computerizzata che può prendere il tuo codice da un repository e costruirlo senza la tua assistenza. Se esci o sei investito da un autobus, questo significa che il tuo codice sarà comunque utilizzabile senza i bit che potresti avere sul tuo computer che avevi dimenticato di avere. Se riesci a costruirlo sul server CI, è una buona build riproducibile.

Questo è il punto principale di un server CI. Certo, può fare di più, come eseguire test o creare build a cui molte persone hanno contribuito, ma questi sono secondari allo scopo principale di assicurarsi che la tua build possa essere costruita da qualcun altro. Significa anche che è necessario conoscere ciò che è necessario per far funzionare la build, cioè se si installa qualche strumento e si dimentica che è lì, il build server non riuscirà a compilare finché non si ricorda e si installa (e si spera che lo documentino) sul server pure. Il tuo server di compilazione diventa un ambiente gold standard per la creazione dei tuoi prodotti. Se assumi un nuovo ragazzo, sarà in grado di accelerare semplicemente copiando le specifiche del build server.

Quindi: ottieni un nuovo server (o il vecchio PC in giro). Installa Jenkins e tutti i tuoi toolchain di build. Imposta un lavoro Jenkins per ciascun prodotto per il checkout da master e build. Poi guarda la bella dashboard basata sul web che dice che ogni prodotto è stato realizzato con successo.

Se vuoi essere attraente da quel punto, puoi eseguire il deployment in un'area di gestione temporanea in modo che i tuoi prodotti vengano sempre consegnati in modo coerente per supportare, aggiungere analisi statiche, test e altre novità. Ha appena aggiunto la qualità e la sicurezza che tutto funzioni correttamente. Non guarderai indietro.

    
risposta data 11.04.2016 - 14:20
fonte
4

Penso che sia un meccanismo eccellente da usare. Sarai in grado di confermare che le tue build (se non di qualcun altro) funzioneranno in un ambiente isolato e riproducibile. Verificherà se dimentichi di impegnarti a lavorare nel tuo sistema SCM e che le build e i test funzionano tutti in un ambiente controllato, indipendentemente dal tuo ambiente personale. Se i tuoi test impiegano anni per essere eseguiti, scaricherà il lavoro su un'altra macchina (supponendo che tu abbia un ambiente CI separato) in modo che tu possa continuare a lavorare mentre quelli sono in esecuzione, e avrai una cronologia delle tue build tale che puoi identificare regressioni e legarle a commit.

Se la tua azienda non vuole davvero farlo (e sembra molto miope), perché non impostare semplicemente il tuo sistema di personalizzazione personale (su un'altra casella, o forse come ID utente diverso sulla tua casella di sviluppo ). Anche se gli altri non vogliono beneficiare di quanto sopra, puoi.

    
risposta data 11.04.2016 - 13:31
fonte