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.
# 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"
# 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"
# 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"
# 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 arquivodependabot.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.- Você pode usar comandos de comentário para ignorar atualizações para dependências e versões específicas.
- Para saber mais, confira Gerenciar pull requests para atualizações de dependências.
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" ]
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,)" ]
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"]
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.
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
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" ]
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"]
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.
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"]
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.
version: 2 updates: - package-ecosystem: npm directory: "/" schedule: interval: daily # Increase the minimum version for all npm dependencies versioning-strategy: increase
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 só aumentará o requisito mínimo de versão se a restrição original não permitir a nova versão.
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
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.
version: 2 updates: - package-ecosystem: bundler directory: "/" # Vendoring Bundler vendor: true schedule: interval: weekly day: saturday open-pull-requests-limit: 10
version: 2
updates:
- package-ecosystem: bundler
directory: "/"
# Vendoring Bundler
vendor: true
schedule:
interval: weekly
day: saturday
open-pull-requests-limit: 10