domenica 29 ottobre 2017

Jenkins, primi approcci

Cos'è?

Jenkins è un automation server.
Serve quindi per automatizzare task ripetitivi. In particolare è usato per fare il build e il deploy di qualsiasi progetto.

Perché usarlo?

Diciamo che, al primo approccio, me lo sono chiesto anch'io. Cosa può fare Jenkins più di me nel compilare, testare, impacchettare e deploiare un progetto?
In realtà nulla, ma lo fa continuamente e sempre allo stesso modo.
Mi spiego meglio. Le fasi di costruzione di un software di solito sono, dopo la scrittura del codice, la compilazione, (forse) il testing automatico, l'impacchettamento e il deploy (almeno in ambiente di test).
Supponiamo di avere un repository dei sorgenti (Git) e che tutte queste fasi, sulla nostra macchina, funzionino.
Facciamo il commit dei sorgenti e scateniamo il nostro server Jenkins, che sta su una macchina diversa da quella di sviluppo.
Il Job inizia quindi a scaricare i sorgenti e a compilarli, e già qui il processo si blocca perché sembra che manchi un sorgente: ci siamo infatti dimenticati di committarlo, la cosa più normale e che capita con più frequenza (il telefono ha squillato, il collega ci ha chiesto qualcosa, è arrivata una mail urgente, sappiamo tutti come funziona...)
Ecco quindi che Jenkins ha individuato il primo problema, e via via così per tutte le fasi di gestione del nostro software.
Il testing automatico poi è quella fase in cui magari dobbiamo anche avviare una V.M. o un Docker con un db pronto: Jenkins può fare anche questo, sia con plugin dedicati (ce ne sono un fantastiliardo per tutte le esigenze), che lanciando batch o powershell da noi scritti ad hoc.

E ovviamente, può inviarci mail sullo stato del job, se è finito bene, male, con quali errori e in quanto tempo.

Tutto questo aumenta la qualità del nostro codice.
Ovviamente, per il testing, sta a noi implementare un set esaustivo di test: Jenkins non è intelligente, è solo instancabile.

Limiti

Ovviamente non è tutto oro quello che luccica: ho sperimentato Jenkins con .Net, una strana coppia direi, e proprio qui ho visto qualche limite.
In particolare esiste un plugin per compilare via MsBuild, e funziona bene finché si creano build di tipo generico, ma non sono riuscito ad usarlo nelle pipeline (flussi di build), che invece sarebbero stati perfetti per le mie esigenze.

Nessun commento:

Posta un commento