diff --git a/SETUP_TRIAGE.md b/SETUP_TRIAGE.md new file mode 100644 index 0000000..9591be0 --- /dev/null +++ b/SETUP_TRIAGE.md @@ -0,0 +1,90 @@ +# Setup triage automatico su un repository + +## Prerequisiti + +- Gitea Actions abilitate sul repository +- Issues abilitate sul repository +- Runner disponibile con label `linux_amd64` (o label equivalente) +- Accesso admin al repository per creare secrets e labels + +## Passaggi + +### 1. Secrets + +Crea i seguenti secrets nel repository (`Settings → Actions → Secrets`): + +| Secret | Valore | Descrizione | +|---|---|---| +| `TOKEN` | Token API Gitea | Permette all'action di applicare label e commentare | +| `OPENCODE_API_KEY` | API key OpenCode | Autenticazione per il provider AI | + +### 2. Labels + +Crea le label `bug` e `richiesta` (o verifica che esistano): + +``` +bug #ee0701 Malfunzionamento, errore, crash o anomalia +richiesta #007bff Nuova funzionalità, miglioramento o ottimizzazione +``` + +Se il repo ha già label simili con nomi diversi, unificarle sulla versione minuscola per evitare ambiguità col triage. + +### 3. Workflow + +Crea il file `.gitea/workflows/triage-issue.yml`: + +```yaml +name: Triage Issue + +on: + issues: + types: [opened] + +jobs: + triage: + runs-on: linux_amd64 + steps: + - uses: actions/checkout@v4 + + - uses: https://git.incloud.ovh/anuti/Actions/install-opencode@main + + - uses: https://git.incloud.ovh/anuti/Actions/triage-issue@main + with: + issue-title: ${{ github.event.issue.title }} + issue-body: ${{ github.event.issue.body }} + issue-number: ${{ github.event.issue.number }} + repository: ${{ github.repository }} + api-token: ${{ secrets.TOKEN }} + api-key: ${{ secrets.OPENCODE_API_KEY }} +``` + +Se il runner ha una label diversa da `linux_amd64`, modificare `runs-on` di conseguenza. + +### 4. Commit e push + +```bash +git add .gitea/workflows/triage-issue.yml +git commit -m "Aggiunge workflow triage automatico" +git push +``` + +### 5. Test + +Aprire una nuova issue sul repository. Entro pochi secondi il runner dovrebbe: + +1. Classificare l'issue come `bug` o `richiesta` +2. Applicare la label corrispondente +3. Pubblicare un commento con riassunto, gap analisi e domande aperte +4. Caricare un file `.md` con l'analisi tecnica completa come asset dell'issue + +### Troubleshooting + +**Il workflow non parte** +- Verificare che `has_actions: true` sul repository (API: `PATCH /repos/{owner}/{repo}` con body `{"has_actions":true}`) +- Verificare che il runner sia online e abbia la label corretta + +**Errore "secret not found"** +- Verificare che i secrets `TOKEN` e `OPENCODE_API_KEY` siano configurati + +**Label non trovata** +- Il triage cerca label con nome esattamente `bug` e `richiesta`. Crearle se mancanti.