Noul meu mod preferat de a nu folosi complet un Makefile? Crearea de aliasuri de comandă de flux de lucru personalizate pentru fiecare proiect, pe care le puteți verifica.

Poate un Makefile să-ți îmbunătățească DevOps-ul și să îi facă pe dezvoltatori fericiți? Cât de minunat ar fi dacă un nou dezvoltator care lucrează la proiectul tău nu ar începe prin copierea și lipirea comenzilor din README? Ce se întâmplă dacă în loc de:

pip3 install pipenv
pipenv shell --python 3.8
pipenv install --dev
npm install
pre-commit install --install-hooks
# look up how to install Framework X...
# copy and paste from README...
npm run serve

… ai putea tasta doar:

make start

… și apoi să începi să lucrezi?

Făcând diferența

eu folosesc make în fiecare zi pentru a elimina plictiseala din activitățile de dezvoltare comune, cum ar fi actualizarea programelor, instalarea dependențelor și testarea.

Pentru a face toate acestea cu un Makefile (GNU make), folosim Makefile reguli și Rețete. Paralele similare există pentru marca de arome POSIX, cum ar fi Reguli țintă. Iată un articol grozav pe Makefiles compatibile POSIX.

Iată câteva exemple de lucruri pe care le putem make mai ușor (îmi pare rău):

update: ## Do apt upgrade and autoremove
    sudo apt update && sudo apt upgrade -y
    sudo apt autoremove -y

env:
    pip3 install pipenv
    pipenv shell --python 3.8

install: ## Install or update dependencies
    pipenv install --dev
    npm install
    pre-commit install --install-hooks

serve: ## Run the local development server
    hugo serve --enableGitInfo --disableFastRender --environment development

initial: update env install serve ## Install tools and start development server

Acum avem câteva aliasuri din linia de comandă pe care le puteți verifica. O idee grozavă! Dacă vă întrebați ce se întâmplă cu acel ciudat ## sintaxa comentariului, devine mai bună.

Un Makefile care se autodocumentează

Aliasurile sunt grozave, dacă vă amintiți ce sunt toate și ce fac fără să tastați în mod constant cat Makefile. Bineînțeles, ai nevoie de un help comanda:

.PHONY: help
help: ## Show this help
    @egrep -h 's##s' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "33[36m%-20s33[0m %sn", $$1, $$2}'

Cu puțină magie din linia de comandă, asta egrep comanda preia ieșirea din MAKEFILE_LIST, o sortează și o folosește awk pentru a găsi șiruri care urmează ## model. Apoi imprimă o versiune formatată utilă a comentariilor.

Îl vom pune în partea de sus a fișierului, astfel încât să fie ținta implicită. Acum, pentru a vedea toate comenzile rapide la îndemână și ceea ce fac, pur și simplu alergăm make, sau make help:

help                 Show this help
initial              Install tools and start development server
install              Install or update dependencies
serve                Run the local development server
update               Do apt upgrade and autoremove

Acum avem propriul nostru instrument CLI personalizat și specific proiectului!

Posibilitățile de îmbunătățire a fluxului DevOps cu un Makefile auto-documentat sunt aproape nelimitate. Puteți utiliza unul pentru a simplifica orice flux de lucru și pentru a produce niște dezvoltatori foarte fericiți.