Skip to main content

Solução de problemas do Dependabot

Às vezes, Dependabot não consegue criar um pull request para atualizar suas dependências. Você pode revisar o erro e desbloquear Dependabot.

Observação: o administrador do site precisa configurar as Dependabot updates para o your GitHub Enterprise Server instance para que você possa usar esse recurso. Para obter mais informações, confira "Como habilitar o Dependabot para sua empresa".

Sobre os erros do Dependabot

O Dependabot gera pull requests para atualizar dependências. Dependendo de como o repositório está configurado, o Dependabot poderá gerar solicitações de pull para atualizações de versão e/ou para atualizações de segurança. Você gerencia essas pull requests da mesma forma que qualquer outra pull request, mas também existem alguns comandos extras disponíveis. Para obter informações sobre como habilitar as atualizações de dependência do Dependabot, confira "Como configurar as Dependabot security updates" e "Como habilitar e desabilitar atualizações de versão do Dependabot".

Se algo impedir o Dependabot de criar um pull request, este será relatado como erro.

Investigar erros com Dependabot security updates

Quando Dependabot está impedido de criar um pull request para corrigir um alerta de Dependabot, ele publica a mensagem de erro no alerta. A exibição do Dependabot alerts mostra uma lista de todos os alertas que ainda não foram resolvidos. Para acessar a exibição de alertas, clique em Dependabot alerts na guia Segurança do repositório. Quando um pull request que corrigirá a dependência vulnerável foi gerado, o alerta inclui um link para esse pull request.

Vista de Dependabot alerts que mostra um link do pull request

Há vários motivos pelos quais um alerta pode não ter um link de solicitação de pull:

  1. Dependabot security updates não estão habilitadas para o repositório.

  2. O alerta é sobre malware e não há nenhuma versão segura do pacote.

  3. O alerta é para uma dependência indireta ou transitória que não está explicitamente definida em um arquivo de bloqueio.

  4. Um erro impediu Dependabot de criar um pull request.

Se um erro impediu que Dependabot criasse um pull request, você pode exibir os detalhes do erro clicando no alerta.

Investigar erros com Dependabot version updates

Quando Dependabot está impedido de criar um pull request para atualizar uma dependência em um ecossistema, ele posta o ícone de erro no arquivo de manifesto. Os arquivos de manifesto gerenciados pelo Dependabot estão listados na guia do Dependabot. Para acessar essa guia, na guia Insights do repositório, clique em Grafo de dependência e clique na guia Dependabot .

vista de Dependabot que mostra um erro

Para ver os logs de qualquer arquivo de manifesto, clique no link HORA da última verificação e clique em Exibir logs.

Erro e registro de uma atualização de versão de Dependabot

Entender os erros de Dependabot

Pull requests para atualizações de segurança atuam para atualizar uma dependência vulnerável à versão mínima que inclui uma correção para a vulnerabilidade. Em contrapartida, os pull requests para atualizações de versão agem para atualizar uma dependência da versão mais recente permitida pelo manifesto do pacote e pelos arquivos de configuração de Dependabot. Consequentemente, alguns erros são específicos para um tipo de atualização.

Dependabot não pode atualizar a DEPENDÊNCIA para uma versão não vulnerável

Somente atualizações de segurança. O Dependabot não pode criar uma solicitação de pull para atualizar a dependência vulnerável para uma versão segura sem desfazer outras dependências no grafo de dependência desse repositório.

Cada aplicativo com dependências tem um gráfico de dependências, ou seja, um gráfico direcionado acíclico de cada versão de pacote da qual o aplicativo depende direta ou indiretamente. Toda vez que uma dependência é atualizada, este gráfico deve ser resolvido. Caso contrário, o aplicativo não será criado. Quando um ecossistema tem um gráfico de dependência profundo e complexo, por exemplo, npm e RubyGems, geralmente é impossível atualizar uma única dependência sem atualizar todo o ecossistema.

A melhor maneira de evitar esse problema é manter-se atualizado com as versões mais recentes, habilitando, por exemplo, as atualizações de versões. Isso aumenta a probabilidade de que uma vulnerabilidade em uma dependência possa ser resolvida por meio de uma atualização simples que não afete o gráfico de dependência. Para obter mais informações, confira "Configurar atualizações de versão do Dependabot."

Dependabot não consegue atualizar para a versão necessária, pois já existe um pull request aberto para a última versão

Somente atualizações de segurança. O Dependabot não criará uma solicitação de pull para atualizar a dependência vulnerável para uma versão segura porque já há uma solicitação de pull em aberto para atualizar essa dependência. Você verá este erro quando uma vulnerabilidade for detectada em uma única dependência e já houver um pull request aberto para atualizar a dependência para a última versão.

Existem duas opções: você pode revisar o pull request aberto e fazer o merge assim que estiver confiante de que a mudança é segura, ou fechar o pull request e acionar um novo pull request de atualização de segurança. Para obter mais informações, confira "Como disparar uma solicitação de pull do Dependabot manualmente".

O Dependabot esgotou o tempo durante esta atualização

Dependabot demorou mais do que o tempo máximo permitido para avaliar a atualização necessária e preparar um pull request. Em geral, esse erro é visto apenas em repositórios grandes com muitos arquivos de manifesto, por exemplo, projetos de repositório único do npm ou do YARN com centenas de arquivos package.json. As atualizações no ecossistema do Composer também levam mais tempo para ser avaliadas e podem expirar.

Este erro é difícil de ser corrigido. Se uma atualização de versão atingir o tempo limite, você poderá especificar as dependências mais importantes para atualização usando o parâmetro allow ou, como alternativa, usar o parâmetro ignore para excluir algumas dependências das atualizações. Atualizar sua configuração pode permitir que Dependabot revise a atualização da versão e gere o pull request no tempo disponível.

Se uma atualização de segurança expirar, você pode reduzir as chances de isso acontecer mantendo as dependências atualizadas, por exemplo, habilitando atualizações de versão. Para obter mais informações, confira "Como configurar as atualizações de versão do Dependabot".

Dependabot não consegue abrir mais nenhum pull request

Há um limite no número de pull requests abertos que Dependabot irá gerar. Quando este limite é atingido, nenhum pull request novo será aberto e este erro será relatado. A melhor maneira de resolver este erro é revisar e fazer merge alguns dos pull requests abertos.

Existem limites separados para solicitações de atualização de versões e segurança, para que os pull requests de atualização de versão aberta não possam bloquear a criação de uma solicitação de atualização de segurança. O limite para pull requests de atualização de segurança é 10. Por padrão, o limite para as atualizações de versão é 5, mas você pode alterá-lo usando o parâmetro open-pull-requests-limit no arquivo de configuração. Para obter mais informações, confira "Opções de configuração para o arquivo dependabot.yml".

A melhor maneira de resolver este erro é fazer o merge ou fechar alguns dos pull requests existentes e acionar um novo pull request manualmente. Para obter mais informações, confira "Como disparar uma solicitação de pull do Dependabot manualmente".

Dependabot não pode resolver ou acessar suas dependências

Se Dependabot tentar verificar se as referências de dependências precisam ser atualizadas em um repositório, mas não puder acessar um ou mais arquivos referenciados, a operação irá falhar com a mensagem de erro "Dependabot can't resolve your LANGUAGE dependency files." O tipo de erro da API é git_dependencies_not_reachable.

Da mesma forma, se Dependabot não pode acessar um registro de pacote privado em que uma dependência está localizada, gera-se um dos erros a seguir:

  • "O Dependabot não pode acessar uma dependência em um registro de pacote privado"
    (Tipo de erro da API: private_source_not_reachable)
  • "O Dependabot não pode se autenticar em um registro de pacote privado"
    (Tipo de erro da API: private_source_authentication_failure)
  • "O Dependabot atingiu o tempo limite enquanto aguardava um registro de pacote privado"
    (Tipo de erro da API: private_source_timed_out)
  • "O Dependabot não pôde validar o certificado para um registro de pacote privado"
    (Tipo de erro da API: private_source_certificate_failure)

Para permitir que Dependabot atualize as referências de dependências com sucesso, certifique-se de que todas as dependências referenciadas estejam hospedadas em locais acessíveis.

Somente atualizações de versão. Ao executar atualizações de segurança ou versão, alguns ecossistemas devem ser capazes de resolver todas as dependências de sua fonte para verificar se as atualizações foram bem-sucedidas. Se o seu manifesto ou arquivos de bloqueio contiverem dependências privadas, Dependabot deverá ser capaz de acessar o local em que essas dependências estão hospedadas. Os proprietários da organização podem conceder a Dependabot acesso a repositórios privados que contêm dependências para um projeto dentro da mesma organização. Para obter mais informações, confira "Como gerenciar as configurações de segurança e de análise da sua organização". Você pode configurar o acesso a registros privados no arquivo de configuração dependabot.yml de um repositório. Para obter mais informações, confira "Opções de configuração para o arquivo dependabot.yml". Adicionalmente, Dependabot não é compatível com dependências privadas GitHub para todos os gerenciadores de pacote. Para obter mais informações, confira "Sobre as atualizações de versão do Dependabot".

Acionar um pull request de Dependabot manualmente

Se você desbloquear Dependabot, você poderá iniciar manualmente uma nova tentativa de criar um pull request.

  • Atualizações de segurança – Veja o alerta do Dependabot que mostra o erro corrigido e clique em Criar atualização de segurança do Dependabot .
  • Atualizações de versão – Na guia Insights do repositório, clique em Grafo de dependência e clique na guia Dependabot. Clique em HORA da última verificação para ver o arquivo de log gerado pelo Dependabot durante a última verificação em busca das atualizações de versão. Clique em Procurar atualizações.

Leitura adicional