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
Evitare la compressione degli artefatti in un workflow di GitHub
Impostare il tipo di supporto dei campi Json in Entity Framework con Sql Server
GitHub Quick Review per la valutazione dello stato di compliance dell'organizzazione aziendale
Gestione delle issue type con GitHub
Nuova modale riconnessione Blazor
Gestione dei codeowners in GitHub
Effettuare chiamate API tramite GitHub App
Canary release con .NET Aspire
Integrare modelli AI in un workflow di GitHub
Nuove validazioni Form Blazor


