Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Integrazione Continua e
Distribuzione Continua
Daniele De Marchi
demarchi.daniele001@spes.uniud.it
30 Luglio 2021
SCALETTA
2
DevOps
Il termine DevOps deriva dalla contrazione di development,
"sviluppo", e operations, qui simile a "messa in produzione" o
"deployment".
3
DevOps (2)
Secondo il modello DevOps, i team dedicati a sviluppo e produzione non agiscono più
separatamente: i due team vengono fusi in un'unità in cui i tecnici sono attivi lungo
tutto il ciclo di vita dell'applicazione, da sviluppo e testing a distribuzione e
produzione.
4
Le procedure di DevOps
I team applicano l'approccio DevOps implementando alcune procedure nell'intero
ciclo di vita dell'applicazione.
5
Le procedure di DevOps (2)
Controllo della versione:
Consiste nella procedura di gestione del codice in versioni diverse, ovvero nel controllo delle
revisioni e della cronologia delle modifiche per semplificare la revisione e il ripristino del
codice.
Monitoraggio e accessi:
Le aziende tengono sotto controllo i parametri e i log per scoprire in che modo le prestazioni
di applicazione e infrastruttura influiscono sull'esperienza dell'utente finale.
6
Integrazione Continua
Perché è necessaria l'integrazione continua?
L'integrazione del codice eseguita poco frequentemente porta a numerose difficoltà:
● Processo di integrazione dispendioso in termini di tempo.
● Maggiori merge conflict.
● Codice nel repository centrale non aggiornato.
● Testabilità ridotta.
7
Vantaggi dell’Integrazione Continua
8
Distribuzione Continua
La distribuzione continua estende l'integrazione continua distribuendo tutte le modifiche al
codice all'ambiente di testing e/o di produzione, dopo la fase di creazione di build.
Consente agli sviluppatori di automatizzare il testing andando oltre gli unit test.
Queste prove possono includere test dell'interfaccia, test di caricamento, test di integrazione,
test di affidabilità delle API e così via.
Ogni modifica al codice viene applicata a una build, testata e inoltrata in un ambiente di
testing (non in produzione) o temporaneo. La decisione finale per implementare il nuovo
software nell'ambiente di produzione attivo dipende solitamente dal capo progetto.
9
Vantaggi della Distribuzione Continua
10
SCALETTA
11
Github Actions
Le Github actions sono dei flussi di lavoro event-driven, ovvero eseguono una serie di
comandi solo dopo l’attivazione di un predeterminato trigger: è possibile, ad esempio,
eseguire uno script di test quando viene creata una pull-request in un determinato branch del
repository.
12
Github Actions (2)
Per specificare una Github Action è sufficiente creare un file in formato YAML nella cartella
.github/workflows del repository.
13
Esecuzione Github Action
14
Esecuzione Github Action fallimento test
15
CD con Heroku
Heroku è una piattaforma cloud di hosting per applicazioni web.
Review Apps:
Applicazioni temporanee ed isolate, create in automatico quando viene aperta una
pull request in uno specificato branch del repository Github. In questo modo è
possibile testare singolarmente le modifiche apportate al codice.
Pipelines:
Una pipeline è composta da un gruppo di applicazioni Heroku, che condividono la
stessa codebase (stesso progetto). Ogni applicazione nella pipeline rappresenta uno
dei seguenti stadi nel flusso del continuous delivery: Development, (Review), Staging,
Production.
16
CD con Heroku (2)
Il tipico utilizzo di una pipeline di delivery è composto da 5 passi:
1. Uno sviluppatore apre una pull request su github, per apportare delle
modifiche al codice dell’applicazione.
2. Automaticamente, Heroku crea una review app, che permette agli sviluppatori
di testare e valutare i cambiamenti apportati, in un ambiente isolato.
17
Pipeline
18
DEMO
19
Conclusioni
Github Actions e Heroku CD sono 2 semplici strumenti che permettono di
realizzare una completa pipeline di CI/CD.
Per progetti di maggiori dimensioni, o per realizzare pipeline più elaborate e
personalizzate, esistono molti strumenti professionali come Azure DevOps
(Microsoft) oppure gli strumenti della suite Atlassian.
Svantaggi:
● Strumenti per CI/CD difficili da configurare se non si sfruttano servizi
in cloud.
● Rischio di vendor lock-in.
● Rischio di realizzazione errata della pipeline (fidarsi troppo della
pipeline).
20
Riferimenti e Credits
21