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:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user