Skip to main content

Configurando a versão das atualizações do Dependabot

Você pode configurar seu repositório para que o Dependabot atualize automaticamente os pacotes que você usa.

Quem pode usar esse recurso?

Users with write access

Note

O administrador do site precisa configurar as Dependabot updates do sua instância do GitHub Enterprise Server para que você possa usar esse recurso. Para obter mais informações, confira "Habilitando o Dependabot para sua empresa".

Talvez você não consiga habilitar ou desabilitar Dependabot updates se um proprietário da empresa tiver definido uma política no nível da empresa. Para obter mais informações, confira "Como impor políticas para segurança e análise de código na empresa".

Sobre atualizações de versão para dependências

Habilite as Dependabot version updates fazendo o check-in de um arquivo de configuração dependabot.yml no diretório .github do seu repositório. Em seguida, o Dependabot cria um pull request para manter as dependências que você configura atualizadas. Para cada dependência do gerenciador de pacotes que você deseja atualizar, você deve especificar a localização dos arquivos de manifesto do pacote e a frequência de busca por atualizações nas dependências listadas nesses arquivos. Para obter informações sobre como habilitar as atualizações de segurança, confira Configurando as atualizações de segurança do Dependabot.

Quando você habilitar atualizações de versão pela primeira vez, você pode ter muitas dependências que estão desatualizadas e algumas podem ser muitas versões por trás da versão mais recente. O Dependabot verifica as dependências desatualizadas assim que estiver habilitado. Você pode ver novas pull requests para atualizações de versão dentro de alguns minutos após adicionar o arquivo de configuração, dependendo do número de arquivos de manifesto para os quais você configura as atualizações. Dependabot também será executada uma atualização sobre as alterações subsequentes no arquivo de configuração.

Dependabot também pode criar pull requests quando você alterar um arquivo de manifesto depois que uma atualização falhar. Isto ocorre porque alterações em um manifesto, como remover a dependência que causou falha na atualização, pode fazer com que a atualização recém-acionada sejam bem-sucedida.

Para manter as solicitações de pull gerenciáveis e fáceis de serem revisadas, o Dependabot gera, no máximo, cinco solicitações de pull para começar a trazer as dependências para a última versão. Se você fizer o merge de algumas desses primeiros pull requests antes da próxima atualização programada, Os pull requests restantes serão abertos na próxima atualização, até o máximo. Você pode alterar o número máximo de solicitações de pull em aberto definindo a opção de configuração open-pull-requests-limit.

Para reduzir ainda mais o número de solicitações de pull que você está vendo, você pode usar a opção de configuração groups para agrupar conjuntos de dependências (por ecossistema de pacote). Dependabot em seguida, gera uma única solicitação de pull para atualizar o máximo de dependências possível no grupo para as versões mais recentes ao mesmo tempo. Para obter mais informações, confira Manter suas dependências atualizadas automaticamente com as atualizações da versão do Dependabot.

Ocasionalmente, devido a uma configuração incorreta ou uma versão incompatível, você pode ver que a execução do Dependabot falhou. Após30 execuções com falha, o Dependabot version updates ignorará as execuções subsequentes agendadas até que você acione manualmente um marcador para atualizações do gráfico de dependência , ou atualize o arquivo de manifesto. Dependabot security updates ainda será executado como de costume.

Por padrão, somente as dependências diretas definidas explicitamente em um manifesto são mantidas atualizadas por Dependabot version updates. Você pode optar por receber atualizações de dependências indiretas definidas em arquivos de bloqueio. Para saber mais, confira Dependabot options reference.

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 "Gerenciando 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 "Dependabot options reference". Adicionalmente, Dependabot não é compatível com dependências privadas GitHub para todos os gerenciadores de pacote. Para saber mais, confira Ecossistemas e repositórios compatíveis com o Dependabot e Suporte a linguagem do GitHub.

Habilitar Dependabot version updates

Habilite as Dependabot version updates fazendo commit de um arquivo de configuração dependabot.yml no repositório.

  1. Crie um arquivo de configuração dependabot.yml no diretório .github do repositório. Você pode usar o trecho abaixo como ponto de partida. For information about the options you can use to customize how Dependabot maintains your repositories, see Dependabot options reference.

    YAML
    # To get started with Dependabot version updates, you'll need to specify which
    # package ecosystems to update and where the package manifests are located.
    
    version: 2
    updates:
    - package-ecosystem: "" # See documentation for possible values
      directory: "/" # Location of package manifests
      schedule:
        interval: "weekly"
    
  2. Adicione uma version. Essa chave é obrigatória. O arquivo precisa começar com version: 2.

  3. Opcionalmente, se você tiver dependências em um registro privado, adicione uma seção registries contendo detalhes de autenticação. Para saber mais, confira registries em “Opções de configuração do arquivo dependabot.yml”.

  4. Adicione uma seção updates, com uma entrada para cada gerenciador de pacotes que você deseja que o Dependabot monitore. Essa chave é obrigatória. Você a utiliza para configurar como Dependabot atualiza as versões ou as dependências do seu projeto. Cada entrada configura as configurações de atualização para um gerenciador de pacotes específico.

  5. Para cada gerenciador de pacotes, use:

    • package-ecosystem para especificar o gerenciador de pacotes. Para obter mais informações sobre os gerenciadores de pacotes, confira package-ecosystem em “Opções de configuração do arquivo dependabot.yml”.

    • directory para especificar o local do manifesto ou de outros arquivos de definição. Para saber mais, confira directory em “Opções de configuração do arquivo dependabot.yml”.

    • schedule.interval: especifica a frequência com a qual novas versões são verificadas. Para saber mais, confira schedule.interval em “Opções de configuração do arquivo dependabot.yml”.

  6. Verifique o arquivo de configuração dependabot.yml no diretório .github do repositório.

Arquivo de exemplo dependabot.yml

O exemplo de arquivo dependabot.yml abaixo configura atualizações de versão para dois gerenciadores de pacotes: npm e Docker. Quando este arquivo é marcado, o Dependabot verifica os arquivos de manifesto no branch padrão buscando dependências desatualizadas. Se encontrar dependências desatualizadas, irá gerar pull requests em relação ao branch padrão para atualizar as dependências.

# Basic `dependabot.yml` file with
# minimum configuration for two package managers

version: 2
updates:
  # Enable version updates for npm
  - package-ecosystem: "npm"
    # Look for `package.json` and `lock` files in the `root` directory
    directory: "/"
    # Check the npm registry for updates every day (weekdays)
    schedule:
      interval: "daily"

  # Enable version updates for Docker
  - package-ecosystem: "docker"
    # Look for a `Dockerfile` in the `root` directory
    directory: "/"
    # Check for updates once a week
    schedule:
      interval: "weekly"

No exemplo acima, se as dependências do Docker estavam muito desatualizadas, o ideal é começar com um agendamento daily até que as dependências estejam atualizadas e retornar a um agendamento semanal.

Habilitando atualizações da versão em bifurcações

Se você quiser habilitar atualizações de versão nas bifurcações, há um passo extra. As atualizações de versão não são habilitadas automaticamente em forks quando um arquivo de configuração dependabot.yml está presente. Isso garante que os proprietários do fork não habilitem acidentalmente as atualizações de versão quando efetuarem pull de alterações, incluindo um arquivo de configuração dependabot.yml do repositório original.

Em uma bifurcação, você também precisa habilitar explicitamente Dependabot.

  1. Em GitHub, acesse a página principal do repositório.

  2. Abaixo do nome do repositório, clique em Configurações. Caso não consiga ver a guia "Configurações", selecione o menu suspenso , clique em Configurações.

    Captura de tela de um cabeçalho de repositório que mostra as guias. A guia "Configurações" é realçada por um contorno laranja-escuro.

  3. Na seção "Security" da barra lateral, clique em Code security and analysis.

  4. Em "Code security and analysis", à direita de "Dependabot version updates", clique em Enable para permitir que o Dependabot inicie atualizações de versão.

Verificando o status das atualizações da versão

Depois de habilitar as atualizações de versão, a guia Dependabot no grafo de dependência do repositório será preenchida. Esta aba mostra quais gerentes de pacote de Dependabot estão configurados para monitorar e quando Dependabot fez a última verificação com relação a novas versões.

Captura de tela da página do Grafo de dependência. Uma guia, intitulada "Dependabot", está realçada com um contorno laranja.

Para obter mais informações, confira Listing dependencies configured for version updates.

Desabilitar Dependabot version updates

Você pode desabilitar por completo as atualizações de versão excluindo o arquivo dependabot.yml do repositório. Mais usualmente, você deseja desabilitar as atualizações temporariamente para uma ou mais dependências, ou gerenciadores de pacotes.

  • Gerenciadores de pacotes: desabilite-os definindo open-pull-requests-limit: 0 ou removendo a linha de comentário de package-ecosystem relevante no arquivo de configuração.
  • Dependências específicas: desabilite-as adicionando atributos ignore a pacotes ou a aplicativos que você deseja excluir das atualizações.

Quando você desabilita dependências, você pode usar cartões curingas para corresponder a um conjunto de bibliotecas relacionadas. Você também pode especificar quais versões excluir. Isso é particularmente útil se você precisa bloquear atualizações de uma biblioteca, deixando pendente trabalho para suportar uma alteração quebrada na sua API, mas quer obter qualquer correção de segurança para a versão que você usa.

Exemplo de desabilitação de atualizações de versão para algumas dependências

O exemplo de arquivo dependabot.yml abaixo inclui exemplos das diferentes maneiras de desabilitar as atualizações em algumas dependências, permitindo que outras atualizações continuem.

# `dependabot.yml` file with updates
# disabled for Docker and limited for npm

version: 2
updates:
  # Configuration for Dockerfile
  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "weekly"
      # Disable all pull requests for Docker dependencies
    open-pull-requests-limit: 0

  # Configuration for npm
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    ignore:
      # Ignore updates to packages that start with 'aws'
      # Wildcards match zero or more arbitrary characters
      - dependency-name: "aws*"
      # Ignore some updates to the 'express' package
      - dependency-name: "express"
        # Ignore only new versions for 4.x and 5.x
        versions: ["4.x", "5.x"]
      # For all packages, ignore all patch updates
      - dependency-name: "*"
        update-types: ["version-update:semver-patch"]

Para saber mais sobre como verificar as preferências de ignorar existentes, confira Dependabot options reference.