$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
Progetto Node.js
Progetto Node.js
Progetto Python
Progetto Python
Full-stack (Node + Python)
Full-stack (Node + Python)
Blueprint dei repository
Python
- uv (consigliato)
- pip + venv
Node.js
- npm
- pnpm
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
Java
- Gradle
- Maven
Ruby on Rails
Rust
Monorepo
- Multilingue
- Versioni multiple di JDK
Registry privati di pacchetti
Registry Node.js
- npm (ambito)
- npm (mirror completo)
- pnpm
- Yarn
@myorg/*) da un registry privato, mentre i pacchetti pubblici continuano a provenire dal registry npm predefinito.Segreti richiesti
Segreti richiesti
GITHUB_PACKAGES_TOKEN — Token di accesso personale o token GitHub App con ambito read:packagesRegistry Python
- pip / uv
- Poetry
Segreti richiesti
Segreti richiesti
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)
Registry JVM
- Maven
- Gradle
Segreti richiesti
Segreti richiesti
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
Altri registry
Proxy dei moduli Go
Proxy dei moduli Go
GOPROXY).Segreti richiesti
Segreti richiesti
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
.NET / NuGet
.NET / NuGet
Segreti richiesti
Segreti richiesti
NUGET_SOURCE_URL— URL del tuo feed NuGetNUGET_API_KEY— API key o PAT per il feed
Docker
Docker
Segreti richiesti
Segreti richiesti
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 registryDOCKER_REGISTRY_PASS— Password del registry o token API
Rust / Cargo
Rust / Cargo
Segreti richiesti
Segreti richiesti
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
Ruby / Bundler
Ruby / Bundler
Segreti richiesti
Segreti richiesti
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 registryREGISTRY_PASS— Password del registry o token API
PHP / Composer
PHP / Composer
Segreti richiesti
Segreti richiesti
COMPOSER_REGISTRY_URL— URL del tuo registry Composer privato (ad es.https://repo.packagist.com/<org>)REGISTRY_USER— Nome utente del registryREGISTRY_PASS— Password del registry o token API
Aggiornamento del token di AWS CodeArtifact
Aggiornamento del token di AWS CodeArtifact
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.Segreti richiesti
Segreti richiesti
AWS_ACCESS_KEY_IDeAWS_SECRET_ACCESS_KEY— credenziali IAM con le autorizzazionicodeartifact:GetAuthorizationTokenests:GetServiceBearerTokenCA_DOMAIN— Nome del dominio CodeArtifactCA_DOMAIN_OWNER— ID dell’account AWS proprietario del dominioCA_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
Rete e connettività
Certificato CA aziendale
Certificato CA aziendale
Segreti richiesti
Segreti richiesti
CORP_ROOT_CA_B64 — certificato PEM codificato in Base64 della tua CA aziendale. Genera con: cat corp-root-ca.crt | base64 -w0Certificati CA multipli
Certificati CA multipli
Segreti richiesti
Segreti richiesti
CORP_ROOT_CA_B64 — certificato CA principale codificato in Base64 - CORP_INTERMEDIATE_CA_B64 — certificato CA intermedio codificato in Base64Proxy HTTP/HTTPS
Proxy HTTP/HTTPS
Segreti richiesti
Segreti richiesti
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)
Proxy autenticato
Proxy autenticato
Segreti richiesti
Segreti richiesti
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
Certificato CA + proxy (combinati)
Certificato CA + proxy (combinati)
Segreti richiesti
Segreti richiesti
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
Connessione VPN
Connessione VPN
Segreti richiesti
Segreti richiesti
VPN_CONFIG_B64— file di configurazione OpenVPN (.ovpn) codificato in Base64. Genera con:cat corp.ovpn | base64 -w0VPN_AUTH_USER(facoltativo) — nome utente VPN, se la VPN richiede l’autenticazione con nome utente/passwordVPN_AUTH_PASS(facoltativo) — password VPN
WG_CONFIG_B64— file di configurazione WireGuard codificato in Base64. Genera con:cat wg0.conf | base64 -w0
Risoluzione DNS personalizzata
Risoluzione DNS personalizzata
Identità e sicurezza
Firma GPG dei commit
Firma GPG dei commit
Segreti richiesti
Segreti richiesti
GPG_PRIVATE_KEY_B64— chiave privata GPG codificata in Base64. Genera con:gpg --export-secret-keys <key-id> | base64 -w0GIT_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.
Identità Git e chiavi SSH
Identità Git e chiavi SSH
Segreti richiesti
Segreti richiesti
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
Configurazione del sistema
Pacchetti di sistema
Pacchetti di sistema
Variabili d'ambiente personalizzate
Variabili d'ambiente personalizzate
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).Impostazioni locali e fuso orario
Impostazioni locali e fuso orario
Limiti di risorse (ulimits)
Limiti di risorse (ulimits)
Sostituzione del mirror di APT
Sostituzione del mirror di APT
Segreti richiesti
Segreti richiesti
APT_MIRROR_URL — URL del tuo mirror APT interno (ad es. https://artifactory.example.com/artifactory/ubuntu-remote)Pattern avanzati
Variabili di ambiente con direnv
Variabili di ambiente con direnv
initialize per creare i file .envrc. Direnv li carica automaticamente..envrc vengono caricate automaticamente. Non serve eseguire il source manualmente.Cambio della versione di Node per singola repo
Cambio della versione di Node per singola repo
.nvmrc.nvm use legge .nvmrc dalla directory radice della repo. Assicurati che il repository ne abbia uno (ad es., contenente 20).Autenticazione nel browser (Playwright)
Autenticazione nel browser (Playwright)
localhost:29229 durante le sessioni. Usa script Playwright per automatizzare il login nel browser.scripts/login.py):Strumenti di sistema personalizzati e PATH
Strumenti di sistema personalizzati e PATH
initialize.GitHub Actions per configurare gli strumenti
GitHub Actions per configurare gli strumenti
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.Proxy inverso HTTPS locale per più app
Proxy inverso HTTPS locale per più app
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./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.Esempi full-stack
Stack Enterprise completo (Artifactory)
Stack Enterprise completo (Artifactory)
Segreti richiesti
Segreti richiesti
CORP_ROOT_CA_B64— certificato CA aziendale codificato in Base64CORP_HTTP_PROXY— URL del proxy HTTPCORP_HTTPS_PROXY— URL del proxy HTTPSCORP_NO_PROXY— host da escludere dal proxy
ARTIFACTORY_USER— nome utente ArtifactoryARTIFACTORY_TOKEN— token API o password di ArtifactoryARTIFACTORY_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)
- 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)
Multilingua con registry diversi
Multilingua con registry diversi
Segreti richiesti
Segreti richiesti
NEXUS_MAVEN_URL— URL del repository Maven di NexusNEXUS_USER— nome utente di NexusNEXUS_PASS— password di NexusGITHUB_PACKAGES_TOKEN— token di accesso personale di GitHub con ambitoread:packagesARTIFACTORY_USER— nome utente di ArtifactoryARTIFACTORY_TOKEN— token API di ArtifactoryGIT_TOKEN— token di accesso personale per i moduli Go privati
Ambiente isolato dalla rete con mirror privati
Ambiente isolato dalla rete con mirror privati
Segreti richiesti
Segreti richiesti
CORP_ROOT_CA_B64— certificato CA aziendale codificato in Base64
APT_MIRROR_URL— URL del mirror APT interno di UbuntuMIRROR_USER— nome utente per l’autenticazione al mirrorMIRROR_PASS— password per l’autenticazione al mirrorJDK_TARBALL_URL— URL da cui scaricare il tarball JDK dal mirror internoNODE_TARBALL_URL— URL da cui scaricare il tarball Node.js dal mirror interno
INTERNAL_MAMEN_URL— URL del registry Maven internoINTERNAL_NPM_URL— URL del registry npm internoINTERNAL_PYPI_URL— URL del registry PyPI interno
VPN + certificati + proxy + linguaggi
VPN + certificati + proxy + linguaggi
Segreti richiesti
Segreti richiesti
VPN_CONFIG_B64— file di configurazione OpenVPN codificato in Base64
CORP_ROOT_CA_B64— certificato CA aziendale codificato in Base64CORP_HTTP_PROXY— URL del proxy HTTPCORP_HTTPS_PROXY— URL del proxy HTTPSCORP_NO_PROXY— host da escludere dal proxy
MAVEN_REGISTRY_URL— URL del registry MavenNPM_REGISTRY_URL— URL del registry npmPYPI_REGISTRY_HOST— hostname del registry PyPIREGISTRY_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
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
initializeper gli strumenti da installare una sola volta,maintenanceper le dipendenze. Tutto ciò che richiede minuti per essere installato (compilatori, binari di grandi dimensioni, strumenti globali) va ininitialize. I comandi rapidi per le dipendenze (npm install,uv sync) vanno inmaintenance. - 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
$ENVRCper le variabili d’ambiente. Non scrivere in.bashrco.profile.$ENVRCè il meccanismo supportato per impostare variabili tra passaggi e sessioni. - Assegna un nome ai passaggi. La forma estesa con i campi
namerende 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, nonnpm ci.npm cieliminanode_modulese reinstalla tutto da zero, rallentandomaintenance. - 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.

