Continuous integration
Particolare attenzione è stata posta nell’individuazione di misure per assicurare la qualità del codice del sistema. Grazie alle GitHub Actions sono stati predisposti dei workflow per garantire la Continuous Integration e la Quality Assurance.
[Auth, Persitence, Settings] Service Workflow
Il workflow dei sottoprogetti Auth, Persistence e Settings Service è praticamente il medesimo. I tre sottoprogetti sono infatti strutturati in un modo molto simile ed utilizzano le stesse tecnologie. Il workflow è strutturato nel seguente modo:
Test
- Viene creata una matrice e viene testato il sistema con tre diverse versioni di node (12.x, 14.x, 16.x) e tre diverse versioni di mongodb (3.6, 4.0, 4.2);
- Checkout;
- Set-up Node.js;
- Set-up MongoDB;
- npm install;
- npm test.
Deploy Dev Docker Image
- Controllo sullo stato del workflow di test. In caso di successo si prosegue;
- Controllo del branch che ha effetuato il push. In caso ci si trovi nel branch [auth/settings/persistence]-service si prosegue;
- Checkout;
- Autenticazione a DockerHub Registry;
- Creazione dell’immagine Docker;
- Push dell’immagine Docker.
Production Deploy su Heroku
- Controllo sullo stato del workflow di test. In caso di successo si prosegue;
- Controllo del branch che ha effetuato il push. In caso ci si trovi nel branch master si prosegue;
- Checkout;
- Autenticazione al registro di Heroku;
- Creazione del container;
- Release del container.
Edge Workflow
Il workflow del sottoprogetto Edge è strutturato nel seguente modo:
Test
- Checkout
- Installazione dello strumento di coverage: lcov
- Cache di pip
- Cache di PlatformIO
- Setup di Python
- Installazione di PlatformIO
- Esecuzione dei Test nativi
- Check sulla soglia minima della coverage (impostata a 90%)
Deploy Dev Docker Image
- Controllo sullo stato del workflow di test. In caso di successo si prosegue;
- Controllo del branch che ha effetuato il push. In caso ci si trovi nel branch edge-service si prosegue;
- Checkout;
- Autenticazione a DockerHub Registry;
- Creazione dell’immagine Docker;
- Push dell’immagine Docker.
Deploy Production Docker Image
- Controllo sullo stato del workflow di test. In caso di successo si prosegue;
- Controllo del branch che ha effetuato il push. In caso ci si trovi nel branch master si prosegue;
- Checkout;
- Autenticazione a DockerHub Registry;
- Creazione dell’immagine Docker;
- Push dell’immagine Docker.
Greenhouse Core
Il workflow del sottoprogetto Greenhouse Core è strutturato nel seguente modo:
Deploy Dev Docker Image
- Controllo del branch che ha effetuato il push. In caso ci si trovi nel branch greenhouse-core si prosegue;
- Checkout;
- Autenticazione a DockerHub Registry;
- Creazione dell’immagine Docker;
- Push dell’immagine Docker.
Deploy Production Docker Image
- Controllo del branch che ha effetuato il push. In caso ci si trovi nel branch master si prosegue;
- Checkout;
- Autenticazione a DockerHub Registry;
- Creazione dell’immagine Docker;
- Push dell’immagine Docker.
Web Client Workflow
Il workflow del sottoprogetto Web Client è strutturato nel seguente modo:
Test
- Viene creata una matrice e viene testato il sistema con tre diverse versioni di node (12.x, 14.x, 16.x) e tre sistemi operativi (Ubuntu, Windows, macOs);
- Checkout;
- Set-up Node.js;
- npm install;
- npm test.
Deploy Dev Docker Image
- Controllo sullo stato del workflow di test. In caso di successo si prosegue;
- Controllo del branch che ha effetuato il push. In caso ci si trovi nel branch web-client si prosegue;
- Checkout;
- Autenticazione a DockerHub Registry;
- Creazione dell’immagine Docker;
- Push dell’immagine Docker.
Production Deploy su Heroku
- Controllo sullo stato del workflow di test. In caso di successo si prosegue;
- Controllo del branch che ha effetuato il push. In caso ci si trovi nel branch master si prosegue;
- Checkout;
- Autenticazione al registro di Heroku;
- Creazione del container;
- Release del container.