Link Search Menu Expand Document (external link)

Build Automation

Gradle

Una volta definiti i bounded context, si è proseguito andando a definire l’architettura di progetto. È stata predisposta la repository di base ed è stata chiamata brittany.
Per strutturare il progetto è stato utilizzato il build tool Gradle. Gradle è stato pensato per funzionare principalmente su linguaggi Java like, ma anche altri linguaggi sono supportati.

Struttura multi progetto

Si è predisposta una struttura multi progetto il più possibile aderente all’analisi DDD effettuata. Sono stati definiti i seguenti sottoprogetti:

  • greenhouse_core: si tratta del sottoprogetto più core. È la parte del sistema che si occupa di orchestrare i vari edge e inoltrare le informazioni ottenute ai service;
  • edge: il sottoprogetto che agisce su sensori ed attuatori all’interno della serra. Il sottoprogetto contiene più configurazioni ed è possibile personalizzare ogni edge in base alle proprie esigenze.
  • auth-service: il servizio che si occupa di far registare ed autenticare gli utenti al sistema.
  • persistence-service: il servizio che si occupa dell’immagazzinamento dei dati che vengono inoltrati da greenhouse-core.
  • settings-service: il servizio che si occupa della gestione delle configurazioni delle serre.
  • web-client: l’applicazione front-end che permette all’utente di interagire col sistema.

Task personalizzati

Per ogni sottoprogetto sono stati creati dei task personalizzati e sono stati inseriti all’interno dei relativi file build.gradle.kts.

In particolare per ogni sottoprogetto è stato creato un task di test denominato appunto test.
In questo modo a partire dalla root del progetto è possibile per esempio lanciare il comando:

$ gradle test --parallel

In questo modo tutti i task di test dei sottoprogetti verranno lanciati in parallelo, permettendo di effettuare un test dell’intero sistema molto velocemente.

Per avere una visione completa riguardo i task rilevanti all’interno del progetto è possibile leggere la sezione How to launch the project disponibile all’interno del README del repository.