Para a configuração geral do ambiente, consulte Configuração do ambiente. Para detalhes de sintaxe, consulte a Referência de YAML.
Depuração de falhas de build
Etapa 1: Verifique o status da build
| Status | O que significa | O que fazer |
|---|---|---|
| Sucesso | Tudo funcionou | Nada — sua imagem da máquina está pronta |
| Parcial | A build principal foi concluída, mas alguns repos falharam | Verifique quais repos falharam; as sessões deles podem ter problemas |
| Falha | A própria build falhou | Verifique os logs da etapa com falha |
| Cancelado | Uma build mais recente substituiu esta | Normal — inicie uma build mais recente, se necessário |
| Ignorado | Nenhuma alteração de configuração foi detectada | Nada — nenhuma build foi necessária |
Etapa 2: Leia os logs de build
- Configuração compartilhada — comandos do Enterprise + de nível da organização
- Clone — clonagem do repositório
- Configuração do repo — comandos por repositório
- Finalização — verificação de integridade e criação da imagem
name, os logs mostrarão exatamente qual etapa falhou. Esse é um dos principais benefícios de nomear suas etapas:
Etapa 3: Identifique o padrão da falha
Falhas de clonagem
- O acesso ao repositório não está configurado — verifique Configurações do Enterprise > Integrações
- Um repo privado requer um token de autenticação
- O repositório foi renomeado ou excluído
- Problema de conectividade de rede (é necessário usar VPN ou proxy)
Falhas na instalação de dependências
npm install, pip install ou algo semelhante.
Causas comuns:
- O registro privado de pacotes exige autenticação — adicione o token em segredo
- Conflito entre versões de pacotes — fixe versões específicas
- Timeout de rede — verifique se a VPN é necessária
- URL do registro configurada incorretamente
maintenance. Consulte Exemplos de configuração para ver padrões de registro privado.
Falhas de timeout
- Prompt interativo aguardando entrada — adicione a flag
-ye useDEBIAN_FRONTEND=noninteractive - Instalação de dependências muito grande levando tempo demais
- O comando excede o timeout de 1 hora
initialize, para que sejam executadas apenas durante os builds (não em toda sessão).
Erros de permissão
- Falta de
sudopara instalar pacotes do sistema - Tentativa de gravar em diretórios protegidos
- Arquivo de uma build anterior pertencente a outro usuário
sudo para operações no nível do sistema (apt-get, gravar em /etc/, etc.). Para gerenciadores de pacotes no nível do usuário (npm, pip, cargo), sudo geralmente não é necessário.
Erros de “comando não encontrado”
initialize não fica disponível em maintenance ou em etapas posteriores.
Causas comuns:
- A ferramenta é instalada em um diretório que não está no
PATH - Alterações no perfil do shell (
.bashrc) não são carregadas nas etapas seguintes
PATH via $ENVRC:
Etapa 4: Faça iterações
- Corrija sua configuração YAML
- Salve — um novo build será iniciado automaticamente
- Verifique os logs do novo build
Referência rápida de erros comuns
| Erro | Causa provável | Correção |
|---|---|---|
command not found | Ferramenta não instalada ou fora do PATH | Adicione a initialize ou ao PATH via $ENVRC |
Permission denied | Falta de sudo | Use sudo apt-get install para pacotes do sistema |
npm ERR! 404 | Pacote privado, sem autenticação | Adicione o token de autenticação do registro em maintenance (exemplos) |
E: Unable to locate package | apt-get update não foi executado antes | Adicione sudo apt-get update -qq antes de apt-get install |
| Timeout | Instalação lenta ou prompt interativo | Mova para initialize; adicione -y e DEBIAN_FRONTEND=noninteractive |
| Arquivos de configuração vazios após o início da sessão | Credenciais gravadas em initialize | Mova as etapas de credenciais para maintenance |
| Build concluída com sucesso, mas a sessão está corrompida | O comando maintenance falha no início da sessão | Teste manualmente os comandos de maintenance em uma sessão |
Migrando da configuração interativa
Como a migração funciona
- Controle ATIVADO (padrão) — todas as sessões usam o snapshot legado. Sem interrupções.
- Controle DESATIVADO — todas as sessões usam o snapshot declarativo.
Etapas da migração
Prepare a configuração
Anote os comandos da sua configuração interativa atual — você vai mapeá-los para seções do YAML:
| Etapa do assistente legado | Equivalente declarativo |
|---|---|
| Git pull | Automático (integrado) |
| Configurar segredo | segredo (sem alterações) |
| Instalar dependências | seção initialize |
| Manter dependências | seção maintenance |
| Configurar lint | entrada knowledge com o nome lint |
| Configurar testes | entrada knowledge com o nome test |
| Executar o app localmente | entrada knowledge com o nome startup |
| Observações adicionais | entrada knowledge com o nome notes |
Escreva seu YAML
Vá para Configurações > Ambiente do Devin e selecione seu repositório. Mapeie seus comandos legados:Ou simplesmente inicie uma sessão do Devin e peça para ele configurar o repo — o Devin pode gerar a configuração automaticamente para você.
Salve e aguarde o build
Salve sua configuração. Um build é iniciado automaticamente. Acompanhe o progresso em Histórico de build. Builds são gratuitos — eles não consomem ACUs.
Teste antes de alternar
Antes de migrar todo mundo, teste a configuração declarativa em sessões individuais usando o override manual. Isso permite que você (ou quem estiver iterando na configuração) use o snapshot declarativo enquanto todos os demais permanecem no snapshot legado.Itere na configuração até que a configuração declarativa alcance paridade total com seu ambiente legado.
Migração do Enterprise
- Configure primeiro o YAML no nível do Enterprise — infraestrutura compartilhada, como VPN, certificados e configurações de proxy.
- Migre uma org por vez. Cada org tem seu próprio controle legado, então você pode migrar progressivamente sem afetar outras equipes.
- Considere uma org de teste. Para grandes empresas, crie uma organização de teste dedicada para validar a configuração declarativa antes de implantá-la nas org de produção.
- Use o Devin em escala. O Devin pode configurar repos por meio de sessões paralelas — inicie uma sessão por repo, e o Devin gerará automaticamente propostas de configuração. Isso funciona bem para integrar de 10 a mais de 100 repos.
O que acontece com meu snapshot antigo?
Principais diferenças
| Recurso | Legado (interativo) | Declarativo (YAML) |
|---|---|---|
| Reprodutibilidade | Com estado — snapshots acumulam alterações ao longo do tempo | Totalmente reproduzível a partir do YAML |
| Multi-repo | Um repo por vez | Vários repos em um build com clonagem simultânea |
| Manutenção | Etapas manuais de “maintain dependencies” | Automática — maintenance é executado no início da sessão |
| Camadas de Enterprise/org | Sem suporte | Hierarquia de 3 níveis (Enterprise → Org → Repo) |
| Sugestões do Devin | Apenas no assistente | Durante a sessão — Devin pode sugerir atualizações de configuração |
| Custo | Sessões do assistente consumiam ACUs | Sessões de configuração ~1–3 ACUs; builds são gratuitos |
Perguntas frequentes
Geral
initialize em vez de maintenance?
Use initialize para instalações únicas de ferramentas (apt-get install, configuração do runtime da linguagem, ferramentas de CLI globais). Use maintenance para instalação de dependências que precisam se manter atualizadas (npm install, pip install, uv sync).
Como adiciono variáveis de ambiente?
Escreva-as em $ENVRC:
sudo apt-get install na seção initialize. Sempre use DEBIAN_FRONTEND=noninteractive e a flag -y para evitar prompts interativos.
E se eu precisar de versões diferentes do Node para repos diferentes?
Use o nvm na configuração no nível do repo:
Específico da build
Específico do Enterprise
Limitações conhecidas
- Sem prévia/sandbox de build — toda alteração na configuração aciona um build completo. Teste primeiro os comandos em uma sessão.
- Configuração serial de repo — a configuração no nível do repositório é executada em um repo por vez (em ordem alfabética). Um grande número de repos resulta em builds mais longos.
- Sem lógica condicional em YAML — o formato não oferece suporte a if/else. Use condicionais de shell nos comandos, se necessário (por exemplo,
[ -f package.json ] && npm install). - Sem busca nos logs de build — é preciso rolar os logs de build manualmente. Use etapas nomeadas para facilitar a identificação de falhas.
Próximas etapas
- Configuração do ambiente — guia principal para criar sua configuração
- Exemplos de configuração — exemplos para copiar e colar por stack e camada
