Skip to main content

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.