Obelica Docs
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

PathRuolo
.forgejo/workflows/deploy.yml in ogni repo appWorkflow Forgejo triggerato dal push
/opt/obelica/infra/scripts/deploy-app.shWrapper che chiama obelica app deploy <app>
/opt/obelica/infra/bin/obelicaCLI Rust con la logica di deploy
/opt/obelica/infra/config/deploy-apps.tsvRegistro 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-deploy

Il runner monta:

  • /opt/obelica per accedere ai repo, ai segreti e al CLI;
  • /var/run/docker.sock per eseguire build e gestire container;
  • ./data per 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

  1. Il developer fa push su main/master di un'app.
  2. Forgejo crea un task per il runner.
  3. Il runner esegue /opt/obelica/infra/scripts/deploy-app.sh <nome-app>.
  4. 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.
  5. Il log del deploy viene scritto in /opt/obelica/logs/deploy-<app>.log.

App coperte

AppBranchStrategia
alessandro-zucchinimainnext-docker
caffe-del-corsomainastro-static-docker
centro-donna-giustiziamasternext-docker
macelleriamainnext-docker
officina-longhimainvite-static-docker
ottica-stylemainstatic-docker
romautomainnext-docker
sazzinimainastro-static-docker
sonja-trekkingmainnext-docker
tulpa-studiomainnext-docker
wash-dog-ferraramainmonorepo-next-docker
zannonimainastro-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 50

Note

  • 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.com configurato in deploy-apps.tsv.

On this page