diff options
Diffstat (limited to 'packages/web/src/content/docs/it/github.mdx')
| -rw-r--r-- | packages/web/src/content/docs/it/github.mdx | 321 |
1 files changed, 321 insertions, 0 deletions
diff --git a/packages/web/src/content/docs/it/github.mdx b/packages/web/src/content/docs/it/github.mdx new file mode 100644 index 000000000..c18ab7eb1 --- /dev/null +++ b/packages/web/src/content/docs/it/github.mdx @@ -0,0 +1,321 @@ +--- +title: GitHub +description: Usa OpenCode in issue e pull request su GitHub. +--- + +OpenCode si integra nel tuo workflow GitHub. Menziona `/opencode` o `/oc` in un commento e OpenCode eseguira' i task dentro il runner di GitHub Actions. + +--- + +## Funzionalita' + +- **Triage delle issue**: chiedi a OpenCode di indagare su una issue e spiegartela. +- **Fix e implementazioni**: chiedi a OpenCode di risolvere una issue o implementare una feature. Lavorera' su un nuovo branch e inviera' una PR con tutte le modifiche. +- **Sicuro**: OpenCode gira all'interno dei runner GitHub. + +--- + +## Installazione + +Esegui il comando seguente in un progetto che si trova in un repo GitHub: + +```bash +opencode github install +``` + +Questo ti guidera' nell'installazione della GitHub app, nella creazione del workflow e nella configurazione dei secret. + +--- + +### Configurazione manuale + +In alternativa, puoi configurarlo manualmente. + +1. **Installa la GitHub app** + + Vai su [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent). Assicurati che sia installata sul repository di destinazione. + +2. **Aggiungi il workflow** + + Aggiungi il seguente file workflow in `.github/workflows/opencode.yml` nel tuo repo. Assicurati di impostare il `model` appropriato e le API key richieste in `env`. + + ```yml title=".github/workflows/opencode.yml" {24,26} + name: opencode + + on: + issue_comment: + types: [created] + pull_request_review_comment: + types: [created] + + jobs: + opencode: + if: | + contains(github.event.comment.body, '/oc') || + contains(github.event.comment.body, '/opencode') + runs-on: ubuntu-latest + permissions: + id-token: write + steps: + - name: Checkout repository + uses: actions/checkout@v6 + with: + fetch-depth: 1 + persist-credentials: false + + - name: Run OpenCode + uses: anomalyco/opencode/github@latest + env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + with: + model: anthropic/claude-sonnet-4-20250514 + # share: true + # github_token: xxxx + ``` + +3. **Salva le API key nei secret** + + Nelle **impostazioni** della tua organizzazione o progetto, espandi **Secrets and variables** sulla sinistra e seleziona **Actions**. Poi aggiungi le API key richieste. + +--- + +## Configurazione + +- `model`: il modello da usare con OpenCode. Usa il formato `provider/model`. E' **obbligatorio**. +- `agent`: l'agente da usare. Deve essere un agente primario. Se non trovato, usa `default_agent` dalla config o `"build"`. +- `share`: se condividere la sessione OpenCode. Di default e' **true** per repository pubblici. +- `prompt`: prompt personalizzato opzionale per sovrascrivere il comportamento di default. Usalo per personalizzare come OpenCode processa le richieste. +- `token`: token di accesso GitHub opzionale per eseguire operazioni come creare commenti, committare modifiche e aprire pull request. Di default, OpenCode usa l'installation access token della OpenCode GitHub App, quindi commit, commenti e pull request risultano provenire dalla app. + + In alternativa, puoi usare il [token integrato `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) del runner GitHub Actions senza installare la OpenCode GitHub App. Assicurati solo di concedere i permessi necessari nel workflow: + + ```yaml + permissions: + id-token: write + contents: write + pull-requests: write + issues: write + ``` + + Se preferisci, puoi anche usare un [personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT). + +--- + +## Eventi supportati + +OpenCode puo' essere attivato dai seguenti eventi GitHub: + +| Tipo evento | Attivato da | Dettagli | +| ----------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| `issue_comment` | Commento su una issue o PR | Menziona `/opencode` o `/oc` nel commento. OpenCode legge il contesto e puo' creare branch, aprire PR o rispondere. | +| `pull_request_review_comment` | Commento su specifiche righe in una PR | Menziona `/opencode` o `/oc` durante una review. OpenCode riceve path file, numeri di riga e contesto del diff. | +| `issues` | Issue aperta o modificata | Attiva automaticamente OpenCode quando le issue vengono create o modificate. Richiede l'input `prompt`. | +| `pull_request` | PR aperta o aggiornata | Attiva automaticamente OpenCode quando le PR vengono aperte, sincronizzate o riaperte. Utile per review automatiche. | +| `schedule` | Pianificazione basata su cron | Esegue OpenCode a pianificazione. Richiede l'input `prompt`. Output nei log e nelle PR (nessuna issue su cui commentare). | +| `workflow_dispatch` | Trigger manuale dalla UI GitHub | Attiva OpenCode on-demand dalla tab Actions. Richiede l'input `prompt`. Output nei log e nelle PR. | + +### Esempio con schedule + +Esegui OpenCode a pianificazione per eseguire task automatizzati: + +```yaml title=".github/workflows/opencode-scheduled.yml" +name: Scheduled OpenCode Task + +on: + schedule: + - cron: "0 9 * * 1" # Every Monday at 9am UTC + +jobs: + opencode: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: write + pull-requests: write + issues: write + steps: + - name: Checkout repository + uses: actions/checkout@v6 + with: + persist-credentials: false + + - name: Run OpenCode + uses: anomalyco/opencode/github@latest + env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + with: + model: anthropic/claude-sonnet-4-20250514 + prompt: | + Review the codebase for any TODO comments and create a summary. + If you find issues worth addressing, open an issue to track them. +``` + +Per gli eventi schedulati, l'input `prompt` e' **obbligatorio** dato che non c'e' un commento da cui estrarre le istruzioni. I workflow schedulati girano senza un contesto utente per i controlli di permesso, quindi il workflow deve concedere `contents: write` e `pull-requests: write` se ti aspetti che OpenCode crei branch o PR. + +--- + +### Esempio di pull request + +Review automatica delle PR quando vengono aperte o aggiornate: + +```yaml title=".github/workflows/opencode-review.yml" +name: opencode-review + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + +jobs: + review: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + pull-requests: read + issues: read + steps: + - uses: actions/checkout@v6 + with: + persist-credentials: false + - uses: anomalyco/opencode/github@latest + env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + model: anthropic/claude-sonnet-4-20250514 + use_github_token: true + prompt: | + Review this pull request: + - Check for code quality issues + - Look for potential bugs + - Suggest improvements +``` + +Per gli eventi `pull_request`, se non viene fornito alcun `prompt`, OpenCode fa di default la review della pull request. + +--- + +### Esempio di triage delle issue + +Triage automatico delle nuove issue. Questo esempio filtra gli account piu' vecchi di 30 giorni per ridurre lo spam: + +```yaml title=".github/workflows/opencode-triage.yml" +name: Issue Triage + +on: + issues: + types: [opened] + +jobs: + triage: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: write + pull-requests: write + issues: write + steps: + - name: Check account age + id: check + uses: actions/github-script@v7 + with: + script: | + const user = await github.rest.users.getByUsername({ + username: context.payload.issue.user.login + }); + const created = new Date(user.data.created_at); + const days = (Date.now() - created) / (1000 * 60 * 60 * 24); + return days >= 30; + result-encoding: string + + - uses: actions/checkout@v6 + if: steps.check.outputs.result == 'true' + with: + persist-credentials: false + + - uses: anomalyco/opencode/github@latest + if: steps.check.outputs.result == 'true' + env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + with: + model: anthropic/claude-sonnet-4-20250514 + prompt: | + Review this issue. If there's a clear fix or relevant docs: + - Provide documentation links + - Add error handling guidance for code examples + Otherwise, do not comment. +``` + +Per gli eventi `issues`, l'input `prompt` e' **obbligatorio** dato che non c'e' un commento da cui estrarre le istruzioni. + +--- + +## Prompt personalizzati + +Sovrascrivi il prompt di default per personalizzare il comportamento di OpenCode nel tuo workflow. + +```yaml title=".github/workflows/opencode.yml" +- uses: anomalyco/opencode/github@latest + with: + model: anthropic/claude-sonnet-4-5 + prompt: | + Review this pull request: + - Check for code quality issues + - Look for potential bugs + - Suggest improvements +``` + +E' utile per imporre criteri specifici di review, standard di codice o aree di focus rilevanti per il progetto. + +--- + +## Esempi + +Ecco alcuni esempi di come puoi usare OpenCode su GitHub. + +- **Spiega una issue** + + Aggiungi questo commento in una issue GitHub. + + ``` + /opencode explain this issue + ``` + + OpenCode leggera' l'intero thread, inclusi tutti i commenti, e rispondera' con una spiegazione chiara. + +- **Risolvi una issue** + + In una issue GitHub, scrivi: + + ``` + /opencode fix this + ``` + + OpenCode creera' un nuovo branch, implementera' le modifiche e aprira' una PR con i cambiamenti. + +- **Rivedi PR e fai modifiche** + + Lascia il seguente commento su una PR GitHub. + + ``` + Delete the attachment from S3 when the note is removed /oc + ``` + + OpenCode implementera' la modifica richiesta e la committera' nella stessa PR. + +- **Rivedi righe specifiche di codice** + + Lascia un commento direttamente sulle righe di codice nella tab "Files" della PR. OpenCode rileva automaticamente file, numeri di riga e contesto del diff per fornire risposte precise. + + ``` + [Comment on specific lines in Files tab] + /oc add error handling here + ``` + + Quando commenti su righe specifiche, OpenCode riceve: + - Il file esatto in review + - Le righe di codice specifiche + - Il contesto del diff circostante + - Informazioni sul numero di riga + + Questo permette richieste piu' mirate senza dover specificare manualmente path file o numeri di riga. |
