chore(deploy): build locale + deploy no-clone, rimuovi CI Gitea

- scripts/build-push.sh: replica job CI in locale (8 image, cache buildx, tag :latest + :sha-X)
- scripts/deploy-noclone.sh: deploy VPS senza clone (curl raw config + image pull)
- rimossa .gitea/workflows/ci.yml
- README + DEPLOYMENT aggiornati: laptop -> registry -> VPS, paths /docker/cerbero_mcp
- ruff fix su 3 test (I001, SIM117, UP037, F821)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
AdrianoDev
2026-04-29 20:37:06 +02:00
parent 4f3e959805
commit ba29572e93
8 changed files with 418 additions and 343 deletions
+20 -18
View File
@@ -53,27 +53,29 @@ OI history. **Nuovi**: `get_funding_arb_spread` (opportunità arb compatte),
`get_liquidation_heatmap` (heuristic da OI delta + funding extreme),
`get_cointegration_pairs` (Engle-Granger su coppie crypto).
## CI/CD pipeline
## Build & deploy pipeline
Pipeline Gitea Actions in `.gitea/workflows/ci.yml` esegue ad ogni push
su `main`:
Niente CI/CD su Gitea: la build delle 8 image è responsabilità della
macchina di sviluppo, fatta da `scripts/build-push.sh`. Il flusso è:
1. **lint**`ruff check services/`
2. **typecheck**`mypy mcp_common` (gating) + servizi (warn-only)
3. **test**`pytest services/` (478 test)
4. **validate-config** — sintassi compose + Caddyfile
5. **build-and-push** — solo su `main`: builda e pusha 8 image al
container registry Gitea (`git.tielogic.xyz/adriano/cerbero-mcp/*`)
con tag `:latest` + `:sha-XXXXXXX` per rollback puntuali.
1. **Quality gate locale** (sul laptop, prima di pushare):
- `uv run ruff check services/`
- `uv run mypy services/common/src/mcp_common`
- `uv run pytest services/`
- `docker compose -f docker-compose.prod.yml config -q`
2. **Build & push** (sul laptop):
```bash
export GITEA_PAT='<PAT_write:package>'
./scripts/build-push.sh # tutte le 8 image
./scripts/build-push.sh base mcp-bybit # solo specifiche
```
Tagga `:latest` + `:sha-<short_HEAD>` per rollback puntuali. Cache
buildx via registry stesso (run successivi 5-10× più veloci).
3. **Auto-rollover su VPS**: Watchtower polla il registry ogni 5 min e
aggiorna i container quando il digest del tag `:latest` cambia.
Le PR fanno girare solo i 4 job di gating (lint/test/validate). Il job
`build-and-push` è skippato.
Sul VPS produzione, **Watchtower** polla il registry ogni 5 min e
auto-aggiorna i container quando il digest del tag `:latest` cambia.
Vedi [`DEPLOYMENT.md`](DEPLOYMENT.md) per setup runner, secret
`REGISTRY_TOKEN`, deploy VPS, smoke test, rollback.
Vedi [`DEPLOYMENT.md`](DEPLOYMENT.md) per build & push, deploy VPS
no-clone (`scripts/deploy-noclone.sh`), smoke test, rollback.
## Avvio locale (dev)