Deploy SSH (Laravel)
Script interattivo per il deploy dell'applicazione Laravel su staging e produzione via SSH. Introdotto con la PR #120 (aprile 2026).
File: scripts/deploy-ssh.sh
Ambienti
| Ambiente | URL | Branch Git remoto | Directory remota |
|---|---|---|---|
stage | https://stage.tidiko.ai/ | stage | stage.tidiko.ai |
app / prod | https://app.tidiko.ai/ | main | app.tidiko.ai |
Utilizzo
# Modalità interattiva (chiede l'ambiente prima del build)
./scripts/deploy-ssh.sh
# Deploy diretto
./scripts/deploy-ssh.sh stage
./scripts/deploy-ssh.sh app
./scripts/deploy-ssh.sh prod # alias di app
# Help
./scripts/deploy-ssh.sh --help
Flusso di deploy
Passi dettagliati
- Build locale —
npm run buildgenera gli asset Vite inpublic/build/ - Verifica manifest — valida
manifest.jsone calcola hash SHA256 - Aggiornamento repo remoto —
git fetch+git pullsulla directory del server - Composer install — sempre eseguito con flag produzione (
--no-dev --optimize-autoloader) - Migrazioni — controlla
migrate:statuse applica solo se ci sono migration pending - Upload asset — copia
public/build/sul server viascp(Linux/Mac) opscp(Windows) - Verifica hash — confronta SHA256 del manifest locale e remoto
- Cache refresh —
php artisan refresh-cachesul server - Smoke check — richiesta HTTP all'URL pubblico dell'ambiente
Prerequisiti
Linux / macOS
ssh,scp,sshpassnpm,nodesha256sumoopenssl
Windows (Git Bash)
Il script rileva automaticamente l'ambiente e usa PuTTY:
plink— comandi SSH remotipscp— upload file
Variabili richieste in .env:
| Variabile | Descrizione |
|---|---|
SSH_SERVER_PASSWORD | Password SSH (obbligatoria) |
Variabili opzionali in .env:
| Variabile | Descrizione |
|---|---|
PUTTY_SESSION_NAME | Sessione PuTTY salvata (alternativa a host/port) |
PUTTY_HOST_KEY | Fingerprint host key (default: ed25519 preconfigurato) |
Connessione server
| Parametro | Valore |
|---|---|
| Host | 46.30.247.12 |
| Porta | 10112 |
| Utente | tidikoai |
Output finale
Al termine lo script stampa un riepilogo con:
- Ambiente e branch
- Stato migrazioni e composer install
- Hash manifest locale/remoto
- Esito smoke check HTTP
Note operative
- Lo script chiede l'ambiente prima del build npm per evitare build inutili
composer installprecede sempre le migrazioni (nuove migration possono dipendere da nuovi package)- La cache
bootstrap/cache/packages.phpviene pulita dopo composer per evitare riferimenti a dev-only providers (Telescope, ecc.) - L'output remoto di artisan usa
--no-ansiper evitare codici ANSI nei log SSH
Riferimenti
- README Laravel: sezione deploy
- Checklist regressione Alpine:
docs/alpine-regression-checklist.md(repo neting-ai)