Skip to main content

Como controlar quais dependências são atualizadas pelo Dependabot

Saiba como configurar o arquivo dependabot.yml para que Dependabot atualize automaticamente os pacotes especificados, da maneira como você define.

Quem pode usar esse recurso?

Users with write access

Você pode personalizar sua configuração de Dependabot para atender às suas necessidades, adicionando opções ao arquivo dependabot.yml. Por exemplo, você pode verificar se Dependabot usa os arquivos de manifesto de pacote corretos e atualiza apenas as dependências desejadas mantidas.

Este artigo agrupa opções de personalização que você pode achar úteis.

Definindo vários locais para arquivos de manifesto

Se você quiser habilitar Dependabot version updates para arquivos de manifesto armazenados em mais de um local, você poderá usar directories em lugar de directory. Por exemplo, essa configuração define dois agendamentos de atualização diferentes para arquivos de manifesto armazenados em diretórios diferentes.

YAML
# Specify the locations of the manifest files to update for each package manager
# using both `directories` and `directory`

version: 2
updates:
  - package-ecosystem: "bundler"
    # Update manifest files stored in these directories weekly
    directories:
      - "/frontend"
      - "/backend"
      - "/admin"
    schedule:
      interval: "weekly"
  - package-ecosystem: "bundler"
    # Update manifest files stored in the root directory daily
    directory: "/"
    schedule:
      interval: "daily"
  • Para especificar um intervalo de diretórios usando um padrão

    YAML
    # Specify the root directory and directories that start with "lib-",
    # using globbing, for locations of manifest files
    
    version: 2
    updates:
      - package-ecosystem: "composer"
        directories:
          - "/"
          - "/lib-*"
        schedule:
          interval: "weekly"
    
  • Para especificar manifestos no diretório atual e subdiretórios recursivos

    YAML
    # Specify all directories from the current layer and below recursively,
    # using globstar, for locations of manifest files
    
    version: 2
    updates:
      - package-ecosystem: "composer"
        directories:
          - "**/*"
        schedule:
          interval: "weekly"
    

Ignorando dependências específicas

Se preferir não adotar as alterações de determinadas dependências no projeto, você pode configurar o Dependabot para ignorar essas dependências ao abrir pul requests para atualizações de versão e atualizações de segurança. Você pode fazer isso usando um dos métodos a seguir.

  • Configure a opção ignore para a dependência no arquivo dependabot.yml.
    • Você pode usar isso para ignorar atualizações para dependências, versões e tipos de atualizações específicos.
    • Para obter mais informações, confira ignore em Referência de opções do Dependabot.
  • Use comandos de comentário @dependabot ignore em uma Dependabotpull request para atualizações de versão e atualizações de segurança.

Aqui estão alguns exemplos mostrando como ignore pode ser usado para personalizar quais dependências são atualizadas.

  • Ignorar atualizações após uma versão específica

    YAML
    ignore:
      - dependency-name: "lodash:*"
        # Ignore versions of Lodash that are equal to or greater than 1.0.0
        versions: [ ">=1.0.0" ]
    
    YAML
    ignore:
      - dependency-name: "sphinx"
        versions: [ "[1.1,)" ]
    
  • Para ignorar atualizações de patch

    YAML
    ignore:
      - dependency-name: "@types/node"
        # Ignore patch updates for Node
        update-types: ["version-update:semver-patch"]
    
  • Para ignorar versões ou intervalos de versões específicos, confira Como ignorar versões ou intervalos versões específicos.

Se quiser deixar de ignorar uma dependência ou a condição "ignore", você poderá excluir as condições "ignore" do arquivo dependabot.yml ou reabrir a pull request.

Para pull requests para atualizações agrupadas , você também pode usar os comandos de comentário @dependabot unignore. Os comandos de comentário @dependabot unignore permitem que você faça o seguinte comentando uma solicitação de pull do Dependabot:

  • Deixar de ignorar uma condição "ignore" específica
  • Deixar de ignorar uma dependência específica
  • Deixar de ignorar todas as condição "ignore" de todas as dependências em uma solicitação de pull do Dependabot

Para saber mais, confira Gerenciar pull requests para atualizações de dependências.

Como permitir que dependências específicas sejam atualizadas

Você pode usar allow para informar a Dependabot sobre as dependências que você deseja manter. allow geralmente é usado em conjunto com ignore.

Para obter mais informações, confira allow em Referência de opções do Dependabot.

Por padrão, Dependabot cria pull requests de atualização de versão apenas para as dependências definidas explicitamente em um manifesto (dependências de direct). Essa configuração usa allow para informar a Dependabot que queremos que ele mantenha all os tipos de dependência. Ou seja, as dependências direct e as respectivas dependências (também conhecidas como dependências indiretas, sub-dependências ou dependências transitórias). Além disso, a configuração informa a Dependabot para ignorar todas as dependências com um nome que corresponda ao padrão org.xwiki.* porque temos um processo diferente para mantê-las.

Tip

Dependabot verifica todas as dependências permitidas e, em seguida, filtra quaisquer dependências ou versões ignoradas. Se uma dependência for correspondida por uma instrução allow e ignore, ela será ignorada.

YAML
version: 2
registries:
  # Helps find updates for non Maven Central dependencies
  maven-xwiki-public:
    type: maven-repository
    url: https://nexus.xwiki.org/nexus/content/groups/public/
    username: ""
    password: ""
  # Required to resolve xwiki-common SNAPSHOT parent pom
  maven-xwiki-snapshots:
    type: maven-repository
    url: https://maven.xwiki.org/snapshots
    username: ""
    password: ""
updates:
  - package-ecosystem: "maven"
    directory: "/"
    registries:
      - maven-xwiki-public
      - maven-xwiki-snapshots
    schedule:
      interval: "weekly"
    allow:
      # Allow both direct and indirect updates for all packages.
      - dependency-type: "all"
    ignore:
      # Ignore XWiki dependencies. We have a separate process for updating them
      - dependency-name: "org.xwiki.*"
    open-pull-requests-limit: 15

Como ignorar versões específicas ou intervalos de versões

Você pode usar versions em conjunto com ignore para ignorar versões ou intervalos específicos de versões.

Para obter mais informações, confira versions em Referência de opções do Dependabot.

  • Para ignorar uma versão específica

    YAML
    ignore:
      - dependency-name: "django*"
        # Ignore version 11
        versions: [ "11" ]
    
  • Para ignorar um intervalo de versões

    YAML
        ignore:
          - dependency-name: "@types/node"
            versions: ["15.x", "14.x", "13.x"]
          - dependency-name: "xdg-basedir"
            # 5.0.0 has breaking changes as they switch to named exports
            # and convert the module to ESM
            # We can't use it until we switch to ESM across the project
            versions: ["5.x"]
          - dependency-name: "limiter"
            # 2.0.0 has breaking changes
            # so we want to delay updating.
            versions: ["2.x"]
    

Especificando o nível de controle de versão semântico a ser ignorado

Você pode especificar um ou mais níveis de controle de versão semântico (SemVer) a serem ignorados usando update-types.

Para obter mais informações, confira update-types em Referência de opções do Dependabot.

Neste exemplo, Dependabot vai ignorar as versões de patch para o Node.

YAML
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    ignore:
      - dependency-name: "express"
        # For Express, ignore all updates for version 4 and 5
        versions: ["4.x", "5.x"]
        # For Lodash, ignore all updates
      - dependency-name: "lodash"
      - dependency-name: "@types/node"
        # For Node types, ignore any patch versions
        update-types: ["version-update:semver-patch"]

Como definir uma estratégia de controle de versão

Por padrão, Dependabot tenta aumentar o requisito mínimo de versão para dependências que identifica como aplicativos e amplia os requisitos de versão permitidos para incluir as versões novas e antigas para dependências identificadas como bibliotecas.

Você pode alterar essa estratégia padrão. Para obter mais informações, confira versioning-strategy em Referência de opções do Dependabot.

Neste exemplo, Dependabot aumentarão o requisito mínimo de versão para corresponder à nova versão para aplicativos e bibliotecas.

YAML
version: 2
updates:
  - package-ecosystem: npm
    directory: "/"
    schedule:
      interval: daily
    # Increase the minimum version for all npm dependencies
    versioning-strategy: increase

Neste exemplo, o Dependabot aumentará o requisito mínimo de versão se a restrição original não permitir a nova versão.

YAML
version: 2
updates:
- package-ecosystem: pip
  directory: "/"
  schedule:
    interval: daily
  open-pull-requests-limit: 20
  rebase-strategy: "disabled"
  # Increase the version requirements for npm
  # only when required
  versioning-strategy: increase-if-necessary

Como atualizar dependências de fornecedores

Você pode instruir Dependabot a fornecer dependências ao atualizá-las.

Dependabot mantém automaticamente dependências de fornecedor para módulos Go e você pode configurar o Bundler para também atualizar dependências de fornecedor.

Para obter mais informações, confira vendor em Referência de opções do Dependabot.

Neste exemplo, vendor é definido como true para o Bundler, o que significa que Dependabot também manterá dependências para o Bundler armazenadas no diretório vendor/cache no repositório.

YAML
version: 2
updates:
- package-ecosystem: bundler
  directory: "/"
  # Vendoring Bundler
  vendor: true
  schedule:
    interval: weekly
    day: saturday
  open-pull-requests-limit: 10