Vai al contenuto principale

Sviluppo software con Devin: integrazioni, test e CI/CD (Parte 3)

Scopri come Devin si integra con i team gestendo i ticket su Jira, aggiornando Slack ed eseguendo controlli CI/CD con GitHub Actions prima del merge.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Bentornato! Alla fine del secondo tutorial avevamo un playground fp-ts a tema pastello, un backend NestJS + PostgreSQL e il tracciamento dei progressi tramite UUID anonimi.

Puoi accedere a tutti i tutorial della serie su Devin qui:

  1. Setup e prima Pull Request (Parte 1)
  2. Consegna di una vertical slice con Devin (Parte 2)
  3. Integrazioni, test e CI/CD (Parte 3) 
  4. Sicurezza, deployment, manutenzione (Parte 4)

Quello che abbiamo fatto finora va benissimo per lavorare in solitaria, ma è il momento di vedere quanto bene Devin si integra con i flussi di lavoro di un team. In questo terzo tutorial vedremo:

  • Integrazioni: Devin aprirà ticket su Jira, ci lavorerà e invierà in Slack ogni aggiornamento di stato delle PR.
  • Quality gate: aggiungeremo unit test Jest per le API, flussi end-to-end Playwright per la UI e imporremo una copertura del 90%.
  • CI/CD: GitHub Actions eseguirà lint, type-check, tutti i test e allegherà i report di Playwright alle pull request prima che si possa fare il merge.

Niente autenticazione e niente deploy in produzione per ora: arriveranno nella Parte 4!

Configura un'integrazione Slack su Devin

Collegare Devin ai tuoi canali di comunicazione e al flusso dei ticket è un'operazione completamente manuale e si fa dall'interfaccia di Devin.

Puoi connetterti a Slack dalla scheda delle integrazioni nelle impostazioni di Devin o installare l'app "Devin AI" dalla Slack App Directory.

integrazione di devin con slack

devin richiede l'autorizzazione per accedere allo spazio di lavoro slack

Nella finestra OAuth l'app mostra ancora "Non approvata da Slack". Cognition afferma che la loro revisione di sicurezza è in corso e che la funzionalità non ne risente.

Poi scegli un canale:

scelta di un canale slack per devin

Puoi chattare con Devin con una semplice menzione:

E parte una sessione che puoi aprire nell'interfaccia:

Devin avvia una sessione nell'interfaccia

Per impostazione predefinita, ricevi le notifiche sugli aggiornamenti delle PR nel canale che preferisci, ma ci sono diverse impostazioni che puoi regolare nei parametri di ogni sessione.

Configura un'integrazione Jira su Devin

Per integrarti con Jira, devi creare un utente bot dedicato (ad esempio, devin-bot@…) e collegarne le credenziali in Devin → Team ▸ Integrations ▸ Jira.

Dal tuo account personale, puoi quindi creare un nuovo ticket e aggiungere l'etichetta devin.

Devin pubblica un commento di analisi con un piano e un prompt "Avviare la sessione?". Scrivi "sì" per farlo procedere con il codice oppure rimuovi l'etichetta per lasciare il ticket solo agli umani.

Nota: Devin non sposta automaticamente le card sulla tua board. Tu o il tuo PM dovete comunque trascinarle su In corso o Fatto. Così il controllo del flusso resta in mano umana.

Lasciare che Devin lavori a partire dai ticket Jira

Una volta collegati Slack e Jira, ho provato un vero esperimento di "agente come compagno di squadra" e ho assegnato a Devin ticket reali per vedere se riusciva a implementarli senza essere guidato passo passo.

Il workflow che ho usato

Ecco il mio workflow:

  1. Creare un ticket nel mio nuovo progetto JIRA e scrivere criteri di accettazione chiari.
  2. Aggiungere l'etichetta devin, che è il segnale per l'analisi di Devin.
  3. Devin commenta con un piano passo passo, una stima di confidenza e chiede: "Avviare la sessione?"

task di devin

  1. Ho risposto "Sì". Il ticket mostra "Sessione avviata" e fornisce il link al web IDE. Quando arriva la PR, Devin pubblica "Merged ✅" su Slack e io sposto la card sulla board. Nulla di tutto ciò consuma ACU finché non rispondo "Sì".

Cinque ticket reali, cinque risultati molto diversi

Ecco un riepilogo di cosa è successo con cinque ticket reali:

Ticket

Lavoro previsto

ACU

Come ha lavorato davvero Devin

Migrare da SQLite→Postgres

Sostituire il motore DB, eseguire le migrazioni

0.6

Perfetto. Un commit, i test sono rimasti verdi.

Migliorare la UI di Sandpack e correggere i test falliti

Ritocchi UI + affidabilità dei test

5.0 (due sessioni)

Ha insistito per tornare indietro a SQLite, ha saltato script di migrazione e ha bruciato ACU. Alla fine ho separato UI vs test in due prompt per restare sotto il tetto.

Mostrare le spunte di completamento nelle liste

Aggiungere badge ✓ nella lista degli esercizi

0.8

Successo al primo colpo; ha aggiunto anche UI ottimistica.

Validare il sistema di discovery

Verifica end-to-end che ogni file sia analizzato

2.6

I controlli del backend sono passati, ma è rimasto un errore nel frontend. Serviti due incoraggiamenti.

Rimuovere il codice degli achievement abbandonati

Eliminare feature flag + componenti obsoleti

0.4

Devin ha avvisato "Bassa confidenza", poi ha rimosso chirurgicamente 30 file e aggiornato gli import senza intoppi.

Cose che sono sembrate casuali

Queste sono le cose che avrebbero bisogno di miglioramenti:

  • Titoli delle PR: ho specificato uno schema di denominazione in ogni prompt, ma Devin si è inventato un formato diverso ogni volta.
  • Fedeltà al database: in un ticket è migrato a Postgres, in un altro ha reintrodotto in silenzio SQLite.
  • Stime di ACU: il commento di analisi diceva che il ticket sandpack avrebbe richiesto 1,5 ACU, in realtà sono state due sessioni e 5 ACU.
  • Confidenza vs esecuzione: un ticket con bassa confidenza è stato eseguito in 3 minuti, alla perfezione. Uno con alta confidenza ha richiesto 45 minuti di aggiustamenti.

Devin su Jira è promettente: due ticket chiusi alla perfezione, uno con lievi incoraggiamenti, e anche nel caso peggiore ha fatto perdere solo tempo, non un rollback. Ma la coerenza ancora non c'è, quindi scope ristretto e vincoli espliciti sono i tuoi alleati.

Aggiungi test automatici con Jest e Playwright

Con chat e ticket a regime, il passo successivo è assicurarsi che il codice rotto non passi inosservato. Ho chiesto a Devin due cose: unit test per il backend e test end-to-end con Playwright che imitino un learner che modifica un esercizio nel browser.

Unit test backend: sorprendentemente indolore

Ho chiesto a Devin suite di test Jest che coprissero il resolver GraphQL, il service layer e i modelli Prisma. Quando ho chiesto una stima degli ACU, ha risposto 20 ACU!!

Ho pensato fosse un errore e ho lanciato comunque il task. È costato 1,1 ACU ed è stato il task eseguito meglio finora.

Playwright e2e: muro rosso, muro verde

Questo è stato leggermente più costoso e ha richiesto 2,3 ACU.

Il flusso registrato: apri /learn/option-01 → modifica il codice → aspetta la ✓ → ricarica la pagina → la ✓ persiste.

Alla prima esecuzione, circa il 70% delle asserzioni è fallito. C'erano molte anomalie di resize, conteggi obsoleti in dashboard e persino il percorso felice era instabile.

Nonostante nel mio prompt ci fosse il comando "Ignora i test falliti, li sistemeremo dopo", Devin ha continuato a patchare il codice finché la suite non è diventata per lo più verde (utile, ma non ciò che avevo chiesto).

Abbiamo ancora alcuni test falliti perché ci sono diversi bug nel sistema. Ma va bene così: sistemeremo in seguito per rendere verdi tutti questi test.

Aggiungi una pipeline GitHub Actions in un clic

Con unit test ed end-to-end al loro posto, l'ultimo passo era assicurarsi che ogni pull request eseguisse automaticamente quei controlli. Ho chiesto a Devin un workflow essenziale, senza artefatti, senza gate di copertura, solo lint → type-check → test.

Devin ha consegnato una pipeline sorprendentemente curata al primo colpo, senza bisogno di follow-up:

  • Zero drift di configurazione: Devin ha riutilizzato gli script npm esistenti, quindi nessun nuovo tool da imparare.
  • Tutto in parallelo: lint, type-check e le due suite di test vengono eseguite fianco a fianco, così l'intero workflow si chiude in ~4 minuti sui runner gratuiti di GitHub.
  • Triage chiaro: se ESLint fallisce ma i test passano, il job di riepilogo riporta comunque l'errore di lint; non fai mai il merge di codice "parzialmente rosso".

Devin ha pushato il workflow, ha atteso che il controllo finisse su GitHub e solo allora ha deciso che fosse concluso. Devo dire che 0,4 ACU per una pipeline pienamente funzionante è difficile da battere. YAML è chiaramente il luogo felice di Devin.

Con questo workflow unito, ogni PR deve passare lint, compilazione e entrambe le suite di test prima che qualcuno prema il pulsante verde!

La Wiki integrata in Devin

Devin include una "Wiki" incorporata che può convivere accanto al tuo codice. È una knowledge base leggera e auto-generata da cui l'agente può sia leggere che scrivere mentre lavora. Dopo aver collegato Slack, Jira e CI, questa Wiki è un buon posto per le note architetturali. Vale la pena darci un'occhiata!

wiki di devin

Per quanto ne so, non è modificabile manualmente e devi affidarti a Devin per mantenere aggiornata la Wiki.

Panoramica di costi e tempi e riflessioni

Quando tutte le integrazioni, i test e la pipeline erano attivi, ho fatto i conti di spesa e tempo:

Blocco di lavoro

ACU

Tempo operativo

Note

Collegamento Slack & Jira

0.0

10 min

Click OAuth manuali; nessun tempo agente.

5 ticket Jira

9.4

2h tra spintarelle e review

Due ticket ok, uno ha richiesto sproni, retry e test, uno si è impantanato sullo swap a SQLite.

Suite unit Jest (API)

1.1

5 min di review

Lo spavento dei "20 ACU" di Devin si è trasformato in una gemma da 1 ACU.

Suite e2e Playwright (web)

2.3

10 min di review

Devin ha ignorato "non correggere il codice" e ha patchato finché non sono rimasti 3 test rossi.

Pipeline GitHub Actions

0.4

3 min di rifinitura

YAML in una pagina; verde al primo tentativo.

Totale

13,2 ACU

≈ 2h 30 min

≈ $30 al tier Core.

Quindi, circa 2 ore di lavoro umano per portare ticket, test e CI. Di sicuro più veloce di come l'avrei fatto io.

A questo punto, però, sono combattuto. Ci sono ancora molti bug e, se avessi scritto io l'intero codebase, probabilmente potrei correggere i problemi più rapidamente di quanto Devin bruci crediti. 

Ma è stato Devin a scrivere la maggior parte dell'app, quindi l'agente in realtà "conosce" la struttura meglio di me. Tuttavia, fatica a sostituire valori hardcoded con quelli dinamici, lascia fili sciolti nel codice in ogni file e ha bisogno che io stia davanti al laptop a fare da babysitter a tutte le sue azioni.

Ho trovato anche il processo un po' frustrante, ma non allo stesso modo di quando inseguo un bug che non riesco a capire. C'è un'enorme differenza (almeno per me) tra essere frustrato perché il codice non funziona ed essere frustrato perché un agente AI non riesce a seguire istruzioni basilari. La seconda è davvero esasperante.

Penso che Devin possa essere molto utile se usato bene, ma come tutti gli agenti AI là fuori non può sostituire un ingegnere software. Va bene usarlo per alcuni task, ma non credo sia adatto o sostenibile usarlo per ogni ticket.

E adesso?

Siamo collegati a Slack e Jira, i test sono verdi e il gate di CI blocca ogni PR approssimativa. Ma per un vero lancio in produzione, ci mancano ancora quattro pilastri:

  1. Autenticazione: collegare le credenziali NextAuth → cookie JWT → GqlAuthGuard in NestJS così i progressi sono legati a utenti reali.
  2. Rinforzo della sicurezza: Sentry per il tracciamento errori sia nel runtime web che API.
  3. Deployment continuo: una pipeline Vercel (web) che genera URL di anteprima per ogni branch e promuove a prod quando la main diventa verde.

Questa è l'agenda per la Parte 4, il tratto finale in cui scopriremo se Devin può mettere in sicurezza, distribuire e sorvegliare l'app quasi senza intervento umano. Fissa il database su Postgres (di nuovo!), limita quegli ACU e ci vediamo nell'ultimo capitolo.

Se sei pronto a continuare, fai clic sull'ultimo elemento dell'elenco qui sotto per andare al quarto tutorial:

  1. Setup e prima Pull Request (Parte 1)
  2. Consegna di una vertical slice con Devin (Parte 2) 
  3. Integrazioni, test e CI/CD (Parte 3) 
  4. Sicurezza, deployment, manutenzione (Parte 4)

Marie Fayard's photo
Author
Marie Fayard

Sono una tech lead orientata al prodotto, specializzata nel far crescere startup nelle fasi iniziali, dal primo prototipo al product-market fit e oltre. Sono instancabilmente curiosa di come le persone usano la tecnologia e adoro lavorare a stretto contatto con founder e team cross‑funzionali per dare vita a idee ambiziose. Quando non costruisco prodotti, inseguo l’ispirazione in angoli nuovi del mondo o scarico le tensioni in una sala yoga.

Argomenti
AI Agents
Intelligenza artificiale

Costruisci agenti AI con questi corsi:

Corso

Introduzione agli AI Agents

1 ore 30 min
142.5K
Scopri le basi degli agenti AI, come funzionano e come si usano nella vita di tutti i giorni, senza bisogno di programmare.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra AltroMostra Altro