Operazioni
Autodeploy
Deploy automatico delle app su push
Overview
Tutte le app Obelica dispongono di autodeploy tramite Forgejo Actions. Quando viene fatto push su main (o master per centro-donna-giustizia), Forgejo avvia un workflow che esegue il deploy sul server.
Componenti
| Path | Ruolo |
|---|---|
.forgejo/workflows/deploy.yml in ogni repo app | Workflow Forgejo triggerato dal push |
/opt/obelica/infra/scripts/deploy-app.sh | Wrapper che chiama obelica app deploy <app> |
/opt/obelica/infra/bin/obelica | CLI Rust con la logica di deploy |
/opt/obelica/infra/config/deploy-apps.tsv | Registro delle app deployabili |
/opt/obelica/infra/forgejo-runner/obelica-docs/ | Runner Forgejo (etichetta obelica-docs-deploy) |
Runner
Il runner e' stato migrato da Alpine a Ubuntu 24.04 per compatibilita' con il binario glibc del CLI Rust.
Container: forgejo-runner-obelica-docs
Immagine: obelica/forgejo-runner-deploy:local
Label: obelica-docs-deployIl runner monta:
/opt/obelicaper accedere ai repo, ai segreti e al CLI;/var/run/docker.sockper eseguire build e gestire container;./dataper la configurazione e la registrazione.
Workflow
Il workflow e' identico per tutte le app:
name: Deploy app
on:
push:
branches: [main, master]
workflow_dispatch:
jobs:
deploy:
runs-on: obelica-docs-deploy
steps:
- name: Deploy
run: /opt/obelica/infra/scripts/deploy-app.sh "${{ github.event.repository.name }}"Flusso di deploy
- Il developer fa push su
main/masterdi un'app. - Forgejo crea un task per il runner.
- Il runner esegue
/opt/obelica/infra/scripts/deploy-app.sh <nome-app>. - Lo script chiama
obelica app deploy <nome-app>, che:- fa
git fetch+git merge --ff-only origin/main; - esegue
docker compose build; - esegue
docker compose up -d --no-build; - verifica che i container siano running;
- esegue lo smoke test sull'endpoint HTTPS.
- fa
- Il log del deploy viene scritto in
/opt/obelica/logs/deploy-<app>.log.
App coperte
| App | Branch | Strategia |
|---|---|---|
| alessandro-zucchini | main | next-docker |
| caffe-del-corso | main | astro-static-docker |
| centro-donna-giustizia | master | next-docker |
| macelleria | main | next-docker |
| officina-longhi | main | vite-static-docker |
| ottica-style | main | static-docker |
| romauto | main | next-docker |
| sazzini | main | astro-static-docker |
| sonja-trekking | main | next-docker |
| tulpa-studio | main | next-docker |
| wash-dog-ferrara | main | monorepo-next-docker |
| zannoni | main | astro-static-docker |
obelica-docs mantiene il proprio workflow dedicato in /opt/obelica/repos/obelica-docs/.forgejo/workflows/deploy.yml.
Comandi utili
# Deploy manuale di un'app
obelica app deploy <nome-app>
# Deploy di tutte le app
obelica deploy all
# Lista app deployabili
obelica deploy list
# Log deploy
ls -lt /opt/obelica/logs/deploy-*.log
tail -f /opt/obelica/logs/deploy-<app>.log
# Stato runner
docker logs forgejo-runner-obelica-docs --tail 50Note
- I deploy sono sequenziali (capacity del runner = 1).
- Se un deploy fallisce, il runner passa al task successivo; lo stato va controllato nel log.
- Lo smoke test utilizza il dominio
.vps.obelica.comconfigurato indeploy-apps.tsv.