# Test di Actions e Automazione Agentica su Gitea Questo repository è un test per verificare il funzionamento delle **Actions** e dell'**automazione agentica** collegata a eventi su Gitea. Lo scopo è sperimentare l'esecuzione automatica di workflow in risposta a eventi come push, pull request e altri trigger, utilizzando agenti AI per operazioni di review, merge e gestione del repository. ## Workflow: `Gitea Actions Demo` (`.gitea/workflows/demo.yml`) Workflow dimostrativo che si attiva ad ogni **push** su qualsiasi branch. Esegue su un container `node:20-alpine` e stampa una serie di messaggi informativi via `echo` per illustrare il funzionamento base di Gitea Actions: - Mostra l'evento che ha scatenato il workflow (`gitea.event_name`) - Mostra il runner OS e il branch/repository coinvolto - Fa il checkout del codice tramite `actions/checkout@v4` - Elenca i file nella workspace - Comunica lo stato finale del job (`job.status`) Non esegue operazioni di modifica o deploy: è puramente a scopo educativo/dimostrativo. ## Workflow: `OpenCode Gitea Integration` (`.gitea/workflows/opencode.yml`) Workflow di automazione agentica che integra **OpenCode** (agente AI) con Gitea. Si attiva su quattro eventi: | Evento | Descrizione | |---|---| | `issues: [opened]` | Apertura di una nuova issue | | `issue_comment: [created]` | Nuovo commento su una issue | | `pull_request_review_comment: [created]` | Nuovo commento su una PR (review) | | `workflow_dispatch` | Esecuzione manuale tramite UI / API | Il workflow procede solo se il corpo della issue/commento contiene `/oc` o `/opencode` (oppure se è un'esecuzione manuale). L'autore deve essere tra gli utenti autorizzati (`maria`, `nicola`), altrimenti il job viene interrotto. ### Schema di esecuzione 1. **Autorizzazione** — Verifica che l'utente sia nella whitelist. 2. **Reazione 👀** — Aggiunge una reazione "eyes" al commento/issue di trigger (feedback visivo immediato senza generare nuovi eventi). 3. **Checkout** — Clona il repository con storia completa (`fetch-depth: 0`). 4. **Installazione OpenCode** — Scarica e installa la CLI di OpenCode via `curl | bash`. 5. **Determinazione contesto** — Capisce se si è in una issue, in una PR o in esecuzione manuale: - **PR**: fa il fetch e checkout del branch della PR. - **Issue**: crea un nuovo branch `opencode-issue-` a partire da `main`. - **Manuale**: crea un branch `opencode-manual-`. 6. **Raccolta contesto** — Se si tratta di una PR, scarica il **diff** e i **commenti** recenti per fornire contesto all'agente. 7. **Pulizia comando** — Rimuove `/oc` o `/opencode` dal prompt, lasciando solo le istruzioni utente. 8. **Esecuzione OpenCode** — Lancia l'agente AI con modello `opencode/big-pickle`, passando il contesto raccolto e la richiesta dell'utente. L'agente può leggere, modificare e creare file nel repository. 9. **Push e PR** — Se ci sono modifiche, le committa e le pusha sul branch. Se si sta lavorando su una issue (non PR), apre automaticamente una **Pull Request** verso `main`. 10. **Reazione finale** — Aggiunge una reazione 🚀 in caso di successo o 😕 in caso di fallimento. Il workflow è progettato per evitare auto-trigger: le reazioni alle issue/commenti non generano eventi `issue_comment`, e il workflow non scrive mai commenti (solo reazioni), prevenendo loop infiniti.