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
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Le cron expression di un workflow di GitHub
Anonimizzare i dati sensibili nei log di Azure Front Door
Analizzare il contenuto di una issue con GitHub Models e AI
Managed deployment strategy in Azure DevOps
Utilizzare Hybrid Cache in .NET 9
Utilizzare i command service nei test con .NET Aspire
Semplificare i deployment con le label in Azure Container App
Integrare SQL Server in un progetto .NET Aspire
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Gestione CSS in Blazor con .NET 9


