E se GitHub Copilot entrasse nelle Azure Pipeline? In questo articolo vediamo uno scenario pratico di utilizzo di Copilot all’interno delle pipeline di Azure DevOps per automatizzare la revisione del codice nelle Pull Request.

Su GitHub è già possibile coinvolgere Copilot per avviare le code review e ottenere una prima scansione automatica da parte dell’agent. Tuttavia, molti team di sviluppo non possono migrare a GitHub e continuano a gestire la loro automazione tramite Azure DevOps. Se ti stai chiedendo come poter accedere alla code review con Copilot in questo contesto, la buona notizia è che è assolutamente fattibile integrando GitHub Copilot CLI direttamente nei tuoi task di CI/CD.

Il flusso di lavoro della Code Review

Immaginiamo una classica esecuzione di una pipeline in Azure DevOps:

  1. Viene assegnato un agent (es. Ubuntu Latest).
  2. Viene fatto il checkout dei sorgenti.
  3. Immediatamente viene installato GitHub Copilot in versione CLI.

Una volta pronto, lo script estrae le differenze (git diff) tra il branch attuale di sviluppo e il branch di riferimento (es. main). A questo punto viene eseguito Copilot con un prompt specifico per esaminare il codice modificato.

Copilot elabora le sue considerazioni e crea un documento di sintesi in markdown (es. review-report.md) indicando:

  • File aggiunti o cancellati
  • Possibili bug
  • Analisi di sicurezza

Questo file viene poi caricato nella Azure Pipeline come artefatto di build (visibile nei related artifact) in modo da poter essere scaricato e consultato dai reviewer umani.

Apriamo il cofano: la definizione della Pipeline

Per implementare tutto questo, serve configurare un file YAML (es. pr-review.yml). Ecco gli elementi chiave:

1. Checkout completo (fetch-depth)

Il dettaglio più importante è impostare fetchDepth: 0. Le pipeline in Azure DevOps fanno tipicamente un checkout con profondità 1, recuperando solo l’ultimo commit. Per poter calcolare le differenze rispetto a main, l’agent deve eseguire un git clone completo, garantendo accesso all’intera history del repository.

2. Installazione di Copilot CLI

Durante l’esecuzione, è necessario installare la CLI di Copilot globalmente:

npm install -g @githubnext/github-copilot-cli

Da questo momento, l’agent avrà a disposizione il comando copilot.

3. Autenticazione (Il token di Copilot)

Punto cruciale: come si autentica la CLI? Serve un GITHUB_TOKEN che dia accesso ai tuoi AI credits. Puoi usare un Fine-grained Personal Access Token generato su GitHub.com, assegnandogli il permesso specifico Copilot Request. Una volta generato, assicurati di configurarlo come variabile segreta nelle impostazioni della pipeline su Azure DevOps, esponendolo poi come variabile d’ambiente ai task bash.

Lo script di review

Il cuore dell’automazione è uno script bash in cui invochiamo Copilot programmaticamente. Prepariamo un prompt strutturato: “Sei un expert code reviewer. Analizza questo diff e fornisci un summary, evidenzia bug e problemi di security.”

Si invoca poi Copilot CLI passandogli il diff. Il risultato viene scritto nell’artefatto finale e, per mantenere l’ambiente pulito, si imposta una condition: always per pulire eventuali file temporanei al termine del job.

Se vuoi esplorare altre integrazioni GitHub e Azure DevOps, ti suggerisco di leggere anche il mio articolo su come collegare Azure Pipeline con GitHub.

Automatizzare tutto sulle Pull Request

Per far sì che la pipeline si attivi autonomamente all’apertura di una Pull Request:

  1. Vai nelle impostazioni del repository in Azure DevOps.
  2. Seleziona le Policies per il branch main.
  3. Aggiungi una Build Validation collegandola alla tua pipeline di review.

Puoi anche impostare un filtro per fare in modo che la pipeline parta solo se i file modificati si trovano, ad esempio, all’interno della directory src/.

Se vuoi essere ancora più rigoroso, puoi inserire un job preliminare nella pipeline che verifichi l’effettiva presenza di una Pull Request utilizzando i logging commands di Azure DevOps. Il job di review verrà eseguito solo se questa condizione è soddisfatta.

I prossimi passi

Integrare GitHub Copilot in Azure Pipeline è solo l’inizio. I limiti sono dettati dalla fantasia:

  • Potresti avere un agent che fa il triage del backlog prima che lo vedano gli sviluppatori.
  • Potresti usarlo per un’analisi proattiva dei bug associando i log d’errore alle porzioni di codice.

Questa integrazione avvicina ulteriormente le potenzialità dell’AI ai team che operano su Azure DevOps, elevando le pratiche di ingegneria della tua software factory. Se stai cercando di espandere le tue competenze in ambito AI, dai un’occhiata al mio Corso completo GitHub Copilot e Visual Studio Code per programmare con AI.