Makefile: comodo trick per una DevEx uniforme e multiplatform
By Samir El Moubaraky
Nonostante GNU Make venga utilizzato solitamente all’interno di progetti scritti in C e C++ e sia anche un utility sviluppata 50 anni fa, è ancora utilizzabile in modo efficiente in progetti moderni basati su docker ed infrastruttura serverless, come nel caso degli sviluppi in Santagostino.
Il Makefile delle nostre applicazioni contiene principalmente i comandi nativi di docker e docker-compose per l’esecuzione di varie operazioni sui container.
L’utilità di Docker è risaputa, ossia quella di rimuovere agli sviluppatori la necessità di installare ogni singolo tool localmente e permettergli di avviare le applicazioni in container con semplici docker commands.
Allo stesso modo, l’utilizzo di make e makefile sulla DevEx è considerevole, la vita degli sviluppatori ne risulta semplificata ed il tempo necessario per iniziare a testare un’applicazione si accorcia considerevolmente. Comandi della lunghezza di 1 o 2 righi risultano abbreviati in 2 parole di facile memorizzazione, il che rende tutto più immediato ed uniforme in tutti i progetti e tra tutto il dev team.
Quali comandi creare?
Building e Running dell’applicazione
Grazie a comandi composti come nell’esempio sotto, è possibile fare il build dell’applicazione in maniera semplice, così come risultano immediati e semplici l’avvio della CLI e dei log.
build:
docker-compose build
@echo "Application has been built succesfully."
up:
docker-compose down -v
docker-compose up -d
cli:
docker-compose run --rm app bash
docs-cli:
docker-compose run --rm docs ash
logs:
docker-compose logs -f
Unit-test e linting del codice
unit-test:
docker-compose run --rm -w /usr/src/app app bash -c "yarn test"
lint:
docker-compose run --rm -w /usr/src/app app bash -c "yarn lint"
Deploy dell’applicazione
stage-deploy: stage-create-cert
docker-compose run --rm -w /usr/src/app app bash -c "yarn deploy stage"
Grazie a questi comandi, possiamo avviare la nostra applicazione anche solo in una riga di comandi in console:
git pull && make up && make logs
Vantaggi
- Curva di apprendimento per lo startup di nuovi progetti più bassa per i nuovi sviluppatori: permette a sviluppatori che hanno appena iniziato a mettere le mani sulle vostre applicazioni di capire subito come farne il building e tutte le altre operazioni necessarie.
- Sintassi comune: in questo modo tutti i progetti utilizzano la stessa sintassi, che risulta quindi anche di comune utilizzo all’intero team
- Velocità di build dell’applicazione: Puoi chiedere ad un altro membro del team di testare l’ultima modifica all’applicazione senza che debba leggere un lungo README su come avviare i container.
- Deploy, Testing e, di conseguenza, rilascio in produzione più rapidi.