Build automation e Continuous Integration(CI)
Build automation
Lo strumento utilizzato per la build automation è sbt. Sbt ha permesso di gestire le dipendenze del progetto, compilare il codice, eseguire i test e generare la documentazione in modo automatizzato. I numerosi plugin disponibili hanno facilitato la gestione e il monitoraggio della qualità del codice.
Code quality
Per garantire la qualità del codice, sono stati utilizzati i seguenti plugin:
- scalafmt: per la formattazione automatica del codice secondo le convenzioni di stile Scala.
- scalafix e wartremover: per l'analisi statica del codice, che ha permesso di identificare potenziali problemi e migliorare la qualità del codice.
- jacoco: per la generazione dei report di copertura del codice, che ha permesso di monitorare la percentuale di codice testato e identificare le aree da migliorare.
Continuous Integration (CI)
Per la Continuous Integration, è stato utilizzato GitHub Actions. Questo strumento ha permesso di automatizzare il processo di integrazione continua, eseguendo automaticamente i test e le build del progetto ad ogni push o pull request. Le seguenti azioni sono state configurate:
- build: per compilare il codice ed eseguire i test.
- code-style: per verificare la conformità del codice agli standard di stile e qualità definiti.
- code-coverage: per generare report di copertura del codice e garantire che le modifiche apportate non riducano la qualità del codice, oltre all'upload dei report su Coveralls.
- dry-website-build: per verificare che il sito web generato dalla documentazione sia corretto e privo di errori.
- release: per gestire le release del progetto, creando automaticamente i tag e pubblicando le versioni su GitHub.
- upload-docs: per caricare la documentazione generata su GitHub Pages, rendendola disponibile online.
- success: per controllare che tutte le azioni siano state eseguite con successo e notificare eventuali errori.
Deployment
Il deployment del sito web generato dalla documentazione è stato automatizzato utilizzando GitHub Actions, che ha permesso di pubblicare la documentazione su GitHub Pages ad ogni push sul branch main
. Questo ha garantito che la documentazione fosse sempre aggiornata e accessibile agli utenti.
Il deployment dell'applicazione viene effettuato al termine di ogni sprint andando a richiamare il workflow release
manualmente, che crea un tag e una release su GitHub, generando automaticamente il file JAR dell'applicazione e pubblicandolo nella sezione "Releases" del repository. Questo processo consente di mantenere una versione stabile e facilmente distribuibile dell'applicazione, pronta per essere utilizzata dagli utenti finali.