Fare il deploy di un sito statico non dovrebbe richiedere dieci passaggi. Ecco lo script che li ha ridotti a uno.
Il problema
Ogni deploy richiedeva:
- Build del progetto in locale
rsyncdella cartella di output sul VPS- SSH per ricaricare Nginx
- Controllo dei log
Ripetitivo, soggetto a errori, facile dimenticare un passaggio.
La soluzione
Uno script Bash di 30 righe che esegue tutti e quattro i passi in sequenza e si interrompe con un errore se qualcosa va storto.
#!/usr/bin/env bash
set -euo pipefail
BUILD_DIR="./dist"
REMOTE_USER="deploy"
REMOTE_HOST="vps.example.com"
REMOTE_PATH="/var/www/site"
echo "[1/3] Build in corso..."
npm run build
echo "[2/3] Sincronizzazione file..."
rsync -az --delete "$BUILD_DIR/" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH"
echo "[3/3] Ricarico Nginx..."
ssh "$REMOTE_USER@$REMOTE_HOST" "sudo systemctl reload nginx"
echo "Fatto."
Il dettaglio fondamentale è set -euo pipefail — qualsiasi comando fallito interrompe l’intero script invece di proseguire silenziosamente.
Renderlo portabile
Salva la configurazione remota in un file .env alla radice del repo e caricalo all’inizio dello script. Aggiungi .env a .gitignore. Fine.
Usato in produzione per il progetto Laravel Finance App.