feat(V2): deploy-vps.sh per deploy via clone (no registry)
Il deploy ora avviene clonando il repo direttamente sul VPS, costruendo l'immagine in loco e riavviando il container. Sostituisce il workflow build & push verso registry + Watchtower. Lo script automatizza: - git fetch + reset --hard origin/<branch> - docker compose build - restart graceful (down 15s + up -d) - attesa healthcheck con timeout configurabile - rollback automatico al SHA precedente se /health fallisce Variabili: BRANCH, PORT, HEALTH_TIMEOUT_SECONDS, FORCE, SKIP_ROLLBACK. Rimosso scripts/build-push.sh (workflow registry abbandonato). README aggiornato con la nuova procedura. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -219,18 +219,54 @@ labels:
|
||||
|
||||
## Build & deploy pipeline
|
||||
|
||||
Build dell'immagine eseguita sulla macchina di sviluppo:
|
||||
Il deploy su VPS avviene **per clone diretto del repo**, senza passare per
|
||||
un container registry. Lo script `scripts/deploy-vps.sh` automatizza
|
||||
l'intero flusso: pull del ramo target, rebuild dell'immagine sulla
|
||||
macchina VPS, restart del servizio, healthcheck e rollback automatico in
|
||||
caso di fallimento.
|
||||
|
||||
### Setup iniziale sul VPS (una sola volta)
|
||||
|
||||
```bash
|
||||
export GITEA_PAT='<PAT con scope write:package>'
|
||||
./scripts/build-push.sh
|
||||
# Sul VPS:
|
||||
sudo mkdir -p /opt/cerbero-mcp
|
||||
sudo chown -R "$USER":"$USER" /opt/cerbero-mcp
|
||||
cd /opt/cerbero-mcp
|
||||
git clone <repo-url> .
|
||||
cp .env.example .env
|
||||
# editare .env con i token e le credenziali reali
|
||||
```
|
||||
|
||||
Lo script tagga `:2.0.0`, `:latest` e `:sha-<short>` per rollback puntuali
|
||||
e pubblica al registry Gitea. Sul VPS Watchtower polla `:latest` e
|
||||
aggiorna il container automaticamente.
|
||||
### Deploy ricorrente
|
||||
|
||||
Smoke test post-deploy:
|
||||
Da qualunque macchina con accesso SSH al VPS:
|
||||
|
||||
```bash
|
||||
ssh user@vps 'cd /opt/cerbero-mcp && bash scripts/deploy-vps.sh'
|
||||
```
|
||||
|
||||
Oppure direttamente dal VPS:
|
||||
|
||||
```bash
|
||||
cd /opt/cerbero-mcp
|
||||
bash scripts/deploy-vps.sh
|
||||
```
|
||||
|
||||
Lo script:
|
||||
1. verifica che il working tree sia pulito e che `.env` sia presente;
|
||||
2. esegue `git fetch + reset --hard origin/main`;
|
||||
3. se la SHA non è cambiata, esce senza fare nulla (override con
|
||||
`FORCE=1`);
|
||||
4. ricostruisce l'immagine Docker (`docker compose build`);
|
||||
5. restart graceful del container (`docker compose down --timeout 15`
|
||||
seguito da `docker compose up -d`);
|
||||
6. attende `/health` (timeout 30 s di default);
|
||||
7. se l'health fallisce, esegue rollback automatico al SHA precedente.
|
||||
|
||||
Variabili d'ambiente accettate: `BRANCH` (default `main`), `PORT` (default
|
||||
letto da `.env`), `HEALTH_TIMEOUT_SECONDS`, `FORCE`, `SKIP_ROLLBACK`.
|
||||
|
||||
### Smoke test post-deploy
|
||||
|
||||
```bash
|
||||
PORT=9000 TESTNET_TOKEN="$TESTNET_TOKEN" bash tests/smoke/run.sh
|
||||
|
||||
Reference in New Issue
Block a user