Skip to main content
Blueprints prontos para copiar e colar para linguagens e casos de uso comuns. Cada template é independente. Combine-os para montar sua configuração completa. Para ver uma descrição completa de cada campo, consulte a referência de blueprints.
Segredos: Os templates fazem referência a segredos usando $SECRET_NAME. Configure-os na aba Secrets no editor de cada blueprint antes de usar um template. Nunca inclua credenciais diretamente no seu blueprint.

Início rápido

Blueprints mínimos para as configurações mais comuns. Copie um, cole no editor de blueprints e pronto.

Blueprints de repositório

Etapas de build por repositório, gerenciamento de dependências e entradas do Knowledge. Defina isso em Configurações > Ambiente > blueprint > [seu repositório].

Python

Configuração recomendada para projetos em Python que usam uv para gerenciamento de dependências.

Node.js

Configuração padrão do Node.js com npm.
Use npm install (não npm ci) em maintenance. Ele faz uma atualização incremental, enquanto npm ci exclui node_modules e reinstala tudo do zero a cada sessão.

Go

Configuração padrão de Go com módulos.

Java

Configuração do Java com Gradle.
O JDK 17 já vem pré-instalado na imagem base do Devin. Pule a etapa de instalação do JDK se o OpenJDK 17 padrão for suficiente.

Ruby on Rails

Configuração do Rails com PostgreSQL.

Rust

Configuração padrão do Rust com Cargo.
Rust (via rustup) e Cargo já vêm pré-instalados na imagem base do Devin. Pule a etapa de instalação se a toolchain estável padrão for suficiente. Você só precisa baixar as dependências.

Monorepos

Monorepo com frontend em Node.js e backend em Python. Cada subprojeto recebe suas próprias entradas no Knowledge.
Use subshells (cd dir && command) em vez de cd dir && command, para que o diretório de trabalho seja redefinido entre as etapas.

Registros privados de pacotes

Configure os gerenciadores de pacotes para resolver dependências usando registros privados. Defina isso em Configurações > Ambiente > Blueprints > configuração em nível da organização (ou por repositório, se apenas um repositório precisar disso).
A configuração de credenciais deve ser feita em maintenance, não em initialize. Etapas que gravam segredos (senhas de registro, tokens de autenticação) em arquivos de configuração devem usar maintenance para que as credenciais sejam carregadas novamente em cada sessão. Os segredos são removidos antes de o snapshot ser salvo, portanto os arquivos de configuração gravados durante initialize não terão credenciais válidas quando as sessões começarem.
Se o seu registro privado usa uma CA corporativa, primeiro verifique se o certificado de CA está instalado no nível Enterprise. A configuração abaixo pressupõe que a confiança em HTTPS já foi estabelecida.

Registros do Node.js

Configure o npm para resolver pacotes com escopo (por exemplo, @myorg/*) a partir de um registro privado, enquanto os pacotes públicos continuam vindo do registro padrão do npm.
- GITHUB_PACKAGES_TOKEN — Token de acesso pessoal ou token do GitHub App com o escopo read:packages
Substitua @myorg pelo seu escopo do npm. URLs comuns de registros privados:
  • 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>

Registros do Python

Configure o pip e o uv para resolver pacotes do seu registro PyPI privado (por exemplo, Nexus, Artifactory).
  • PYPI_REGISTRY_URL — URL completa do seu índice PyPI, incluindo credenciais, se necessário (por exemplo, https://user:token@nexus.example.com/repository/pypi-proxy/simple)
Padrões comuns de URL para registros 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

Registros da JVM

Instale o JDK e configure o Maven para usar seu registro privado como espelho para toda a resolução de dependências (por exemplo, Artifactory, Nexus).
O JDK 17 vem pré-instalado na imagem base do Devin. Pule a etapa de instalação se o OpenJDK 17 padrão for suficiente. Você só precisa instalar o Maven e configurar o registro.
  • MAVEN_REGISTRY_URL — URL do seu registro Maven (por exemplo, https://artifactory.example.com/artifactory/maven-virtual) - REGISTRY_USER — Nome de usuário do registro - REGISTRY_PASS — Senha do registro ou token de API
Padrões comuns de URL de registro do 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>

Outros registros

Instale o Go e configure-o para resolver módulos por meio de um proxy privado de módulos (por exemplo, Athens, Artifactory ou um endpoint do GOPROXY).
  • GO_PROXY_URL — URL do seu proxy de módulos Go (por exemplo, https://athens.corp.internal)
  • GIT_TOKEN — Token de acesso pessoal para repositórios Git privados que hospedam módulos Go
Padrões comuns de URLs de proxy do Go:
  • Artifactory: https://artifactory.example.com/artifactory/go-virtual
  • Nexus: https://nexus.example.com/repository/go-proxy
  • Athens: https://athens.corp.internal
Configure o NuGet para resolver pacotes a partir de um feed privado.
  • NUGET_SOURCE_URL — URL do seu feed do NuGet
  • NUGET_API_KEY — Chave de API ou PAT para o feed
Configure o Docker para baixar imagens de um registro privado de contêineres.
  • DOCKER_MIRROR_URL (opcional) — URL do seu espelho do Docker Hub (por exemplo, https://mirror.corp.internal)
  • DOCKER_REGISTRY_URL — URL do seu registro privado de contêineres (por exemplo, registry.corp.internal:5000)
  • DOCKER_REGISTRY_USER — Nome de usuário do registro
  • DOCKER_REGISTRY_PASS — Senha do registro ou token de API
URLs comuns de registros de contêineres:
  • 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
Configure o Cargo para resolver crates a partir de um registro privado.
Rust (via rustup) e Cargo vêm pré-instalados na imagem base do Devin. Pule a etapa de instalação se o toolchain estável padrão for suficiente. Você só precisa da configuração do registro.
  • CARGO_REGISTRY_INDEX — URL do índice do registro privado (por exemplo, sparse+https://cargo.corp.internal/api/v1/crates/)
  • CARGO_REGISTRY_TOKEN — token de autenticação para o registro privado
Se você só precisa adicionar um registro privado sem substituir o crates.io, remova as seções [source.crates-io] e [source.private] e use cargo install --registry private ou [dependencies] my-crate = { version = "1.0", registry = "private" } no Cargo.toml.
Instale o Ruby e configure o Bundler para resolver gems a partir de um servidor privado de gems.
  • GEM_SERVER_URL — URL do seu servidor privado de gems (por exemplo, https://artifactory.example.com/artifactory/api/gems/gems-virtual)
  • REGISTRY_USER — nome de usuário do registro
  • REGISTRY_PASS — senha do registro ou token de API
Padrões comuns de URL para servidores de gems:
  • Artifactory: https://artifactory.example.com/artifactory/api/gems/gems-virtual
  • Nexus: https://nexus.example.com/repository/rubygems-proxy
  • Gemfury: https://gem.fury.io/<org>
Instale o PHP e configure o Composer para resolver pacotes a partir de um registro privado do Packagist ou do Satis.
  • COMPOSER_REGISTRY_URL — URL do seu registro privado do Composer (por exemplo, https://repo.packagist.com/<org>)
  • REGISTRY_USER — Nome de usuário do registro
  • REGISTRY_PASS — Senha do registro ou token de API
Padrões comuns de URL de registros do 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
Os tokens do AWS CodeArtifact expiram após 12 horas. Use maintenance para configurar o comando de renovação do token para que o agente possa reexecutá-lo quando necessário. Este exemplo configura npm, pip e Maven para usar o CodeArtifact.
awscli vem pré-instalado na imagem base do Devin. Você só precisa da renovação do token e da configuração do registro.
  • AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY — credenciais do IAM com as permissões codeartifact:GetAuthorizationToken e sts:GetServiceBearerToken
  • CA_DOMAIN — Nome do seu domínio do CodeArtifact
  • CA_DOMAIN_OWNER — ID da conta AWS proprietária do domínio
  • CA_REGION — Região da AWS (por exemplo, us-east-1)
  • CA_NPM_REPO, CA_PYPI_REPO, CA_MAVEN_REPO — Nomes dos repositórios para cada ecossistema

Infraestrutura do Enterprise

Infraestrutura no nível da máquina que se aplica a todas as org e repositórios. Configure isso em Configurações > ambiente base do Devin (para toda a Enterprise) ou em Configurações > ambiente > Blueprints > configuração em nível da organização (no nível da organização).

Rede e conectividade

Sua organização usa uma autoridade certificadora privada para serviços internos. Devin precisa do certificado raiz para acessar registros e ferramentas internos via HTTPS.
- CORP_ROOT_CA_B64 — certificado PEM codificado em Base64 da sua CA corporativa. Gere com: cat corp-root-ca.crt | base64 -w0
Se a sua organização usar vários certificados de CA (por exemplo, CAs separadas para diferentes serviços internos).
- CORP_ROOT_CA_B64 — certificado de CA principal codificado em Base64 - CORP_INTERMEDIATE_CA_B64 — certificado de CA intermediário codificado em Base64
Encaminhe todo o tráfego de rede por meio de um proxy corporativo.
  • CORP_HTTP_PROXY — URL do proxy HTTP (por exemplo, http://proxy.corp.example.com:8080) - CORP_HTTPS_PROXY — URL do proxy HTTPS - CORP_NO_PROXY — Lista de hosts separados por vírgula que devem ignorar o proxy (por exemplo, localhost,127.0.0.1,.corp.example.com)
Se o seu proxy corporativo exigir autenticação com nome de usuário e senha.
  • PROXY_USER — Nome de usuário do proxy - PROXY_PASS — Senha do proxy - PROXY_HOST — Host e porta do proxy (por exemplo, proxy.corp.example.com:8080) - CORP_NO_PROXY — Hosts que devem ignorar o proxy
Configuração combinada para ambientes que exigem tanto uma CA corporativa quanto um proxy. Isso é comum em ambientes corporativos em que serviços internos usam certificados privados e todo o tráfego precisa passar por um proxy.
  • CORP_ROOT_CA_B64 — certificado de CA corporativa codificado em Base64 - CORP_HTTP_PROXY, CORP_HTTPS_PROXY — URLs do proxy - CORP_NO_PROXY — Hosts que ignoram o proxy
Seus registros privados, servidores Git ou outros serviços internos só podem ser acessados por VPN. Isso precisa ser executado antes de outros módulos que exigem acesso de rede a recursos internos.
OpenVPN:
  • VPN_CONFIG_B64 — Arquivo de configuração do OpenVPN (.ovpn) codificado em Base64. Gere com: cat corp.ovpn | base64 -w0
  • VPN_AUTH_USER (opcional) — Nome de usuário da VPN, caso sua VPN exija autenticação com nome de usuário e senha
  • VPN_AUTH_PASS (opcional) — Senha da VPN
WireGuard:
  • WG_CONFIG_B64 — Arquivo de configuração do WireGuard codificado em Base64. Gere com: cat wg0.conf | base64 -w0
OpenVPN:
WireGuard:
Para mais detalhes sobre a configuração da VPN, consulte Configuração da VPN.
Seus serviços internos usam nomes de DNS privados que não são resolvidos pelo DNS público.

Identidade e segurança

Sua organização exige que todos os commits do Git sejam assinados, e você quer que o GitHub marque os commits do Devin como Verified.
  • GPG_PRIVATE_KEY_B64 — Chave privada GPG codificada em Base64. Gere com: gpg --export-secret-keys <key-id> | base64 -w0
  • GIT_USER_NAME — Nome do autor no Git (por exemplo, Devin AI)
  • GIT_USER_EMAIL — Email do autor no Git. Deve corresponder a um UID da chave GPG; caso contrário, o GitHub não verificará a assinatura.
Além disso, importe a chave pública correspondente para a conta do GitHub cujas credenciais o Devin usa para fazer push (em Configurações do GitHub > SSH and GPG keys). O GitHub só marca commits como Verified quando a chave pública usada na assinatura está registrada na conta que criou o commit.
Configure a identidade do Git e as chaves SSH do Devin para acessar servidores Git privados.
  • GIT_USER_NAME — Nome do autor no Git - GIT_USER_EMAIL — Email do autor no Git - SSH_PRIVATE_KEY_B64 — Chave privada SSH codificada em Base64. Gere com: cat ~/.ssh/id_ed25519 | base64 -w0 - SSH_KNOWN_HOSTS_B64 — Entradas de hosts conhecidos codificadas em Base64. Gere com: ssh-keyscan git.corp.internal | base64 -w0 - SSH_CONFIG_B64 (opcional) — Arquivo de configuração SSH codificado em Base64
Gere a entrada de hosts conhecidos para seu servidor Git com ssh-keyscan git.corp.internal | base64 -w0.

Configuração do sistema

Instale pacotes no nível do sistema que não estão na imagem padrão do Devin (por exemplo, bibliotecas nativas para processamento de imagens ou geração de PDF).
Defina variáveis de ambiente persistentes que devem estar disponíveis em todas as sessões.A abordagem recomendada é gravar linhas KEY=VALUE no arquivo $ENVRC. As variáveis gravadas em $ENVRC são exportadas automaticamente para todas as etapas seguintes e para a sessão do Devin (semelhante ao $GITHUB_ENV do GitHub Actions).
Você também pode definir variáveis de ambiente em scripts de /etc/profile.d/ para que fiquem disponíveis em todo o sistema:
As duas abordagens funcionam. $ENVRC é mais simples e recomendado na maioria dos casos.
As imagens base padrão podem ter configurações de localidade incorretas. Configure a localidade e o fuso horário para evitar avisos de ferramentas de build, Java, Python e Git.
Builds em Java, Gradle e Node.js frequentemente esbarram no limite padrão de 1024 arquivos abertos. Aumente esse limite para evitar falhas de build.
Em ambientes sem conexão com a internet ou restritos, substitua as fontes APT padrão do Ubuntu por um espelho interno.
- APT_MIRROR_URL — URL do seu espelho APT interno (por exemplo, https://artifactory.example.com/artifactory/ubuntu-remote)
Padrões comuns de URL de espelhos APT:
  • Artifactory: https://artifactory.example.com/artifactory/ubuntu-remote
  • Nexus: https://nexus.example.com/repository/ubuntu-proxy

Padrões avançados

O ambiente base do Devin inclui direnv. Use initialize para criar arquivos .envrc. O direnv os carrega automaticamente.
O direnv já vem integrado ao shell do Devin, então as variáveis de .envrc são carregadas automaticamente. Não é preciso executar source manualmente.
Para variáveis de ambiente sensíveis (chaves de API, tokens, senhas de banco de dados), use segredos do repositório em vez de arquivos .envrc. Os segredos do repositório são armazenados com segurança e injetados durante a sessão. Eles nunca aparecem no seu blueprint nem no snapshot.
Use o nvm (pré-instalado) para alternar entre versões do Node.js em cada repositório via .nvmrc.
nvm use lê o .nvmrc na raiz do repo. Certifique-se de que seu repositório tenha esse arquivo (por exemplo, com 20).
O Devin fornece um navegador Chrome com um endpoint CDP em localhost:29229 durante as sessões. Use scripts do Playwright para automatizar o login no navegador.
O navegador só está disponível durante as sessões, não em builds do snapshot. Instale o Playwright em initialize e mantenha os scripts de login no seu repositório.
Exemplo de script de login (scripts/login.py):
Armazene as credenciais de login como segredos, não no código-fonte. Para autenticação de longo prazo, faça commit dos scripts de login em .agents/skills/ para que o Devin possa se reautenticar automaticamente.
Instale pacotes do sistema, binários personalizados e configure o PATH em initialize.
Devin oferece suporte à execução de GitHub Actions baseadas em Node.js diretamente em blueprints. Isso é útil para instalar versões específicas de ferramentas usando as mesmas actions usadas pela sua CI.
Ações como setup-node e setup-python alteram o PATH e as variáveis de ambiente. Os binários instalados por uma ação ficam disponíveis em todas as etapas seguintes e em maintenance. Apenas GitHub Actions baseadas em Node.js são compatíveis. Ações compostas e baseadas em Docker não são.
Você não precisa de GitHub Actions para a configuração básica de ferramentas. Comandos shell diretos (nvm install 20, curl ... | sh, apt-get install) funcionam tão bem quanto e geralmente são mais simples. GitHub Actions são mais úteis quando você quer replicar exatamente sua configuração de CI ou precisa da praticidade de ações como setup-java, que lidam com várias distribuições.
Execute vários serviços por trás de nomes de host com aparência real em HTTPS, como app.example.com, api.example.com e admin.example.com. Instale um único proxy reverso em initialize e roteie cada nome de host para uma porta upstream local diferente.Caddy gerencia o roteamento e o TLS local em uma única ferramenta. Um Caddyfile mapeia cada nome de host para um upstream, e tls internal emite automaticamente um certificado confiável por nome de host a partir da CA integrada do Caddy. caddy trust instala essa raiz da CA no repositório de confiança do sistema, e adicionar a mesma raiz ao banco de dados NSS permite que o navegador a aceite.Importe seu Caddyfile pela seção File attachments do editor de blueprint; ele então fica disponível como $FILE_CADDYFILE.
Caddyfile
O loop do /etc/hosts é o que faz app.example.com resolver para 127.0.0.1 dentro da sessão. Adicione uma entrada para cada hostname que você colocar no Caddyfile.
Para adicionar um serviço, acrescente um bloco de três linhas ao Caddyfile e uma entrada ao loop do /etc/hosts, depois acesse o hostname por HTTPS. O Caddy emite um certificado na primeira requisição, então não é necessária a geração de certificado por app.

Exemplos full-stack

Estes exemplos mostram como as configurações do Enterprise e no nível da organização se combinam. Na prática, você as dividiria entre diferentes escopos. Elas são apresentadas juntas aqui como referência.
Um ambiente Enterprise completo: certificado de CA corporativo, proxy, Java (Maven), Python (pip/uv), Node.js (npm) e Docker, todos apontando para uma única instância do Artifactory.
Rede e confiança (nível da conta):
  • CORP_ROOT_CA_B64 — certificado de CA corporativa codificado em Base64
  • CORP_HTTP_PROXY — URL do proxy HTTP
  • CORP_HTTPS_PROXY — URL do proxy HTTPS
  • CORP_NO_PROXY — hosts que devem ignorar o proxy
Credenciais do registro (nível da organização):
  • ARTIFACTORY_USER — nome de usuário do Artifactory
  • ARTIFACTORY_TOKEN — token de API ou senha do Artifactory
  • ARTIFACTORY_MAVEN_URL — URL do repositório Maven (por exemplo, https://artifactory.example.com/artifactory/maven-virtual)
  • ARTIFACTORY_PYPI_URL — URL do repositório PyPI (por exemplo, https://user:token@artifactory.example.com/artifactory/api/pypi/pypi-virtual/simple)
  • ARTIFACTORY_NPM_URL — URL do repositório npm (por exemplo, https://artifactory.example.com/artifactory/api/npm/npm-virtual)
  • ARTIFACTORY_DOCKER_URL — URL do registro do Docker (por exemplo, artifactory.example.com)
Isso normalmente seria dividido em três escopos:
  • Nível da conta (initialize): Certificado e proxy
  • Nível da organização (initialize): Instalação de runtimes de linguagem
  • Nível da organização (maintenance): Credenciais do registro (atualizadas durante os builds, disponibilizadas ao agente no início da sessão)
Exibido aqui de forma combinada para referência:
Neste exemplo, todos os registros apontam para a mesma instância do Artifactory, mas usam caminhos de URL diferentes. Cada ecossistema de pacotes tem seu próprio formato de endpoint. As URLs de Maven, PyPI, npm e Docker são diferentes entre si, mesmo no mesmo registro.
Quando diferentes linguagens usam registros privados diferentes (por exemplo, Maven no Nexus, npm no GitHub Packages, Python no Artifactory).
  • NEXUS_MAVEN_URL — URL do repositório Maven no Nexus
  • NEXUS_USER — nome de usuário do Nexus
  • NEXUS_PASS — senha do Nexus
  • GITHUB_PACKAGES_TOKEN — token de acesso pessoal do GitHub com escopo read:packages
  • ARTIFACTORY_USER — nome de usuário do Artifactory
  • ARTIFACTORY_TOKEN — token de API do Artifactory
  • GIT_TOKEN — token de acesso pessoal para módulos privados do Go
Em um ambiente totalmente isolado, o Devin não consegue acessar URLs públicas. Todas as ferramentas, runtimes e pacotes devem vir de mirrors internos.
Certificados:
  • CORP_ROOT_CA_B64 — certificado de CA corporativa codificado em Base64
Acesso ao mirror:
  • APT_MIRROR_URL — URL do mirror APT interno do Ubuntu
  • MIRROR_USER — nome de usuário para autenticação no mirror
  • MIRROR_PASS — senha para autenticação no mirror
  • JDK_TARBALL_URL — URL para baixar o tarball do JDK do mirror interno
  • NODE_TARBALL_URL — URL para baixar o tarball do Node.js do mirror interno
Registros de pacotes:
  • INTERNAL_MAVEN_URL — URL do registro Maven interno
  • INTERNAL_NPM_URL — URL do registro npm interno
  • INTERNAL_PYPI_URL — URL do registro PyPI interno
Em ambientes isolados da internet, todas as ferramentas de que o Devin precisa (runtimes de linguagem, ferramentas de CLI etc.) devem estar disponíveis nos seus mirrors internos. Registros públicos e sites de download não podem ser acessados.
Uma configuração Enterprise completa que combina conectividade VPN com certificados, proxy e suporte a múltiplos idiomas. Esta é a ordem de operações recomendada.
VPN:
  • VPN_CONFIG_B64 — arquivo de configuração do OpenVPN codificado em Base64
Rede & confiança:
  • CORP_ROOT_CA_B64 — certificado de CA corporativa codificado em Base64
  • CORP_HTTP_PROXY — URL do proxy HTTP
  • CORP_HTTPS_PROXY — URL do proxy HTTPS
  • CORP_NO_PROXY — hosts que devem ignorar o proxy
Credenciais do registro:
  • MAVEN_REGISTRY_URL — URL do registro do Maven
  • NPM_REGISTRY_URL — URL do registro do npm
  • PYPI_REGISTRY_HOST — hostname do registro do PyPI
  • REGISTRY_USER — nome de usuário do registro (para Maven e pip)
  • REGISTRY_PASS — senha do registro (para Maven e pip)
  • REGISTRY_TOKEN — token de autenticação do npm
A ordem das etapas de initialize importa. A VPN deve vir primeiro (para que os hosts internos fiquem acessíveis), depois o DNS (para que os nomes sejam resolvidos), depois os certificados (para que o HTTPS funcione), depois o proxy (para que o tráfego seja roteado corretamente) e, por fim, os runtimes de linguagem (que podem fazer download de mirrors internos).

Dicas para escrever bons blueprints

  • Teste os comandos primeiro em uma sessão. Execute os comandos manualmente em uma sessão do Devin antes de adicioná-los ao blueprint. Isso é mais rápido do que esperar um ciclo completo de build.
  • Use initialize para ferramentas instaladas uma única vez e maintenance para dependências. Tudo o que leva minutos para instalar (compiladores, binários grandes, ferramentas globais) deve ficar em initialize. Comandos rápidos de dependência (npm install, uv sync) entram em maintenance.
  • Mantenha os comandos de maintenance rápidos. Procure ficar abaixo de 2 minutos. Eles são executados durante os builds e apresentados ao agente no início da sessão.
  • Use $ENVRC para variáveis de ambiente. Não escreva em .bashrc nem em .profile. $ENVRC é o mecanismo suportado para definir variáveis entre etapas e sessões.
  • Dê nomes às suas etapas. A forma expandida com campos name facilita muito identificar falhas nos logs de build.
  • Use subshells para monorepos. (cd packages/foo && npm install) é executado em um subshell, então as etapas seguintes não são afetadas pela mudança de diretório.
  • Use npm install, não npm ci. npm ci apaga node_modules e reinstala tudo do zero em cada sessão, o que é lento para maintenance.
  • Use secrets do repositório para valores sensíveis. Configure-os na aba Secrets do editor de blueprint do repositório, em vez de embuti-los nos blueprints.
Para detalhes de sintaxe, consulte a Referência de blueprints. Para solucionar problemas de falhas de build, consulte Configuração declarativa > Solução de problemas.