Questo è il riferimento completo ai campi dei blueprint. Per un’introduzione ai blueprint e a come si inseriscono nell’ambiente di Devin, consulta Configurazione dichiarativa
dell’ambiente.
Panoramica
runs-on e includes, a una sezione post-build per i blueprint a livello di organizzazione ed Enterprise e a una sezione clone per i blueprint a livello di repo:
Tutte le sezioni sono facoltative. Puoi includerne qualsiasi combinazione.
initialize viene eseguito durante le build complete e per i workspace ricostruiti da zero. I risultati vengono salvati nello snapshot. In una build differenziale, i workspace ereditati saltano initialize, recuperano il codice più recente ed eseguono solo maintenance. Scrivi maintenance in modo che sia autosufficiente e possa essere eseguito in modo indipendente sullo snapshot esistente, senza richiedere che initialize venga eseguito immediatamente prima né fare affidamento sulle variabili d’ambiente che initialize ha precedentemente scritto in $ENVRC. All’inizio di ogni sessione, i comandi di maintenance non vengono eseguiti automaticamente — vengono invece presentati all’agente come contesto, così sa quali comandi per le dipendenze eseguire se necessario (ad es. dopo aver aggiornato il codice all’ultima versione). I comandi devono comunque essere rapidi e incrementali. Le build vengono eseguite automaticamente quando il tuo blueprint cambia e periodicamente (circa ogni 24 ore).
initialize
initialize per installare strumenti e runtime che non dipendono dallo stato specifico del tuo codice: runtime dei linguaggi, pacchetti di sistema, CLI globali.
Forma semplice
Formato strutturato
run.
Quando usare initialize anziché maintenance
Entrambe le sezioni vengono eseguite durante le build complete. Nelle build differenziali, i workspace ereditati saltano
initialize ed eseguono solo maintenance dopo aver scaricato il codice più recente. Strumenti e runtime vanno in initialize; i comandi per le dipendenze che si basano sui file di lock del codice vanno in maintenance.
maintenance
maintenance per installare le dipendenze e per altri comandi che devono essere eseguiti dopo il clone del codice. Questi comandi vengono eseguiti durante le build e vengono esposti all’agente all’inizio della sessione, così che possa eseguirli di nuovo se le dipendenze sono cambiate. Qui vanno npm install, pip install, uv sync e comandi simili.
Per i blueprint a livello di repo, i comandi
maintenance vengono eseguiti dalla directory radice del repository. Per i blueprint a livello di org, vengono eseguiti dalla home directory (~).knowledge
knowledge non viene eseguita. Fornisce informazioni di riferimento che Devin utilizza quando lavora nel tuo progetto. È qui che indichi a Devin i comandi corretti per il linting, il testing, la build e qualsiasi altro flusso di lavoro specifico del progetto.
Il campo
name è un’etichetta. Per convenzione, lint, test e build sono i nomi standard. Devin fa riferimento a questi nomi quando verifica il proprio lavoro. Puoi aggiungere altri elementi di conoscenza con nomi personalizzati:
runs-on
runs-on accetta una stringa o un elenco di stringhe. Il valore predefinito è ["default"]. Le etichette default e linux sono alias che non distinguono tra maiuscole e minuscole per la piattaforma Linux predefinita. Qualsiasi altra etichetta deve corrispondere a una configurazione macchina registrata nel tuo account, ad esempio windows o macos.
Quando un blocco elenca più etichette di piattaforma, Devin crea una build dello snapshot per ogni piattaforma ed esegue gli stessi passaggi su ciascuna. Due blocchi nello stesso file non possono corrispondere alla stessa piattaforma; ciò include gli alias default e linux.
Per la configurazione specifica della piattaforma, consulta Supporto per Windows e Supporto per macOS.
includes
includes si applica solo ai blueprint supportati da Git: Devin lo interpreta quando rileva il file .devin/blueprint.yaml nella directory root di un repository. Viene ignorato nei blueprint creati nell’editor Settings e non è consentito in un blueprint del workspace incluso.
Accetta una stringa o un elenco di stringhe. Ogni voce identifica una sottodirectory del workspace; Devin cerca <dir>/.devin/blueprint.yaml, ma è valido anche il percorso completo del file. I percorsi non possono contenere ...
Le inclusioni annidate vengono rifiutate e ciascun percorso del workspace può comparire una sola volta. Se un file incluso non è presente, Devin considera quel workspace come rimosso.
post-build
post-build è disponibile solo nei blueprint a livello di organizzazione e di Enterprise (non è supportata nei blueprint a livello di repo). I suoi passaggi vengono eseguiti durante la build dopo che tutti i repository sono stati clonati e che i relativi passaggi initialize e maintenance sono stati completati, ma prima del controllo di integrità e della creazione dell’immagine snapshot. Questo la rende il punto ideale per la convalida tra più repository e per i controlli di integrità che richiedono un ambiente completamente configurato.
Poiché viene eseguito nelle fasi finali della build, con l’intero ambiente già pronto, un passaggio post-build può accedere a ogni repository clonata e a ogni strumento installato dai blueprint di Enterprise, organizzazione e repository.
I passaggi
post-build usano gli stessi tipi di passaggio di initialize (comandi shell run e GitHub Actions uses) e vengono eseguiti dalla home directory (~).clone
clone sovrascrive i valori predefiniti usati quando Devin clona il repository nello snapshot. Ogni campo è facoltativo e, se non specificato, usa un valore predefinito appropriato che preserva il comportamento corrente.
clone si applica solo ai blueprint a livello di repo: controlla come quello specifico repository viene clonato nello snapshot. Non ha alcun effetto nei blueprint a livello di organizzazione o blueprint a livello di Enterprise.Tipi di passaggi
initialize, maintenance o post-build usa uno di due tipi: comandi shell (run) o GitHub Actions (uses). I passaggi maintenance supportano solo run; vedi GitHub Actions.
Regole di abbreviazione e convalida
- Una sezione specificata come semplice stringa diventa un unico passaggio
run. - Un elemento di elenco specificato come semplice stringa diventa un passaggio
run. - Un passaggio deve definire
runoppureuses, ma non entrambi. - I passaggi
usesnon possono essere utilizzati inmaintenance. La build non va a buon fine con l’errore'uses' steps are not supported in maintenance sections. withè valido solo nei passaggiuses.- Tutti i valori di
withvengono convertiti in stringhe; racchiudi tra virgolette i valori numerici quando l’action prevede una stringa.
Regole per i documenti YAML
--- deve essere una mappatura YAML. Una sequenza al livello superiore viene rifiutata con each YAML document must be a mapping, not a sequence; use '---' to separate multiple blocks.
Comandi shell (run)
Dettagli di esecuzione:
- I comandi vengono eseguiti in bash. Se un comando in uno script su più righe non riesce, l’intero passaggio si interrompe immediatamente.
- I blueprint a livello di org vengono eseguiti nella directory home (
~). - I blueprint a livello di repo vengono eseguiti nella directory radice del repository clonato.
- Ogni passaggio ha un timeout di 1 ora.
- I secret sono automaticamente disponibili come variabili d’ambiente.
GitHub Actions (uses)
initialize (o post-build) del tuo blueprint:
Formato del riferimento dell’azione:
github.com/ e il suffisso @<ref> sono entrambi obbligatori. Il ref è in genere un tag di versione come v5.
Azioni di uso comune:
Sono supportate le azioni Node.js (
node16, node20, node24) e le azioni composite. Le azioni Docker sono supportate solo nelle build Linux, non nelle build Windows. I passaggi di pulizia post vengono ignorati. Consulta le limitazioni di GitHub Actions.with:
I valori passati tramite with vengono forniti all’azione come input, seguendo le stesse convenzioni dei flussi di lavoro di GitHub Actions. Tutti i valori vengono convertiti in stringhe.
setup-python aggiunge l’eseguibile di Python a PATH, che rimane disponibile in tutti i passaggi successivi e in maintenance.
run vs uses: quale usare
In pratica, nella maggior parte delle configurazioni si usa
uses per i runtime dei linguaggi e run per tutto il resto.
Variabili d’ambiente e segreti
Variabili d’ambiente a livello di singolo passaggio
env:
Variabili d’ambiente tra i passaggi ($ENVRC)
$ENVRC:
$ENVRC vengono esportate automaticamente e sono disponibili in tutti i passaggi successivi e nella sessione di Devin prodotta dalla build corrente. Funziona in modo analogo a $GITHUB_ENV in GitHub Actions.
Questo vale anche per PATH. Se installi uno strumento in una directory non standard
(qualsiasi directory al di fuori di /usr/bin o /usr/local/bin), aggiungila a $ENVRC in modo che
i passaggi successivi e i blueprint a livello di repo possano trovare il binario:
export PATH=... all’interno di un blocco run: ha effetto solo sulla shell di quel passaggio.
Ogni passaggio avvia un nuovo processo shell, quindi le modifiche a PATH che non vengono scritte in
$ENVRC vanno perse.
Le
azioni uses: (ad es. actions/setup-node) propagano automaticamente le aggiunte a PATH
in $ENVRC — devi farlo manualmente solo per i passaggi run:.$ENVRC viene reimpostato all’inizio di ogni build, incluse le build differenziali.
I valori scritti durante una build non sono disponibili nella build successiva. In
particolare, un workspace ereditato esegue solo maintenance, quindi non può fare affidamento su
PATH o su altre variabili che initialize ha scritto in $ENVRC nella build
di origine. Configura qualsiasi ambiente richiesto da maintenance all’interno di
maintenance stessa.
Segreti
$MY_SECRET).
I segreti vengono iniettati prima dell’esecuzione di ogni passaggio durante le build. Vengono rimossi dall’immagine snapshot stessa, quindi le credenziali non vengono mai incorporate nelle immagini macchina salvate. Al di fuori dei comandi dei blueprint, i segreti non vengono esportati in ogni shell; Devin li associa ai comandi specifici che ne hanno bisogno.
- Segreti dell’organizzazione: Disponibili come variabili d’ambiente in ogni passaggio di tutti i blueprint dell’org. Impostali nella scheda Secrets dell’editor del blueprint per tutta l’org.
- Segreti Enterprise: Uniti ai segreti dell’org (i segreti dell’org hanno la precedenza in caso di conflitto di nomi). Disponibili in tutte le org dell’Enterprise.
- Segreti del repository: Disponibili come variabili d’ambiente nei passaggi e nei comandi del blueprint di quel repo. Configurali nella scheda Secrets dell’editor del blueprint del repository.
Segreti solo build: I segreti Enterprise possono essere contrassegnati come Build only quando li aggiungi nella scheda Secrets dell’editor del blueprint Enterprise. Questa opzione non è disponibile per i segreti dell’org o del repository. Un segreto solo build è disponibile unicamente per i passaggi dei blueprint Enterprise e dell’org durante le build snapshot. Viene rimosso prima che i repository vengano clonati, quindi i passaggi dei blueprint del repo e i passaggi
post-build non possono leggerlo, e non viene mai iniettato nelle sessioni Devin. Usalo per credenziali necessarie solo durante la configurazione Enterprise o dell’org (ad es. per scaricare artifact privati nell’initialize del blueprint Enterprise).File allegati
settings.xml o altri file di configurazione) tramite l’editor dei blueprint. I file caricati vengono salvati in ~/.files/ e viene impostata una variabile d’ambiente che punta al percorso di ciascun file:
FILE_.
I nomi dei file devono essere nomi semplici: non possono iniziare con un punto né contenere separatori di percorso, spazi o caratteri di controllo. Per usare un dotfile come .npmrc, caricalo con un nome senza il punto iniziale (per esempio, npmrc) e copialo nella posizione corretta in un passaggio del blueprint.
Usa file allegati nei passaggi del blueprint:
Blueprint basati su Git
.devin/blueprint.yaml direttamente nel tuo repository e poi sincronizzarli tramite l’API o la UI. Consulta Git-backed blueprints per le istruzioni di configurazione e i dettagli.
Esempio completo
Per capire come i blueprint si compongono nei vari livelli (enterprise → org → repo), gli stati delle build, gli stati del repository e cosa attiva una nuova build, consulta Build e
sessioni nella pagina della configurazione dichiarativa.

