Skip to main content
Blueprint pronti da copiare e incollare per linguaggi e casi d’uso comuni. Ogni template è autonomo. Combinali per comporre la configurazione completa. Per una panoramica completa di ogni campo, consulta il riferimento del blueprint.
Secrets: I template fanno riferimento ai secret tramite $SECRET_NAME. Configurali nella scheda Secrets all’interno di ciascun editor di blueprint prima di usare un template. Non inserire mai credenziali in chiaro nel blueprint.

Guida rapida

Blueprint essenziali per le configurazioni più comuni. Copiane uno, incollalo nell’editor dei blueprint e il gioco è fatto.

Blueprint dei repository

Passaggi di build per ciascun repo, gestione delle dipendenze e voci di Knowledge. Configurali in Settings > Ambiente > Blueprint > [il tuo repo].

Python

Configurazione consigliata per i progetti Python che usano uv per la gestione delle dipendenze.

Node.js

Configurazione Standard di Node.js con npm.
Usa npm install (non npm ci) in maintenance. Esegue un aggiornamento incrementale, mentre npm ci elimina node_modules e reinstalla tutto da zero a ogni sessione.

Go

Configurazione standard di Go con moduli.

Java

Configurazione di Java con Gradle.
JDK 17 è preinstallato nell’immagine di base di Devin. Salta il passaggio di installazione del JDK se OpenJDK 17 predefinito è sufficiente.

Ruby on Rails

Configurazione di Rails con PostgreSQL.

Rust

Configurazione Rust standard con Cargo.
Rust (tramite rustup) e Cargo sono preinstallati nell’immagine di base di Devin. Salta il passaggio di installazione se la toolchain stabile predefinita è sufficiente. Devi solo scaricare le dipendenze.

Monorepo

Monorepo con frontend Node.js e backend Python. Ogni sottoprogetto ha le proprie voci di Knowledge.
Usa le subshell (cd dir && command) invece di cd dir && command, così la directory di lavoro viene reimpostata tra un passaggio e l’altro.

Registry privati di pacchetti

Configura i gestori di pacchetti per risolvere le dipendenze tramite registry privati. Impostali in Settings > Environment > Blueprint > Configurazione a livello di org (oppure a livello di repo, se serve solo per una repo).
La configurazione delle credenziali deve stare in maintenance, non in initialize. I passaggi che scrivono segreti (password del registry, auth token) nei file di configurazione devono usare maintenance, in modo che le credenziali vengano ricaricate a ogni sessione. I segreti vengono rimossi prima che lo snapshot venga salvato, quindi i file di configurazione scritti durante initialize non avranno credenziali valide all’avvio delle sessioni.
Se il tuo registry privato usa una CA aziendale, assicurati prima che il certificato CA sia installato a livello Enterprise. La configurazione seguente presuppone che l’attendibilità HTTPS sia già configurata.

Registry Node.js

Configura npm per risolvere i pacchetti con ambito (ad es. @myorg/*) da un registry privato, mentre i pacchetti pubblici continuano a provenire dal registry npm predefinito.
- GITHUB_PACKAGES_TOKEN — Token di accesso personale o token GitHub App con ambito read:packages
Sostituisci @myorg con il tuo scope npm. URL comuni dei registry privati:
  • GitHub Packages: https://npm.pkg.github.com
  • Artifactory: https://artifactory.example.com/artifactory/api/npm/npm-virtual
  • Nexus: https://nexus.example.com/repository/npm-group
  • GitLab: https://gitlab.example.com/api/v4/packages/npm
  • AWS CodeArtifact: https://<domain>.d.codeartifact.<region>.amazonaws.com/npm/<repo>

Registry Python

Configura pip e uv per recuperare i pacchetti dal tuo registry PyPI privato (ad es. Nexus, Artifactory).
  • PYPI_REGISTRY_URL — URL completo del tuo indice PyPI, incluse le credenziali se richieste (ad es. https://user:token@nexus.example.com/repository/pypi-proxy/simple)
URL comuni dei registry PyPI:
  • Artifactory: https://artifactory.example.com/artifactory/api/pypi/pypi-virtual/simple
  • Nexus: https://nexus.example.com/repository/pypi-proxy/simple
  • AWS CodeArtifact: https://aws:TOKEN@domain-owner.d.codeartifact.region.amazonaws.com/pypi/repo/simple/
  • Azure Artifacts: https://pkgs.dev.azure.com/org/project/_packaging/feed/pypi/simple
  • GitLab: https://gitlab.example.com/api/v4/groups/<group-id>/-/packages/pypi/simple

Registry JVM

Installa il JDK e configura Maven in modo che tutta la risoluzione delle dipendenze passi attraverso il tuo registry privato (ad es., Artifactory, Nexus).
JDK 17 è preinstallato nell’immagine di base di Devin. Salta il passaggio di installazione se l’OpenJDK 17 predefinito è sufficiente. Ti servono solo l’installazione di Maven e la configurazione del registry.
  • MAVEN_REGISTRY_URL — URL del tuo registry Maven (ad es., https://artifactory.example.com/artifactory/maven-virtual) - REGISTRY_USER — Nome utente del registry - REGISTRY_PASS — Password del registry o token API
Pattern di URL comuni dei registry Maven:
  • Artifactory: https://artifactory.example.com/artifactory/maven-virtual
  • Nexus: https://nexus.example.com/repository/maven-public
  • Azure Artifacts: https://pkgs.dev.azure.com/org/project/_packaging/feed/maven/v1
  • GitHub Packages: https://maven.pkg.github.com
  • GitLab: https://gitlab.example.com/api/v4/groups/<group-id>/-/packages/maven
  • AWS CodeArtifact: https://<domain>.d.codeartifact.<region>.amazonaws.com/maven/<repo>

Altri registry

Installa Go e configuralo per risolvere i moduli tramite un proxy privato per i moduli (ad es. Athens, Artifactory o un endpoint GOPROXY).
  • GO_PROXY_URL — URL del tuo proxy per i moduli Go (ad es. https://athens.corp.internal)
  • GIT_TOKEN — token di accesso personale per repo Git private che ospitano moduli Go
Pattern URL comuni per i proxy Go:
  • Artifactory: https://artifactory.example.com/artifactory/go-virtual
  • Nexus: https://nexus.example.com/repository/go-proxy
  • Athens: https://athens.corp.internal
Configura NuGet per usare un feed privato come origine dei pacchetti.
  • NUGET_SOURCE_URL — URL del tuo feed NuGet
  • NUGET_API_KEY — API key o PAT per il feed
Configura Docker per scaricare da un registry di container privato.
  • DOCKER_MIRROR_URL (facoltativo) — URL del mirror Docker Hub (ad es., https://mirror.corp.internal)
  • DOCKER_REGISTRY_URL — URL del tuo registry di container privato (ad es., registry.corp.internal:5000)
  • DOCKER_REGISTRY_USER — Nome utente del registry
  • DOCKER_REGISTRY_PASS — Password del registry o token API
URL comuni dei container registry:
  • Amazon ECR: <account-id>.dkr.ecr.<region>.amazonaws.com
  • Azure Container Registry: <name>.azurecr.io
  • Google Artifact Registry: <region>-docker.pkg.dev
  • GitHub Container Registry: ghcr.io
  • GitLab Container Registry: registry.gitlab.example.com
  • Nexus: https://nexus.example.com:8443
  • JFrog: <name>.jfrog.io
Configura Cargo in modo che risolva i crate da un registry privato.
Rust (tramite rustup) e Cargo sono già preinstallati nell’immagine di base di Devin. Salta il passaggio di installazione se la toolchain stabile predefinita è sufficiente. È necessaria solo la configurazione del registry.
  • CARGO_REGISTRY_INDEX — URL dell’indice del registry privato (ad es. sparse+https://cargo.corp.internal/api/v1/crates/)
  • CARGO_REGISTRY_TOKEN — token di autenticazione per il registry privato
Se devi solo aggiungere un registry privato senza sostituire crates.io, rimuovi le sezioni [source.crates-io] e [source.private] e usa cargo install --registry private oppure [dependencies] my-crate = { version = "1.0", registry = "private" } in Cargo.toml.
Installa Ruby e configura Bundler per risolvere le dipendenze gem da un server Gem privato.
  • GEM_SERVER_URL — URL del tuo server Gem privato (ad es. https://artifactory.example.com/artifactory/api/gems/gems-virtual)
  • REGISTRY_USER — Nome utente del registry
  • REGISTRY_PASS — Password del registry o token API
Pattern URL comuni per i server gem:
  • Artifactory: https://artifactory.example.com/artifactory/api/gems/gems-virtual
  • Nexus: https://nexus.example.com/repository/rubygems-proxy
  • Gemfury: https://gem.fury.io/<org>
Installa PHP e configura Composer per recuperare i pacchetti da un registry privato Packagist o Satis.
  • COMPOSER_REGISTRY_URL — URL del tuo registry Composer privato (ad es. https://repo.packagist.com/<org>)
  • REGISTRY_USER — Nome utente del registry
  • REGISTRY_PASS — Password del registry o token API
Pattern URL comuni per i registry Composer:
  • Artifactory: https://artifactory.example.com/artifactory/api/composer/packagist-virtual
  • Nexus: https://nexus.example.com/repository/packagist-proxy
  • Private Packagist: https://repo.packagist.com/<org>
  • Satis: https://satis.corp.internal
I token AWS CodeArtifact scadono dopo 12 ore. Usa maintenance per configurare il comando di aggiornamento del token in modo che l’agente possa eseguirlo di nuovo quando necessario. Questo esempio configura npm, pip e Maven per usare CodeArtifact.
awscli è preinstallato nell’immagine di base di Devin. Devi solo configurare l’aggiornamento del token e il registry.
  • AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY — credenziali IAM con le autorizzazioni codeartifact:GetAuthorizationToken e sts:GetServiceBearerToken
  • CA_DOMAIN — Nome del dominio CodeArtifact
  • CA_DOMAIN_OWNER — ID dell’account AWS proprietario del dominio
  • CA_REGION — Regione AWS (ad es., us-east-1)
  • CA_NPM_REPO, CA_PYPI_REPO, CA_MAVEN_REPO — Nomi dei repository per ciascun ecosistema

Infrastruttura Enterprise

Infrastruttura a livello di macchina valida per tutte le org e repo. Impostala in Settings > ambiente di base di Devin (a livello di Enterprise) oppure in Settings > Environment > blueprint > configurazione a livello di org (a livello di org).

Rete e connettività

La tua organizzazione utilizza un’autorità di certificazione privata per i servizi interni. Devin richiede il certificato radice per accedere ai registry interni e agli strumenti tramite HTTPS.
- CORP_ROOT_CA_B64 — certificato PEM codificato in Base64 della tua CA aziendale. Genera con: cat corp-root-ca.crt | base64 -w0
Se la tua organizzazione utilizza più certificati CA (ad es. CA distinte per diversi servizi interni).
- CORP_ROOT_CA_B64 — certificato CA principale codificato in Base64 - CORP_INTERMEDIATE_CA_B64 — certificato CA intermedio codificato in Base64
Instrada tutto il traffico di rete tramite un proxy aziendale.
  • CORP_HTTP_PROXY — URL del proxy HTTP (ad es. http://proxy.corp.example.com:8080) - CORP_HTTPS_PROXY — URL del proxy HTTPS - CORP_NO_PROXY — elenco di host, separati da virgole, da escludere dal proxy (ad es. localhost,127.0.0.1,.corp.example.com)
Se il proxy aziendale richiede l’autenticazione tramite nome utente/password.
  • PROXY_USER — Nome utente del proxy - PROXY_PASS — Password del proxy - PROXY_HOST — hostname e porta del proxy (ad es. proxy.corp.example.com:8080) - CORP_NO_PROXY — host da escludere dal proxy
Configurazione combinata per ambienti che richiedono sia una CA aziendale sia un proxy. Questa configurazione è comune negli ambienti enterprise in cui i servizi interni usano certificati privati e tutto il traffico deve passare tramite un proxy.
  • CORP_ROOT_CA_B64 — certificato CA aziendale codificato in Base64 - CORP_HTTP_PROXY, CORP_HTTPS_PROXY — URL del proxy - CORP_NO_PROXY — host da escludere dal proxy
I tuoi registry privati, i server Git o altri servizi interni sono raggiungibili solo tramite VPN. Questo modulo deve essere eseguito prima degli altri moduli che richiedono l’accesso di rete alle risorse interne.
OpenVPN:
  • VPN_CONFIG_B64 — file di configurazione OpenVPN (.ovpn) codificato in Base64. Genera con: cat corp.ovpn | base64 -w0
  • VPN_AUTH_USER (facoltativo) — nome utente VPN, se la VPN richiede l’autenticazione con nome utente/password
  • VPN_AUTH_PASS (facoltativo) — password VPN
WireGuard:
  • WG_CONFIG_B64 — file di configurazione WireGuard codificato in Base64. Genera con: cat wg0.conf | base64 -w0
OpenVPN:
WireGuard:
Per maggiori dettagli sulla configurazione della VPN, consulta Configurazione della VPN.
I tuoi servizi interni utilizzano nomi DNS privati che non possono essere risolti dal DNS pubblico.

Identità e sicurezza

La tua organizzazione richiede che tutti i commit Git siano firmati e vuoi che GitHub contrassegni i commit di Devin come Verified.
  • GPG_PRIVATE_KEY_B64 — chiave privata GPG codificata in Base64. Genera con: gpg --export-secret-keys <key-id> | base64 -w0
  • GIT_USER_NAME — nome autore Git (ad es. Devin AI)
  • GIT_USER_EMAIL — email autore Git. Deve corrispondere a un UID della chiave GPG, altrimenti GitHub non verificherà la firma.
Carica anche la chiave pubblica corrispondente nell’account GitHub le cui credenziali Devin usa per eseguire il push (in GitHub Settings > SSH and GPG keys). GitHub contrassegna i commit come Verified solo quando la chiave pubblica usata per la firma è registrata nell’account autore del commit.
Configura l’identità Git e le chiavi SSH di Devin per accedere a server Git privati.
  • GIT_USER_NAME — nome autore Git - GIT_USER_EMAIL — email autore Git - SSH_PRIVATE_KEY_B64 — chiave privata SSH codificata in Base64. Genera con: cat ~/.ssh/id_ed25519 | base64 -w0 - SSH_KNOWN_HOSTS_B64 — voci known_hosts codificate in Base64. Genera con: ssh-keyscan git.corp.internal | base64 -w0 - SSH_CONFIG_B64 (facoltativo) — file di configurazione SSH codificato in Base64
Genera la voce known_hosts per il tuo server Git con ssh-keyscan git.corp.internal | base64 -w0.

Configurazione del sistema

Installa pacchetti di sistema che non sono presenti nell’immagine Devin predefinita (ad es. librerie native per l’elaborazione delle immagini o la generazione di PDF).
Imposta variabili d’ambiente persistenti da rendere disponibili in ogni sessione.L’approccio consigliato è scrivere righe KEY=VALUE nel file $ENVRC. Le variabili scritte in $ENVRC vengono esportate automaticamente per tutti i passaggi successivi e per la sessione di Devin (in modo analogo a $GITHUB_ENV di GitHub Actions).
Puoi anche scrivere le variabili d’ambiente negli script in /etc/profile.d/ per renderle disponibili a livello di sistema:
Entrambi gli approcci funzionano. $ENVRC è più semplice ed è consigliato nella maggior parte dei casi.
Le immagini di base predefinite potrebbero avere impostazioni del locale non corrette. Configura il locale e il fuso orario per evitare avvisi da strumenti di build, Java, Python e Git.
Le build Java, Gradle e Node.js raggiungono spesso il limite predefinito di 1024 file aperti. Aumentalo per evitare errori di build.
In ambienti air-gapped o soggetti a restrizioni, sostituisci i repository APT predefiniti di Ubuntu con un mirror interno.
- APT_MIRROR_URL — URL del tuo mirror APT interno (ad es. https://artifactory.example.com/artifactory/ubuntu-remote)
Pattern di URL comuni per i mirror APT:
  • Artifactory: https://artifactory.example.com/artifactory/ubuntu-remote
  • Nexus: https://nexus.example.com/repository/ubuntu-proxy

Pattern avanzati

L’ambiente di base di Devin include direnv. Usa initialize per creare i file .envrc. Direnv li carica automaticamente.
direnv è già configurato nella shell di Devin, quindi le variabili di .envrc vengono caricate automaticamente. Non serve eseguire il source manualmente.
Per le variabili d’ambiente sensibili (API key, token, password del database), usa i segreti del repo invece dei file .envrc. I segreti del repo sono archiviati in modo sicuro e vengono iniettati all’avvio della sessione. Non compaiono mai nel blueprint o nello snapshot.
Usa nvm (preinstallato) per cambiare versione di Node.js per ciascun repository tramite .nvmrc.
nvm use legge .nvmrc dalla directory radice della repo. Assicurati che il repository ne abbia uno (ad es., contenente 20).
Devin mette a disposizione un browser Chrome con un endpoint CDP su localhost:29229 durante le sessioni. Usa script Playwright per automatizzare il login nel browser.
Il browser è disponibile solo durante le sessioni, non nelle build snapshot. Installa Playwright in initialize e conserva gli script di login nella tua repo.
Esempio di script di accesso (scripts/login.py):
Conserva le credenziali di accesso come secrets, non nel codice sorgente. Per un’autenticazione a lungo termine, esegui il commit degli script di accesso in .agents/skills/ in modo che Devin possa riautenticarsi automaticamente.
Installa pacchetti di sistema, binari personalizzati e configura il PATH in initialize.
Devin supporta l’esecuzione diretta nei blueprint di GitHub Actions basate su Node.js. Questo è utile per installare versioni specifiche degli strumenti tramite le stesse azioni usate dalla tua CI.
Azioni come setup-node e setup-python modificano il PATH e le variabili d’ambiente. I binari installati da un’azione sono disponibili in tutti i passaggi successivi e in maintenance. Sono supportate solo le GitHub Actions basate su Node.js. Le azioni composite e quelle basate su Docker non sono supportate.
Non servono GitHub Actions per la configurazione di base degli strumenti. I comandi shell diretti (nvm install 20, curl ... | sh, apt-get install) funzionano altrettanto bene e spesso sono più semplici. Le GitHub Actions sono particolarmente utili quando vuoi replicare esattamente la configurazione della tua CI o sfruttare la comodità di azioni come setup-java, che gestiscono più distribuzioni.
Esegui più servizi dietro hostname dall’aspetto realistico su HTTPS, come app.example.com, api.example.com e admin.example.com. Installa un singolo proxy inverso in initialize e instrada ogni hostname verso una porta upstream locale diversa.Caddy gestisce il routing e il TLS locale in un unico strumento. Un Caddyfile associa ogni hostname a un upstream e tls internal emette automaticamente un certificato attendibile per ciascun hostname dalla CA integrata di Caddy. caddy trust installa la root di quella CA nell’archivio di attendibilità del sistema e, aggiungendo la stessa root al database NSS, il browser la accetterà.Carica il Caddyfile tramite la sezione File allegati dell’editor del blueprint; sarà quindi disponibile come $FILE_CADDYFILE.
Caddyfile
Il loop di /etc/hosts è ciò che consente a app.example.com di risolversi in 127.0.0.1 all’interno della sessione. Aggiungi una voce per ogni hostname che inserisci nel Caddyfile.
Per aggiungere un servizio, aggiungi un blocco di tre righe al Caddyfile e una voce al loop di /etc/hosts, quindi apri il relativo hostname tramite HTTPS. Caddy genera un certificato alla prima richiesta, quindi non è necessario generare certificati separati per ogni app.

Esempi full-stack

Questi esempi mostrano come si combinano le configurazioni Enterprise e quelle a livello di org. In pratica, le divideresti tra diversi ambiti. Qui sono riunite a scopo di riferimento.
Un ambiente enterprise completo: certificato CA aziendale, proxy, Java (Maven), Python (pip/uv), Node.js (npm) e Docker, tutti puntati a una singola istanza di Artifactory.
Rete e attendibilità (per l’intero account):
  • CORP_ROOT_CA_B64 — certificato CA aziendale codificato in Base64
  • CORP_HTTP_PROXY — URL del proxy HTTP
  • CORP_HTTPS_PROXY — URL del proxy HTTPS
  • CORP_NO_PROXY — host da escludere dal proxy
Credenziali del registry (per l’intera org):
  • ARTIFACTORY_USER — nome utente Artifactory
  • ARTIFACTORY_TOKEN — token API o password di Artifactory
  • ARTIFACTORY_MAVEN_URL — URL del repository Maven (ad es., https://artifactory.example.com/artifactory/maven-virtual)
  • ARTIFACTORY_PYPI_URL — URL del repository PyPI (ad es., https://user:token@artifactory.example.com/artifactory/api/pypi/pypi-virtual/simple)
  • ARTIFACTORY_NPM_URL — URL del repository npm (ad es., https://artifactory.example.com/artifactory/api/npm/npm-virtual)
  • ARTIFACTORY_DOCKER_URL — URL del registry Docker (ad es., artifactory.example.com)
In genere questo verrebbe suddiviso in tre ambiti:
  • A livello di account (initialize): Certificato e proxy
  • Org-wide (initialize): Installazione del runtime del linguaggio
  • A livello di org (maintenance): credenziali del registry (aggiornate durante le build, rese disponibili all’Agent all’avvio della sessione)
Di seguito il codice completo per riferimento:
In questo esempio, tutti i registry puntano alla stessa istanza di Artifactory, ma utilizzano percorsi URL diversi. Ogni ecosistema di pacchetti ha il proprio formato di endpoint. Gli URL di Maven, PyPI, npm e Docker sono tutti diversi, anche per lo stesso registry.
Quando linguaggi diversi usano registry privati diversi (ad es. Maven da Nexus, npm da GitHub Packages, Python da Artifactory).
  • NEXUS_MAVEN_URL — URL del repository Maven di Nexus
  • NEXUS_USER — nome utente di Nexus
  • NEXUS_PASS — password di Nexus
  • GITHUB_PACKAGES_TOKEN — token di accesso personale di GitHub con ambito read:packages
  • ARTIFACTORY_USER — nome utente di Artifactory
  • ARTIFACTORY_TOKEN — token API di Artifactory
  • GIT_TOKEN — token di accesso personale per i moduli Go privati
In un ambiente completamente air-gapped, Devin non può accedere ad alcun URL pubblico. Tutti gli strumenti, i runtime e i pacchetti devono provenire da mirror interni.
** Certificati: **
  • CORP_ROOT_CA_B64 — certificato CA aziendale codificato in Base64
Accesso ai mirror:
  • APT_MIRROR_URL — URL del mirror APT interno di Ubuntu
  • MIRROR_USER — nome utente per l’autenticazione al mirror
  • MIRROR_PASS — password per l’autenticazione al mirror
  • JDK_TARBALL_URL — URL da cui scaricare il tarball JDK dal mirror interno
  • NODE_TARBALL_URL — URL da cui scaricare il tarball Node.js dal mirror interno
Registry dei pacchetti:
  • INTERNAL_MAMEN_URL — URL del registry Maven interno
  • INTERNAL_NPM_URL — URL del registry npm interno
  • INTERNAL_PYPI_URL — URL del registry PyPI interno
Neglii ambienti air-gapped, tutti gli strumenti necessari a Devin (runtime dei linguaggi di programmazione, strumenti CLI, ecc.) devono essere disponibili sui vostre mirror interni. I registry pubblici e i siti di download non sono raggiungibili.
Una configurazione Enterprise completa che combina connettività VPN con certificati, proxy e supporto multilingua. Questo è l’ordine delle operazioni consigliato.
VPN:
  • VPN_CONFIG_B64 — file di configurazione OpenVPN codificato in Base64
Rete & attendibilità:
  • CORP_ROOT_CA_B64 — certificato CA aziendale codificato in Base64
  • CORP_HTTP_PROXY — URL del proxy HTTP
  • CORP_HTTPS_PROXY — URL del proxy HTTPS
  • CORP_NO_PROXY — host da escludere dal proxy
Credenziali del registry:
  • MAVEN_REGISTRY_URL — URL del registry Maven
  • NPM_REGISTRY_URL — URL del registry npm
  • PYPI_REGISTRY_HOST — hostname del registry PyPI
  • REGISTRY_USER — nome utente del registry (per Maven e pip)
  • REGISTRY_PASS — password del registry (per Maven e pip)
  • REGISTRY_TOKEN — token di autenticazione per npm
**L’ordine dei passaggi initialize è importante.**La VPN deve venire per prima (in modo che gli host interni siano raggiungibili), poi il DNS (in modo che i nomi vengano risolti), poi i certificati (in modo che HTTPS funzioni), poi il proxy (in modo che il traffico venga instradato correttamente) e infine i runtime dei linguaggi (che potrebbero scaricare da mirror interni).

Suggerimenti per scrivere blueprint efficaci

  • Prova prima i comandi in una sessione. Esegui i comandi manualmente in una sessione di Devin prima di aggiungerli al blueprint. È più veloce che aspettare un ciclo di build completo.
  • Usa initialize per gli strumenti da installare una sola volta, maintenance per le dipendenze. Tutto ciò che richiede minuti per essere installato (compilatori, binari di grandi dimensioni, strumenti globali) va in initialize. I comandi rapidi per le dipendenze (npm install, uv sync) vanno in maintenance.
  • Mantieni rapidi i comandi maintenance. Cerca di restare sotto i 2 minuti. Vengono eseguiti durante le build e vengono mostrati all’agente all’inizio della sessione.
  • Usa $ENVRC per le variabili d’ambiente. Non scrivere in .bashrc o .profile. $ENVRC è il meccanismo supportato per impostare variabili tra passaggi e sessioni.
  • Assegna un nome ai passaggi. La forma estesa con i campi name rende molto più semplice individuare gli errori nei log di build.
  • Usa le subshell per i monorepo. (cd packages/foo && npm install) viene eseguito in una subshell, così i passaggi successivi non risentono del cambio di directory.
  • Usa npm install, non npm ci. npm ci elimina node_modules e reinstalla tutto da zero, rallentando maintenance.
  • Usa i secrets del repo per i valori sensibili. Configurali nella scheda Secrets dell’editor del blueprint del repository invece di inserirli direttamente nei blueprint.
Per i dettagli sulla sintassi, consulta il riferimento del blueprint. Per risolvere gli errori di build, consulta Configurazione dichiarativa > Risoluzione dei problemi.