Per la configurazione generale dell’ambiente, vedi Configurazione dell’ambiente. Per i dettagli sulla sintassi, vedi il Riferimento YAML.
Debug degli errori di build
Passaggio 1: Verificare lo stato della build
| Stato | Cosa significa | Cosa fare |
|---|---|---|
| Success | Tutto ha funzionato | Nulla — la machine image è pronta |
| Partial | La build principale è riuscita, ma alcuni repo non sono andati a buon fine | Verificare quali repo non sono andati a buon fine; le relative sessioni potrebbero presentare problemi |
| Failed | La build non è riuscita | Verificare nei log quale passaggio non è riuscito |
| Cancelled | Una build più recente ha sostituito questa | Normale — avvia una build più recente, se necessario |
| Skipped | Non sono state rilevate modifiche alla configurazione | Nulla — non era necessaria alcuna build |
Passaggio 2: Leggi i log di build
- Configurazione condivisa — comandi Enterprise + validi per tutta l’org
- Clone — clonazione del repository
- Configurazione della repo — comandi specifici del repository
- Finalize — controllo di integrità e creazione dell’immagine
name, i log mostreranno esattamente quale passaggio è fallito. Questo è uno dei principali vantaggi di assegnare un nome ai passaggi:
Passaggio 3: Identifica il tipo di errore
Errori di clonazione
- Accesso al repository non configurato — verificare Enterprise Settings > Integrations
- Il repo privato richiede un token di autenticazione
- Il repository è stato rinominato o eliminato
- Problema di connettività di rete (è necessaria una VPN o un proxy)
Errori di installazione delle dipendenze
npm install, pip install o comandi simili.
Cause comuni:
- Il registry privato dei pacchetti richiede l’autenticazione — aggiungi il token a Secrets
- Conflitto tra versioni dei pacchetti — blocca versioni specifiche
- Timeout di rete — verifica se è necessaria una VPN
- URL del registry configurato in modo errato
maintenance. Consulta Esempi di configurazione per i pattern dei registry privati.
Errori di timeout
- Prompt interattivo in attesa di input — aggiungi i flag
-y, usaDEBIAN_FRONTEND=noninteractive - L’installazione di dipendenze molto grandi richiede troppo tempo
- Il comando supera il timeout di 1 ora
initialize, così vengono eseguite solo durante le build (non in ogni sessione).
Errori di autorizzazione
sudomancante durante l’installazione di pacchetti di sistema- Tentativo di scrivere in directory protette
- File appartenente a un altro utente da una build precedente
sudo per le operazioni a livello di sistema (apt-get, scrittura in /etc/, ecc.). Per i gestori di pacchetti a livello utente (npm, pip, cargo), sudo di solito non è necessario.
Errori “comando non trovato”
initialize non è disponibile in maintenance o nei passaggi successivi.
Cause comuni:
- Lo strumento viene installato in una directory non inclusa in
PATH - Le modifiche al profilo della shell (
.bashrc) non vengono ricaricate nei passaggi successivi
PATH la directory dello strumento tramite $ENVRC:
Passaggio 4: Itera
- Correggi la configurazione YAML
- Salva — una nuova build si avvia automaticamente
- Verifica i log di build della nuova build
Riferimento rapido agli errori comuni
| Errore | Causa probabile | Soluzione |
|---|---|---|
command not found | Strumento non installato o non presente nel PATH | Aggiungilo a initialize, oppure aggiungilo al PATH tramite $ENVRC |
Permission denied | sudo mancante | Usa sudo apt-get install per i pacchetti di sistema |
npm ERR! 404 | Pacchetto privato, nessuna autenticazione | Aggiungi il token di autenticazione del registry in maintenance (esempi) |
E: Unable to locate package | apt-get update non eseguito prima | Aggiungi sudo apt-get update -qq prima di apt-get install |
| Timeout | Installazione lenta o prompt interattivo | Spostalo in initialize; aggiungi -y e DEBIAN_FRONTEND=noninteractive |
| File di configurazione vuoti dopo l’avvio della sessione | Credenziali scritte in initialize | Sposta i passaggi relativi alle credenziali in maintenance |
| La build riesce ma la sessione non funziona | Il comando maintenance fallisce all’avvio della sessione | Verifica manualmente i comandi maintenance in una sessione |
Migrazione dalla configurazione interattiva
Come funziona la migrazione
- Toggle ATTIVO (predefinito) — tutte le sessioni usano lo snapshot legacy. Nessuna interruzione.
- Toggle DISATTIVO — tutte le sessioni usano lo snapshot dichiarativo.
Passaggi della migrazione
Prepara la configurazione
Annota i comandi dell’attuale configurazione interattiva: li assocerai alle sezioni YAML:
| Passaggio del wizard legacy | Equivalente dichiarativo |
|---|---|
| Git pull | Automatico (integrato) |
| Configure secrets | Secrets (invariato) |
| Install dependencies | sezione initialize |
| Maintain dependencies | sezione maintenance |
| Set up lint | voce knowledge chiamata lint |
| Set up tests | voce knowledge chiamata test |
| Run local app | voce knowledge chiamata startup |
| Additional notes | voce knowledge chiamata notes |
Scrivi il tuo YAML
Vai a Settings > Devin’s Environment e seleziona il tuo repository. Associa i tuoi comandi legacy:Oppure avvia semplicemente una sessione di Devin e chiedigli di configurare il repo: Devin può generare automaticamente la configurazione per te.
Salva e attendi la build
Salva la configurazione. Una build si avvia automaticamente. Monitora l’avanzamento in Build History. Le build sono gratuite: non consumano ACU.
Testa prima del passaggio
Prima di migrare tutti, testa la configurazione dichiarativa su singole sessioni usando l’override manuale. In questo modo tu (o chi sta iterando sulla configurazione) potete usare lo snapshot dichiarativo mentre tutti gli altri restano sullo snapshot legacy.Continua a iterare sulla configurazione finché la configurazione dichiarativa non raggiunge piena parità con il tuo ambiente legacy.
Migrazione Enterprise
- Configurate prima il file YAML a livello Enterprise — infrastruttura condivisa come VPN, certificati e impostazioni del proxy.
- Eseguite la migrazione di una org alla volta. Ogni org ha il proprio toggle legacy, quindi potete migrare progressivamente senza influire sugli altri team.
- Valutate l’uso di una org di test. Per le grandi aziende, create un’organizzazione di test dedicata per convalidare la configurazione dichiarativa prima di distribuirla nelle org di produzione.
- Usate Devin su larga scala. Devin può configurare le repo tramite sessioni parallele: avviate una sessione per ogni repo e Devin genererà automaticamente proposte di configurazione. Funziona bene per l’onboarding di 10–100+ repo.
Che cosa succede al mio vecchio snapshot?
Differenze principali
| Funzionalità | Legacy (interattivo) | Dichiarativo (YAML) |
|---|---|---|
| Riproducibilità | Con stato persistente — gli snapshot accumulano modifica nel tempo | Completamente riproducibile da YAML |
| Multi-repo | Una repo alla volta | Più repo in una build con clonazione simultanea |
| Manutenzione | Passaggi manuali “maintain dependencies” | Automatica — maintenance viene eseguito all’inizio della sessione |
| Layer Enterprise/org | Non supportati | Gerarchia a 3 livelli (Enterprise → Org → Repo) |
| Suggerimenti di Devin | Solo nella procedura guidata | Durante la sessione — Devin può suggerire aggiornamenti alla configurazione |
| Costo | Le sessioni della procedura guidata richiedevano ACU | Sessioni di setup ~1–3 ACU; le build sono gratuite |
Domande frequenti
Generale
initialize invece di maintenance?
Usa initialize per installazioni una tantum di strumenti (apt-get install, configurazione del runtime del linguaggio, strumenti CLI globali). Usa maintenance per l’installazione di dipendenze che devono restare aggiornate (npm install, pip install, uv sync).
Come aggiungo variabili di ambiente?
Scrivile in $ENVRC:
sudo apt-get install nella sezione initialize. Usa sempre DEBIAN_FRONTEND=noninteractive e il flag -y per evitare prompt interattivi.
E se mi servono versioni diverse di Node per repo diversi?
Usa nvm nella configurazione del repo:
Specifico per la build
Specifico per Enterprise
Limitazioni note
- Nessuna anteprima/sandbox di build — ogni modifica alla configurazione avvia una build completa. Prova prima i comandi in una sessione.
- Configurazione seriale del repo — la configurazione a livello di repository viene eseguita su un repo alla volta (in ordine alfabetico). Un numero elevato di repo comporta build più lunghe.
- Nessuna logica condizionale in YAML — il formato non supporta costrutti if/else. Se necessario, usa condizioni della shell nei comandi (ad es.,
[ -f package.json ] && npm install). - Nessuna ricerca nei log di build — i log di build devono essere scorsi manualmente. Usa passaggi denominati per individuare più facilmente gli errori.
Passaggi successivi
- Configurazione dell’ambiente — guida principale per definire la configurazione
- Esempi di configurazione — esempi da copiare e incollare in base a stack e livello
