GitHub Copilot è estremamente potente e, insieme alla parte di Copilot agent, possiamo automatizzare molte operazioni all'interno del nostro flusso di lavoro, completamente in background, grazie, appunto, all'agent che lavorerà per noi. Un esempio pratico è quello di utilizzare Copilot per analizzare i risultati degli unit test che falliscono all'interno di un workflow di GitHub Actions, e, in caso di problemi, aprire automaticamente una issue, assegnarla all'agent di Copilot stesso, in modo che possa proporre una soluzione e creare una pull request con la fix in autonomia.
La prima cosa che dobbiamo fare è assicurarci di avere tutte le permission per poter lavorare sul repository e aprire una issue:
permissions: contents: read issues: write
Ora possiamo creare un workflow minimale che esegue gli unit test (con un framework tipo xUnit), di un progetto basato su .NET:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
- name: Run unit tests
id: tests
continue-on-error: true
run: |
mkdir -p test-results
dotnet test --logger "trx;LogFileName=test-results.trx" --results-directory test-results | tee test-results/test-output.logA questo punto, possiamo andare ad eseguire la nostra logica per validare l'output. Se gli unit test passano, non c'è bisogno di ulteriori azioni. In caso contrario, vogliamo creare un prompt per Copilot, in modo che possa analizzare l'output dei test, proporre una soluzione e, infine, creare una pull request automaticamente con la fix. Per fare ciò, possiamo usare la CLI di GitHub e aprire una issue, assegnandola proprio a Copilot.
- name: Validate test results
if: steps.tests.outcome == 'failure'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
TEST_OUTPUT=$(sed 's/`/\\`/g' test-results/test-output.log | head -n 200)
cat <<EOF > copilot-prompt.md
## Unit Test Failure Analysis
Contesto:
- Progetto: .NET
- Framework test: xUnit
- CI: GitHub Actions
### Azioni richieste:
1. Analizza l'output dei test fornito
2. Identifica la causa del fallimento
3. Verifica altri test potenzialmente instabili o mal configurati
4. Proponi una soluzione e crea una Pull Request con la fix
### Output Unit Test
\`\`\`text
$TEST_OUTPUT
\`\`\`
### Richiesta
Fornisci una spiegazione chiara del problema nella descrizione della pull request.
EOF
gh issue create --title "Unit test failure - Copilot analysis needed" --assignee "@copilot" --label "tests,ci,copilot" -F copilot-prompt.mdIn questo modo avviene tutto in background e abbiamo creato un semplice, seppur efficace, sistema di self-healing per i nostri unit test. Quello che ci rimarrà da fare sarà solo revisionare la pull request creata da Copilot e, se tutto va bene, procedere con il merge della fix proposta.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Analizzare il contenuto di una issue con GitHub Models e AI
Usare il metodo nameof con un tipo generico in C# 14
Importare repository da Bitbucket a GitHub Enterprise Cloud
Le cron expression di un workflow di GitHub
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Impostare la content-visibility in CSS per ottimizare il rendering iniziale di una pagina
Costruire endpoint SSE in ASP.NET Core
Keynote .NET Conference Italia 2025
Gestione opzioni colonna nella Blazor QuickGrid
Utilizzare zizmor per rendere più sicuri i workflow di GitHub
Integrare modelli AI in un workflow di GitHub


