Skip to main content

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

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

Quem pode usar esse recurso?

Users with write access

Você pode personalizar sua Dependabot configuração para atender às suas necessidades adicionando opções ao arquivo dependabot.yml . Por exemplo, você pode garantir que Dependabot use os arquivos de manifesto do pacote corretos e atualize apenas as dependências que você deseja manter atualizadas.

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, poderá usar directories no 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 você não estiver pronto para adotar alterações de determinadas dependências em seu projeto, poderá configurar Dependabot para ignorar essas dependências quando ele abrir solicitações de pull 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 @dependabot ignore comandos de comentário em uma Dependabot solicitação de pull 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 pacotes de correção

    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 Ignorando versões ou intervalos de 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 comandos de comentário @dependabot unignore. Os @dependabot unignore comandos de comentário permitem que você faça o seguinte comentando uma Dependabot solicitação pull:

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

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

Permitir que dependências específicas sejam atualizadas

Você pode usar allow para informar Dependabot sobre as dependências que 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 somente para as dependências explicitamente definidas em um manifesto (direct dependências). Essa configuração usa allow para dizer Dependabot que queremos que ela mantenha all tipos de dependência. Ou seja, tanto as dependências direct quanto as suas respectivas dependências, que são também conhecidas como dependências indiretas, sub-dependências ou dependências transitórias. Além disso, a configuração instrui Dependabot a ignorar todas as dependências com um nome que corresponda ao padrão org.xwiki.* porque temos um processo diferente para sua manutenção.

Dica

          Dependabot verifica todas as dependências **permitidas** e filtra todas as dependências **ignoradas** . Se uma dependência for correspondente a uma instrução **allow** e **ignore**, então ela será ignorada. Você também pode usar `update-types` em `allow` regras para restringir atualizações a níveis de controle de versão semântico específicos.
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

Permitindo níveis de controle de versão semântico específicos para atualizações

Você pode usar update-types``allow para restringir atualizações a níveis semânticos específicos de controle de versão (SemVer). Isso é útil quando você deseja ser explícito sobre quais tipos de atualizações o Dependabot deve criar solicitações de pull.

Observação

          `update-types` afeta apenas as atualizações de _versão_ , não as atualizações de _segurança_ . As atualizações de segurança sempre serão criadas independentemente da `update-types` configuração.

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

Aqui estão alguns exemplos mostrando como update-types pode ser usado com allow.

  • Para permitir apenas atualizações secundárias e de patch para uma dependência específica, você pode combinar update-types com dependency-name.

    YAML
    version: 2
    updates:
      - package-ecosystem: "maven"
        directory: "/"
        schedule:
          interval: "weekly"
        allow:
          - dependency-name: "io.micrometer:micrometer-core"
            update-types:
              - "version-update:semver-minor"
              - "version-update:semver-patch"
    
  • Para aplicar políticas de atualização diferentes para dependências de produção e desenvolvimento, você pode combinar update-types com dependency-type.

    YAML
    version: 2
    updates:
      - package-ecosystem: "composer"
        directory: "/"
        schedule:
          interval: "monthly"
        allow:
          - dependency-type: "production"
            update-types:
              - "version-update:semver-patch"
          - dependency-type: "development"
            update-types:
              - "version-update:semver-minor"
              - "version-update:semver-patch
    

    Neste exemplo, as dependências de produção receberão apenas atualizações de patch, enquanto as dependências de desenvolvimento receberão atualizações secundárias e de patch.

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"]
    

Especificar o nível de versionamento semântico a ser desconsiderado.

Você pode especificar um ou mais níveis semânticos de controle de versão (SemVer) a serem ignorados usando update-types com ignore. Como alternativa, você pode usar update-types e allow para especificar explicitamente quais níveis de atualização permitir, veja Permitir níveis de controle de versão semântico específicos para atualizações.

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

Neste exemplo, Dependabot 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 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, 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 pip
  # only when required
  versioning-strategy: increase-if-necessary

Como atualizar dependências de fornecedores

Você pode instruir Dependabot para que ele trate das dependências específicas do fornecedor ao atualizá-las.

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

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

Neste exemplo, vendor é definido true como para o Bundler, o que significa que Dependabot também manterá as dependências do Bundler que são armazenadas no diretório fornecedor/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