Sobre a personalização de atualizações de dependências
Depois de habilitar as atualizações de versão, você poderá personalizar como o Dependabot mantém suas dependências adicionando mais opções ao arquivo dependabot.yml
. Por exemplo, você pode:
- Especifique o dia da semana que as solicitações de pull serão abertas para as atualizações de versão:
schedule.day
- Defina revisores, destinatários e etiquetas para cada gerenciador de pacotes:
reviewers
,assignees
elabels
- Crie grupos de dependências (por ecossistema de pacote), para que Dependabot atualize esses grupos em uma única solicitação de pull:
groups
- Defina uma estratégia de controle de versão para as alterações em cada arquivo de manifesto:
versioning-strategy
- Altere o número máximo de solicitações de pull em aberto para as atualizações de versão do padrão de cinco:
open-pull-requests-limit
- Abra as solicitações de pull para as atualizações de versão a fim de direcioná-las para um branch específico, em vez do branch padrão:
target-branch
Para saber mais sobre as opções de configuração, confira "Opções de configuração para o arquivo dependabot.yml".
Quando você atualiza o arquivo dependabot.yml
no seu repositório, o Dependabot executa uma verificação imediata com a nova configuração. Em minutos, você verá uma lista atualizada das dependências na guia Dependabot . Isso poderá demorar mais se o repositório tiver muitas dependências. Você também pode ver novas pull requests para atualizações de versão. Para obter mais informações, confira "Listando dependências configuradas para atualizações da versão".
Impacto das alterações de configuração nas atualizações de segurança
Se você personalizar o arquivo dependabot.yml
, poderá observar algumas alterações nas solicitações de pull geradas para as atualizações de segurança. Essas pull requests são sempre acionadas por uma consultoria de segurança para uma dependência, ao invés da agenda Dependabot. No entanto, elas herdam as configurações relevantes do arquivo dependabot.yml
, a menos que você especifique um branch de destino diferente para as atualizações de versão.
Para ver um exemplo, confira "Como definir rótulos personalizados" abaixo.
Modificando o agendamento
Quando você define um agendamento de atualização daily
, por padrão, o Dependabot verifica se há novas versões às 5h UTC. Use schedule.time
para especificar uma hora alternativa do dia para verificar se há atualizações (formato: hh:mm
).
O exemplo de arquivo dependabot.yml
abaixo expande a configuração do npm para especificar o período em que o Dependabot deve verificar se há atualizações de versão para as dependências.
# `dependabot.yml` file with
# customized schedule for version updates
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
# Check the npm registry for updates at 2am UTC
schedule:
interval: "daily"
time: "02:00"
Configurando revisores e responsáveis
Por padrão, Dependabot levanta todas as pull requests sem revisores ou responsáveis.
Use reviewers
e assignees
para especificar revisores e destinatários para todas as solicitações de pull geradas para um gerenciador de pacotes. Ao especificar uma equipe, você precisa usar o nome completo dela, como se você estivesse @mentioning a equipe (incluindo a organização).
O exemplo de arquivo dependabot.yml
abaixo altera a configuração do npm para que todas as solicitações de pull em aberto com as atualizações de versão e segurança para o npm tenham dois revisores e um destinatário.
# `dependabot.yml` file with
# reviews and an assignee for all npm pull requests
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Raise all npm pull requests with reviewers
reviewers:
- "my-org/team-name"
- "octocat"
# Raise all npm pull requests with an assignee
assignees:
- "user-name"
Definindo etiquetas personalizadas
Por padrão, o Dependabot gera todas as solicitações de pull com o rótulo dependencies
. Se mais de um gerenciador de pacotes for definido, o Dependabot incluirá um rótulo adicional em cada solicitação de pull. Isso indica a linguagem ou o ecossistema em que a solicitação de pull será atualizada, por exemplo, java
para atualizações do Gradle e submodules
para atualizações do Git Submodule. Dependabot cria essas etiquetas padrão automaticamente, conforme necessário no seu repositório.
Use labels
para substituir os rótulos padrão e especificar rótulos alternativos para todas as solicitações de pull geradas para um gerenciador de pacotes. Não é possível criar rótulos no arquivo dependabot.yml
, ou seja, os rótulos alternativos já precisam existir no repositório.
O exemplo de arquivo dependabot.yml
abaixo altera a configuração do npm para que todas as solicitações de pull em aberto com as atualizações de versão e segurança para o npm tenham rótulos personalizados. Ele também altera a configuração do Docker para verificar as atualizações de versão em relação a um branch personalizado e levantar as pull request com etiquetas personalizadas em relação ao branch personalizado. As alterações no Docker não afetarão as pull request de atualização de segurança porque as atualizações de segurança sempre são feitas em relação ao branch padrão.
Observação: o novo target-branch
precisa conter um Dockerfile para atualização, caso contrário, essa alteração terá o efeito de desabilitar as atualizações de versão para o Docker.
# `dependabot.yml` file with
# customized npm configuration
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Raise all npm pull requests with custom labels
labels:
- "npm dependencies"
- "triage-board"
# Keep Docker dependencies up to date
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
# Raise pull requests for Docker version updates
# against the "develop" branch. The Docker configuration
# no longer affects security update pull requests.
target-branch: "develop"
# Use custom labels on pull requests for Docker version updates
labels:
- "Docker dependencies"
- "triage-board"
Agrupamento de Dependabot version updates em uma única solicitação de pull
Por padrão, Dependabot gera uma única solicitação de pull para cada dependência que precisa ser atualizada para uma versão mais recente. Você pode usar groups
para criar conjuntos de dependências (por gerenciador de pacotes), para que Dependabot abra uma única solicitação de pull a fim de atualizar várias dependências ao mesmo tempo.
Você também pode especificar as configurações de agrupamento com base em como as atualizações afetam um ecossistema específico e seguir o controle de versão semântico (SemVer). Isso significa que você pode, por exemplo, agrupar todas as atualizações de aplicação de patch. Esta abordagem ajuda Dependabot a criar o menor número possível de solicitações de pull, além de reduzir as chances de aceitar acidentalmente alterações que possam causar problemas. Se um pacote seguir o SemVer, há uma chance maior (mas não uma garantia) de que atualizações menores e de patch sejam compatíveis com versões anteriores.
Nota: SemVer é um padrão aceito para definir versões de pacotes de software, no formato x.y.z
. Dependabot pressupõe que as versões nesse formato são sempre major.minor.patch
.
Dependabot cria grupos na ordem em que aparecem no arquivo dependabot.yml
. Se uma atualização de dependência puder pertencer a mais de um grupo, ela será atribuída apenas ao primeiro grupo com o qual corresponder.
Só é possível criar grupos de Dependabot version updates. Dependabot security updates não dão suporte a atualizações agrupadas. Além disso, se houver uma solicitação de pull agrupada para um pacote vulnerável, Dependabot security updates sempre tentarão criar uma solicitação de pull separada, mesmo se a solicitação de pull de grupo existente for uma atualização da mesma versão ou uma versão posterior.
Você deve configurar grupos por ecossistema de pacotes.
Exemplo de configurações para groups
Exemplo 1
A configuração do arquivo dependabot.yml
usa as opções patterns
e dependency-type
para incluir dependências específicas no grupo e exclude-patterns
para excluir uma dependência (ou várias dependências) do grupo.
# `dependabot.yml` file using the `dependency-type` option to group updates
# in conjunction with `patterns` and `exclude-patterns`.
groups:
production-dependencies:
dependency-type: "production"
development-dependencies:
dependency-type: "development"
exclude-patterns:
- "rubocop*"
rubocop:
patterns:
- "rubocop*"
Exemplo 2
Um arquivo dependabot.yml
com uma configuração do Bundler personalizada, que foi modificada para criar um grupo de dependências. A configuração especifica patterns
(cadeias de caracteres) que correspondem ao nome de uma dependência (ou várias dependências) para incluir as dependências no grupo.
# `dependabot.yml` file with customized Bundler configuration
# In this example, the name of the group is `dev-dependencies`, and
# only the `patterns` and `exclude-patterns` options are used.
version: 2
updates:
# Keep bundler dependencies up to date
- package-ecosystem: "bundler"
directory: "/"
schedule:
interval: "weekly"
# Create a group of dependencies to be updated together in one pull request
groups:
# Specify a name for the group, which will be used in pull request titles
# and branch names
dev-dependencies:
# Define patterns to include dependencies in the group (based on
# dependency name)
patterns:
- "rubocop" # A single dependency name
- "rspec*" # A wildcard string that matches multiple dependency names
- "*" # A wildcard that matches all dependencies in the package
# ecosystem. Note: using "*" may open a large pull request
# Define patterns to exclude dependencies from the group (based on
# dependency name)
exclude-patterns:
- "gc_ruboconfig"
- "gocardless-*"
Exemplo 3
O arquivo dependabot.yml
é configurado para que todos os pacotes que correspondam ao padrão @angular*
em que a versão mais alta resolvível é minor
ou patch
sejam agrupados. Dependabot criará uma solicitação de pull separada para qualquer pacote que não corresponda ao padrão ou que não seja atualizado para uma versão minor
ou de patch
.
# `dependabot.yml` file using the `update-types` option to group updates.
# Any packages matching the pattern @angular* where the highest resolvable
# version is minor or patch will be grouped together.
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
groups:
angular:
patterns:
- "@angular*"
update-types:
- "minor"
- "patch"
Exemplo 4
O arquivo dependabot.yml
usa uma condição ignore
para excluir atualizações nas versões major
de pacotes @angular*
.
# `dependabot.yml` file using the `update-types` option to group updates
# in conjunction with an `ignore` condition.
# If you do not want updates to `major` versions of `@angular*` packages, you can specify an `ignore` condition
groups:
angular:
patterns:
- "@angular*"
update-types:
- "minor"
- "patch"
ignore:
- dependency-name: "@angular*"
update-types: ["version-update:semver-major"]
Para obter mais informações sobre a configuração de grupos de dependência no arquivo dependabot.yml
, consulte "Opções de configuração para o arquivo dependabot.yml".
Ignoring specific dependencies for Dependabot version updates
Se preferir não adotar as alterações de dependências no projeto, você poderá configurar o Dependabot para ignorar essas dependências ao abrir solicitações de pull para atualizações de versão. 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 "Opções de configuração para o arquivo dependabot.yml". - Use comandos de comentário
@dependabot ignore
em uma solicitação de pull Dependabot para atualizações de versão. Você pode usar comandos de comentário para ignorar atualizações para dependências e versões específicas. Para obter mais informações, confira "Gerenciar pull requests para atualizações de dependências".
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 solicitação de pull.
No caso de solicitações de pull para atualizações de versão 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
Observação: os comandos de comentário @dependabot unignore
só funcionam em solicitações de pull para atualizações de versão agrupadas.
Para obter mais informações, confira "Gerenciar pull requests para atualizações de dependências".
Mais exemplos
Para mais exemplos, confira "Opções de configuração para o arquivo dependabot.yml".