Update .gitea/workflows/opencode.yml
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 3s

This commit is contained in:
2026-07-05 15:59:06 +00:00
parent 8c1af398a5
commit 86fd045dc3
+42 -14
View File
@@ -18,32 +18,60 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
fetch-depth: 0 # Cambiato a 0 per permettere all'AI di vedere la cronologia dei branch se serve
- name: Install OpenCode CLI
run: |
curl -fsSL https://opencode.ai/install | bash
curl -fsSL https://opencode.ai | bash
echo "$HOME/.opencode/bin" >> $GITHUB_PATH
- name: Execute OpenCode (Big Pickle)
env:
# Configurazione OpenCode Zen & Modello
# OpenCode Zen Configuration
OPENCODE_ZEN_API_KEY: ${{ secrets.OPENCODE_ZEN_API_KEY }}
OPENCODE_API_BASE: https://opencode.ai/zen/v1
OPENCODE_API_BASE: https://opencode.ai
OPENCODE_MODEL: opencode/big-pickle
# Autenticazione e deviazione su Gitea (Nota il percorso /api/v1 finale obbligatorio)
GITHUB_API_URL: "https://maribit.it"
GITHUB_TOKEN: ${{ secrets.BOT_GITEA_TOKEN }}
# Parametri Gitea passati in modo esplicito
GITEA_TOKEN: ${{ secrets.BOT_GITEA_TOKEN }}
GITEA_API_URL: "https://maribit.it"
# Variabili di contesto necessarie all'istanza di esecuzione
GITHUB_EVENT_PATH: ${{ github.event_path }}
GITHUB_REPOSITORY: ${{ github.repository }}
# Contesto dell'evento estratti da Gitea
ISSUE_TITLE: ${{ github.event.issue.title }}
ISSUE_BODY: ${{ github.event.issue.body }}
COMMENT_BODY: ${{ github.event.comment.body }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
REPO_FULL_NAME: ${{ github.repository }}
run: |
# Configurazione Git locale per permettere all'agente di effettuare modifiche
# 1. Configurazione Git locale per permettere l'operatività sui branch
git config --global user.name "OpenCode Bot"
git config --global user.email "opencode-bot@maribit.it"
# Eseguiamo il comando passando il file dell'evento tramite il parametro --event
# Le altre configurazioni (token, api, modello) vengono lette da OpenCode direttamente dall'ambiente (env)
opencode github run --event "$GITHUB_EVENT_PATH"
# 2. Creiamo un branch dedicato per la risoluzione della issue
BRANCH_NAME="opencode-fix-issue-$ISSUE_NUMBER"
git checkout -b "$BRANCH_NAME"
# 3. Puliamo il comando dal token di attivazione (/oc) per dare all'AI solo le istruzioni pulite
CLEAN_PROMPT=$(echo "$COMMENT_BODY" | sed 's|/oc||g' | sed 's|/opencode||g')
# 4. Eseguiamo l'agente OpenCode in modalità workspace locale sul codice scaricato
# L'AI analizzerà i file locali e applicherà i fix in base alla richiesta
opencode run \
--model "$OPENCODE_MODEL" \
--prompt "Risolvi il seguente problema nel codice. Contesto della Issue: $ISSUE_TITLE - $ISSUE_BODY. Richiesta specifica dell'utente: $CLEAN_PROMPT"
# 5. Se l'agente ha modificato dei file, facciamo il push e apriamo la PR su Gitea via API
if [ -n "$(git status --porcelain)" ]; then
git add .
git commit -m "Fix automatico OpenCode (Big Pickle) per issue #$ISSUE_NUMBER"
git push origin "$BRANCH_NAME"
# Chiamata API nativa a Gitea per creare la Pull Request
curl -X 'POST' \
"$GITEA_API_URL/repos/$REPO_FULL_NAME/pulls" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"base\":\"main\",\"head\":\"$BRANCH_NAME\",\"title\":\"PR Automatica OpenCode: Issue #$ISSUE_NUMBER\",\"body\":\"Risoluzione automatica generata dal modello big-pickle a fronte del commento: $CLEAN_PROMPT\"}"
else
echo "Nessuna modifica rilevata dall'agente OpenCode."
fi