Observação: 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".
Sobre o arquivo dependabot.yml
O arquivo de configuração do Dependabot, dependabot.yml, usa a sintaxe YAML. Se você não estiver familiarizado com o YAML e quiser saber mais, confira "Aprenda a usar o YAML em cinco minutos".
Você precisa armazenar este arquivo no diretório .github
do seu repositório. Quando você adiciona ou atualiza o arquivo dependabot.yml, isso dispara uma verificação imediata em busca de atualizações da versão. Para obter mais informações e um exemplo, confira "Configurando a versão das atualizações do Dependabot".
Quaisquer opções que também afetem as atualizações de segurança são usadas na próxima vez que um alerta de segurança acionar um pull request para uma atualização de segurança. Para obter mais informações, confira "Configurando as atualizações de segurança do Dependabot".
Observação: não é possível configurar Dependabot alerts usando o arquivo dependabot.yml.
O arquivo dependabot.yml tem duas chaves obrigatórias de nível superior: version
e updates
. Opcionalmente, você pode incluir uma chave registries
de nível superior e/ou uma chave enable-beta-ecosystems
. O arquivo precisa começar com version: 2
.
Opções de configuração do arquivo dependabot.yml
A chave updates
de nível superior é 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. Você pode usar as opções a seguir.
Opção | Obrigatório | Atualizações de Segurança | Atualizações de versão | Descrição |
---|---|---|---|---|
package-ecosystem | X | X | Gerenciador de pacotes para usar | |
directory | X | X | Localização de manifestos de pacotes | |
schedule.interval | X | X | Com que frequência verificar se há atualizações | |
allow | X | X | Personalizar quais atualizações são permitidas | |
assignees | X | X | Responsáveis por definir pull request | |
commit-message | X | X | Preferências de mensagem do commit | |
enable-beta-ecosystems | X | Habilitar ecossistemas que têm suporte em nível beta | ||
ignore | X | X | Ignorar determinadas dependências ou versões | |
insecure-external-code-execution | X | Permitir ou negar a execução de código nos arquivos de manifesto | ||
labels | X | X | Etiquetas para definir pull requests | |
milestone | X | X | Marcos para definir pull requests | |
open-pull-requests-limit | X | X | Limite de número de pull request para atualizações de versão | |
pull-request-branch-name.separator | X | X | Alterar o separador para nomes do branch de pull request | |
rebase-strategy | X | X | Desativar o rebasamento automático | |
registries | X | Registros privados que Dependabot pode acessar | ||
reviewers | X | X | Revisores que irão configurar pull request | |
schedule.day | X | Dia da semana para verificar se há atualizações | ||
schedule.time | X | Hora do dia para procurar atualizações (hh:mm) | ||
schedule.timezone | X | Fuso horário para hora do dia (identificador de zona) | ||
target-branch | X | Branch para criar pull requests contra | ||
vendor | X | Atualizar dependências de vendor ou armazenadas em cache | ||
versioning-strategy | X | X | Como atualizar os requisitos da versão do manifesto |
Estas opções se encaixam, geralmente, nas seguintes categorias.
- Opções de configuração essenciais que você precisa incluir em todas as configurações:
package-ecosystem
,directory
eschedule.interval
. - Opções para personalizar o agendamento de atualizações:
schedule.time
,schedule.timezone
eschedule.day
. - Opções para controlar as dependências que são atualizadas:
allow
,ignore
evendor
. - Opções para adicionar metadados a solicitações de pull:
reviewers
,assignees
,labels
emilestone
. - Opções para alterar o comportamento das solicitações de pull:
target-branch
,versioning-strategy
,commit-message
,rebase-strategy
epull-request-branch-name.separator
.
Além disso, a opção open-pull-requests-limit
altera o número máximo de solicitações de pull para as atualizações de versão que podem ser abertas pelo Dependabot.
Observação: algumas dessas opções de configuração também podem afetar as solicitações de pull geradas para atualizações de segurança de manifestos de pacote vulneráveis.
As atualizações de segurança são geradas para manifestos de pacote vulneráveis apenas no branch padrão. Quando as opções de configuração são definidas para o mesmo branch (true, a menos que você use target-branch
), e especificam um package-ecosystem
e directory
para o manifesto vulnerável, as solicitações de pull para atualizações de segurança usam opções relevantes.
Em geral, as atualizações de segurança usam quaisquer opções de configuração que afetam pull request, por exemplo, adicionando metadados ou alterando seu comportamento. Para obter mais informações sobre as atualizações de segurança, confira "Configurando as atualizações de segurança do Dependabot".
package-ecosystem
Obrigatório. Adicione um elemento package-ecosystem
para cada gerenciador de pacotes que deseja que o Dependabot monitore quanto a novas versões. O repositório também deve conter um manifesto de dependência ou um arquivo de bloqueio para cada um desses gerenciadores de pacotes. Se você quiser habilitar o vendoring para um gerente de pacotes com o qual é compatível, as dependências do vendor devem estar localizadas no diretório necessário. Para obter mais informações, confira vendor
abaixo.
Observação: os proprietários corporativos podem baixar a versão mais recente da ação do Dependabot para obter a melhor cobertura do ecossistema. For more information about the action, and for instructions about how to download the most recent version, see "Usar a versão mais recente das ações agrupadas oficialmente."
A tabela a seguir mostra, para cada gerenciador de pacotes:
- O valor YAML a ser usado no arquivo dependabot.yml
- As versões compatíveis do gerenciador de pacotes
- Se as dependências em repositórios ou registros de GitHub privados são compatíveis
- Se as dependências delegadas são compatíveis
Gerenciador de pacotes | Valor do YAML | Versões com suporte | Repositórios privados | Registros privados | Delegação |
---|---|---|---|---|---|
bundler | bundler | v1, v2 | |||
Cargo | cargo | v1 | (somente git) | ||
Compositor | composer | v1, v2 | |||
Docker | docker | v1 | Não aplicável | ||
Hex | mix | v1 | |||
elm-package | elm | v0.19 | |||
git submodule | gitsubmodule | Não aplicável | Não aplicável | ||
GitHub Actions | github-actions | Não aplicável | Não aplicável | ||
Módulos Go | gomod | v1 | |||
Gradle | gradle | Não aplicável | |||
Maven | maven | Não aplicável | |||
npm | npm | v6, v7, v8 | |||
NuGet | nuget | <= 4.8 | |||
pip | pip | v21.1.2 | |||
pipenv | pip | <= 2021-05-29 | |||
pip-compile | pip | 6.1.0 | |||
poetry | pip | v1 | |||
pub | pub | v2 | |||
Terraform | terraform | >= 0.13, <= 1.3.x | Não aplicável | ||
yarn | npm | v1 |
Dica: para gerenciadores de pacotes como pipenv
e poetry
, você precisa usar o valor pip
do YAML. Por exemplo, se você usar poetry
para gerenciar suas dependências do Python e quiser que o Dependabot monitore seu arquivo de manifesto de dependência em busca de novas versões, use package-ecosystem: "pip"
no arquivo dependabot.yml.
Cargo
O suporte ao registro privado aplica-se a registros git e não inclui registros de carga.
GitHub Actions
O Dependabot dá suporte a atualizações do GitHub Actions apenas usando a sintaxe de repositório do GitHub, como actions/checkout@v3. Não há suporte atualmente para URLs do Docker Hub e de GitHub Packages Container registry.
Gradle
O Dependabot não executa o Gradle, mas dá suporte a atualizações nos seguintes arquivos:
build.gradle
,build.gradle.kts
(para projetos Kotlin)- Arquivos incluídos por meio da declaração
apply
que tenhamdependencies
no nome do arquivo. Observe queapply
não dá suporte aapply to
, recursão ou sintaxes avançadas (por exemplo,apply
do Kotlin commapOf
e nomes de arquivo definidos por propriedade).
Maven
O Dependabot não executa o Maven, mas dá suporte a atualizações em arquivos pom.xml
.
CLI do NuGet
O Dependabot não executa a CLI do NuGet, mas dá suporte à maioria dos recursos até a versão 4.8.
pub
O suporte ao pub
está em versão beta. Todas as limitações conhecidas estão sujeitas a alterações. Observe que o Dependabot:
-
Não dá suporte à atualização de dependências do Git em
pub
. -
Não executará uma atualização quando a versão para a qual ele tenta atualizar for ignorada, mesmo que uma versão anterior esteja disponível.
Para obter informações sobre como configurar o arquivo dependabot.yml para
pub
, confira "Opções de configuração para o arquivo dependabot.yml".
Exemplo de uma configuração básica para três gerenciadores de pacotes
# Basic set up for three package managers
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
# Maintain dependencies for npm
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Maintain dependencies for Composer
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "weekly"
directory
Obrigatório. Você precisa definir o local dos manifestos do pacote para cada gerenciador de pacotes (por exemplo, o package.json ou o Gemfile). Você define o diretório relativo à raiz do repositório para todos os ecossistemas, exceto GitHub Actions. Para o GitHub Actions, defina o diretório como /
para verificar se há arquivos de fluxo de trabalho em .github/workflows
.
# Specify location of manifest files for each package manager
version: 2
updates:
- package-ecosystem: "composer"
# Files stored in repository root
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "npm"
# Files stored in `app` directory
directory: "/app"
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
# Workflow files stored in the
# default location of `.github/workflows`
directory: "/"
schedule:
interval: "weekly"
schedule.interval
Obrigatório. Você deve definir a frequência de verificação das novas versões para cada gerenciador de pacotes. Por padrão, Dependabot atribui aleatoriamente um tempo para aplicar todas as atualizações no arquivo de configuração. Para definir uma hora específica, use schedule.time
e schedule.timezone
.
Tipos de intervalo | Frequência |
---|---|
daily | É executado todos os dias da semana, de segunda à sexta-feira. |
weekly | É executado uma vez por semana. Por padrão, ocorre às segundas. Para modificar isso, use schedule.day . |
monthly | É executado uma vez por mês. Isso é no primeiro dia do mês. |
# Set update schedule for each package manager
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every weekday
interval: "daily"
- package-ecosystem: "composer"
directory: "/"
schedule:
# Check for updates managed by Composer once a week
interval: "weekly"
Observação: schedule
define quando o Dependabot tenta fazer uma nova atualização. No entanto, essa não é a única vez que você poderá receber pull requests. As atualizações podem ser disparadas com base nas alterações do arquivo dependabot.yml
, nas alterações nos arquivos de manifesto após uma falha na atualização ou nas Dependabot security updates. Para obter mais informações, confira "Sobre as atualizações da versão do Dependabot" e "Sobre as atualizações de segurança do Dependabot."
allow
Por padrão, todas as dependências diretas definidas explicitamente em um manifesto são mantidas atualizadas por atualizações de versão do Dependabot. Além disso, as atualizações de segurança do Dependabot também atualizam dependências vulneráveis definidas em arquivos de bloqueio. Use allow
e ignore
para personalizar as dependências que serão mantidas. Dependabot verifica todas as dependências permitidas e, em seguida, filtra quaisquer dependências ou versões ignoradas. Portanto, uma dependência correspondente a um allow
e um ignore
será ignorada.
Use a opção allow
para personalizar as dependências que são atualizadas. Isso se aplica tanto às atualizações de versão quanto de segurança. É possível usar as seguintes opções:
-
dependency-name
– use-a para permitir atualizações para dependências com nomes correspondentes, opcionalmente usando*
para corresponder a zero ou mais caracteres.- Para dependências Java, o formato do atributo
dependency-name
é:groupId:artifactId
, por exemplo:org.kohsuke:github-api
. - Para marcas de imagem do Docker, o formato é o nome completo do repositório. Por exemplo, para uma marca de imagem
<account ID>.dkr.ecr.us-west-2.amazonaws.com/base/foo/bar/ruby:3.1.0-focal-jemalloc
, usebase/foo/bar/ruby
.
- Para dependências Java, o formato do atributo
-
dependency-type
– use-a para permitir atualizações para dependências de tipos específicos.Tipos de dependência Suportado por gestores de pacotes Permitir atualizações direct
Tudo Todas as dependências explicitamente definidas. indirect
bundler
,pip
,composer
,cargo
Dependências de dependências diretas (também conhecidas como sub-dependências ou dependências transitórias). all
Tudo Todas as dependências explicitamente definidas. Para bundler
,pip
,composer
,cargo
, também as dependências de dependências diretas.production
bundler
,composer
,mix
,maven
,npm
,pip
Apenas dependências no "Grupo de dependência de produção". development
bundler
,composer
,mix
,maven
,npm
,pip
Somente dependências no "grupo de dependência do desenvolvimento".
# Use `allow` to specify which dependencies to maintain
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
allow:
# Allow updates for Lodash
- dependency-name: "lodash"
# Allow updates for React and any packages starting "react"
- dependency-name: "react*"
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "weekly"
allow:
# Allow both direct and indirect updates for all packages
- dependency-type: "all"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
allow:
# Allow only direct updates for
# Django and any packages starting "django"
- dependency-name: "django*"
dependency-type: "direct"
# Allow only production updates for Sphinx
- dependency-name: "sphinx"
dependency-type: "production"
assignees
Use assignees
para especificar os destinatários individuais de todas as solicitações de pull geradas para um gerenciador de pacotes.
Se você definir essa opção, isso também afetará as solicitações de pull para atualizações de segurança nos arquivos de manifesto deste gerenciador de pacotes, a menos que você use target-branch
para verificar se há atualizações de versão em um branch não padrão.
# Specify assignees for pull requests
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Add assignees
assignees:
- "octocat"
commit-message
Por padrão, o Dependabot tenta detectar suas preferências de mensagem do commit e usa padrões similares. Use a opção commit-message
para especificar suas preferências explicitamente.
Opções com suporte
Observação: as opções prefix
e prefix-development
têm um limite de caractere de 15.
-
prefix
especifica um prefixo para todas as mensagens do commit. Quando você especificar um prefixo para mensagens de commit, GitHub adicionará automaticamente dois-pontos entre o prefixo definido e a mensagem de commit, desde que o prefixo definido termine com uma letra, número, parênteses de fechamento ou colchete de fechamento. Isso significa que, por exemplo, se você terminar o prefixo com um espaço em branco, não haverá dois-pontos adicionados entre o prefixo e a mensagem de commit. O snippet de código abaixo fornece exemplos de ambos no mesmo arquivo de configuração. -
prefix-development
especifica um prefixo separado para todas as mensagens do commit que atualizam dependências do grupo de dependências de Desenvolvimento. Quando você especifica um valor para essa opção, oprefix
só é usado para atualizações para dependências do grupo de dependências de Produção. Há suporte para isso em:bundler
,composer
,mix
,maven
,npm
epip
. -
include: "scope"
especifica que qualquer prefixo é seguido de uma lista das dependências atualizadas no commit.
Se você definir essa opção, isso também afetará as solicitações de pull para atualizações de segurança nos arquivos de manifesto deste gerenciador de pacotes, a menos que você use target-branch
para verificar se há atualizações de versão em um branch não padrão.
# Customize commit messages
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
commit-message:
# Prefix all commit messages with "npm: "
prefix: "npm"
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
commit-message:
# Prefix all commit messages with "[docker] " (no colon, but a trailing whitespace)
prefix: "[docker] "
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "weekly"
# Prefix all commit messages with "Composer" plus its scope, that is, a
# list of updated dependencies
commit-message:
prefix: "Composer"
include: "scope"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
# Include a list of updated dependencies
# with a prefix determined by the dependency group
commit-message:
prefix: "pip prod"
prefix-development: "pip dev"
include: "scope"
Se você usar a mesma configuração que no exemplo acima, a inclusão da biblioteca requests
no grupo de dependências de desenvolvimento pip
vai gerar esta mensagem de commit:
pip dev: bump requests from 1.0.0 to 1.0.1
ignore
Por padrão, todas as dependências diretas definidas explicitamente em um manifesto são mantidas atualizadas por atualizações de versão do Dependabot. Além disso, as atualizações de segurança do Dependabot também atualizam dependências vulneráveis definidas em arquivos de bloqueio. Use allow
e ignore
para personalizar as dependências que serão mantidas. Dependabot verifica todas as dependências permitidas e, em seguida, filtra quaisquer dependências ou versões ignoradas. Portanto, uma dependência correspondente a um allow
e um ignore
será ignorada.
As dependências podem ser ignoradas pela adição delas a ignore
ou pelo uso do comando @dependabot ignore
em uma solicitação de pull aberta pelo Dependabot.
Como criar condições ignore
com base em @dependabot ignore
As dependências ignoradas com o uso do comando @dependabot ignore
são armazenadas centralmente para cada gerenciador de pacotes. Se você começar a ignorar as dependências no arquivo dependabot.yml
, essas preferências existentes serão consideradas com as dependências ignore
na configuração.
Verifique se um repositório tem preferências ignore
armazenadas pesquisando "@dependabot ignore" in:comments
no repositório. Se você deseja deixar de ignorar uma dependência ignorada, reabra o pull request.
Para obter mais informações sobre os comandos @dependabot ignore
, confira "Gerenciar pull requests para atualizações de dependências".
Especificando dependências e versões para ignorar
Use a opção ignore
para personalizar as dependências que são atualizadas. A ação ignore
dá suporte às opções a seguir.
dependency-name
– use-a para ignorar atualizações para dependências com nomes correspondentes, opcionalmente usando*
para corresponder a zero ou mais caracteres. Para dependências Java, o formato do atributodependency-name
é:groupId:artifactId
(por exemplo:org.kohsuke:github-api
).versions
– use-a para ignorar versões específicas ou intervalos de versões. Caso deseje definir um intervalo, use o padrão do gerenciador de pacotes. Por exemplo, para o npm, use^1.0.0
; para o Bundler, use~> 2.0
; para o Docker, use a sintaxe de versão do Ruby e para o NuGet, use7.*
.update-types
– use-a para ignorar tipos de atualizações, como atualizaçõesmajor
,minor
oupatch
do SemVer, em atualizações de versão (por exemplo:version-update:semver-patch
ignora atualizações de patch). Combine isso comdependency-name: "*"
para ignorarupdate-types
específicos em todas as dependências. Atualmente,version-update:semver-major
,version-update:semver-minor
eversion-update:semver-patch
são as únicas opções com suporte. As atualizações de segurança não afetadas por esta configuração.
Se versions
e update-types
forem usados juntos, o Dependabot vai ignorar qualquer atualização em um dos conjuntos.
Se você definir essa opção, isso também afetará as solicitações de pull para atualizações de segurança nos arquivos de manifesto deste gerenciador de pacotes, a menos que você use target-branch
para verificar se há atualizações de versão em um branch não padrão.
# Use `ignore` to specify dependencies that should not be updated
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
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"
# For AWS SDK, ignore all patch updates
- dependency-name: "aws-sdk"
update-types: ["version-update:semver-patch"]
Observação: o Dependabot só poderá executar atualizações de versão no manifesto ou em arquivos de bloqueio se puder acessar todas as dependências do arquivo, mesmo que você adicione dependências inacessíveis à opção ignore
do arquivo de configuração. Para obter mais informações, confira "Gerenciando as configurações de segurança e de análise da sua organização" e "Solução de problemas do Dependabot."
Observação: para o ecossistema pub
, o Dependabot não executará uma atualização quando a versão para a qual ele tentar atualizar for ignorada, mesmo que uma versão anterior esteja disponível.
insecure-external-code-execution
Os gerenciadores de pacotes com os valores de package-ecosystem
iguais a bundler
, mix
e pip
poderão executar um código externo no manifesto como parte do processo de atualização de versão. Isto pode permitir que um pacote comprometido roube credenciais ou obtenha acesso aos registros configurados. Quando você adiciona uma configuração de registries
dentro de uma configuração de updates
, o Dependabot impede automaticamente a execução de código externo. Neste caso, poderá ocorrer uma falha na atualização da versão. Você pode optar por substituir esse comportamento e permitir a execução de código externo para os gerenciadores de pacotes bundler
, mix
e pip
definindo insecure-external-code-execution
como allow
.
# Allow external code execution when updating dependencies from private registries
version: 2
registries:
ruby-github:
type: rubygems-server
url: https://rubygems.pkg.github.com/octocat/github_api
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
updates:
- package-ecosystem: "bundler"
directory: "/rubygems-server"
insecure-external-code-execution: allow
registries: "*"
schedule:
interval: "monthly"
Se você definir uma configuração registries
para permitir que Dependabot acesse um Registro de pacote privado e definir insecure-external-code-execution
como allow
na mesma configuração updates
, a execução de código externo que ocorrer terá acesso apenas aos gerenciadores de pacotes nos Registros associados a essa configuração updates
. Não há permissão para acesso a nenhum dos registros definidos na configuração registries
de nível superior.
Neste exemplo, o arquivo de configuração permite que Dependabot acessem o Registro de pacote privado ruby-github
. Na mesma configuração updates
, insecure-external-code-execution
é definido como allow
, o que significa que o código executado por dependências acessará apenas o Registro ruby-github
e não o Registro dockerhub
.
# Using `registries` in conjunction with `insecure-external-code-execution:allow`
# in the same `updates` setting
version: 2
registries:
ruby-github:
type: rubygems-server
url: https://rubygems.pkg.github.com/octocat/github_api
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
dockerhub:
type: docker-registry
url: registry.hub.docker.com
username: octocat
password: ${{secrets.DOCKERHUB_PASSWORD}}
updates:
- package-ecosystem: "bundler"
directory: "/rubygems-server"
insecure-external-code-execution: allow
registries:
- ruby-github # only access to registries associated with this ecosystem/directory
schedule:
interval: "monthly"
Negue explicitamente a execução de código externo, independentemente de haver uma configuração de registries
para essa configuração de atualização, definindo insecure-external-code-execution
como deny
.
labels
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. Se qualquer uma destas etiquetas não for definida no repositório, será ignorado.
Para desabilitar todos os rótulos, incluindo os rótulos padrão, use labels: [ ]
.
Se você definir essa opção, isso também afetará as solicitações de pull para atualizações de segurança nos arquivos de manifesto deste gerenciador de pacotes, a menos que você use target-branch
para verificar se há atualizações de versão em um branch não padrão.
# Specify labels for pull requests
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Specify labels for npm pull requests
labels:
- "npm"
- "dependencies"
milestone
Use milestone
para associar todas as solicitações de pull geradas por um gerenciador de pacotes com um marco. Você precisa especificar o identificador numérico do marco e não sua etiqueta. Se você visualizar um marco, a parte final da URL da página, após milestone
, será o identificador. Por exemplo: https://github.com/<org>/<repo>/milestone/3
.
Se você definir essa opção, isso também afetará as solicitações de pull para atualizações de segurança nos arquivos de manifesto deste gerenciador de pacotes, a menos que você use target-branch
para verificar se há atualizações de versão em um branch não padrão.
# Specify a milestone for pull requests
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Associate pull requests with milestone "4"
milestone: 4
open-pull-requests-limit
Por padrão, Dependabot abre um máximo de cinco pull requests para atualizações de versão. Depois que houver cinco solicitações de pull abertas do Dependabot, o Dependabot não abrirá novas solicitações até que algumas dessas solicitações abertas sejam mescladas ou fechadas. Use open-pull-requests-limit
para alterar esse limite. Isto também fornece uma maneira simples de desativar temporariamente as atualizações de versão para um gerenciador de pacotes.
Esta opção não tem impacto em atualizações de segurança, que têm um limite interno separado de dez pull requests abertas.
# Specify the number of open pull requests allowed
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Disable version updates for npm dependencies
open-pull-requests-limit: 0
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
# Allow up to 10 open pull requests for pip dependencies
open-pull-requests-limit: 10
pull-request-branch-name.separator
Dependabot gera um branch para cada pull request. Cada nome de branch inclui o dependabot
e o gerenciador de pacotes e as dependências que são atualizadas. Por padrão, essas partes são separadas por um símbolo /
, por exemplo: dependabot/npm_and_yarn/next_js/acorn-6.4.1
.
Use pull-request-branch-name.separator
para especificar outro separador. Pode ser "-"
, _
ou /
. O símbolo de hífen deve estar entre aspas porque, caso contrário, será interpretado como iniciando uma lista YAML vazia.
Se você definir essa opção, isso também afetará as solicitações de pull para atualizações de segurança nos arquivos de manifesto deste gerenciador de pacotes, a menos que você use target-branch
para verificar se há atualizações de versão em um branch não padrão.
# Specify a different separator for branch names
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
pull-request-branch-name:
# Separate sections of the branch name with a hyphen
# for example, `dependabot-npm_and_yarn-next_js-acorn-6.4.1`
separator: "-"
rebase-strategy
Por padrão, Dependabot faz os rebases dos pull requests abertos automaticamente quando detecta qualquer alteração no pull request. Use rebase-strategy
para desabilitar esse comportamento.
Estratégias de rebase disponíveis
auto
para usar o comportamento padrão e trocar a base das solicitações de pull em aberto quando forem detectadas alterações.disabled
para desabilitar a troca de base automática.
Quando rebase-strategy
é definido como auto
, Dependabot tenta trocar a base de solicitações de pull nos casos a seguir.
-
Quando você usa Dependabot version updates, para qualquer solicitação de pull de Dependabot aberta quando sua agenda é executada.
-
Ao reabrir uma solicitação de pull de Dependabot fechada.
-
Quando você altera o valor de
target-branch
no arquivo de configuração do Dependabot. Para obter mais informações sobre esse tópico, confira "target-branch
". -
Quando Dependabot detecta que uma solicitação de pull do Dependabot está em conflito após um push recente para o branch de destino.
Observação: Dependabot continuará a trocar a base de uma solicitação de pull indefinidamente até que a solicitação de pull seja encerrada, mesclada ou você desabilite Dependabot updates.
Quando rebase-strategy
é definido como disabled
, Dependabot interrompe a troca de base de solicitações de pull.
Observação: esse comportamento só se aplica a solicitações de pull que entram em conflito com o branch de destino. Dependabot continuará a trocar a base de solicitações de pull abertas antes da configuração rebase-strategy
ser alterada e solicitações de pull que fazem parte de uma execução agendada.
Se você definir essa opção, isso também afetará as solicitações de pull para atualizações de segurança nos arquivos de manifesto deste gerenciador de pacotes, a menos que você use target-branch
para verificar se há atualizações de versão em um branch não padrão.
# Disable automatic rebasing
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Disable rebasing for npm pull requests
rebase-strategy: "disabled"
registries
Para permitir que o Dependabot acesse um registro de pacote privado ao executar uma atualização de versão, você precisará incluir uma configuração de registries
com a configuração de updates
relevante. Você pode permitir que todos os registros definidos sejam usados definindo registries
como "*"
. Como alternativa, você pode listar os registros que a atualização pode usar. Para fazer isso, use o nome do registro, conforme definido na seção registries
de nível superior do arquivo dependabot.yml. Para obter mais informações, confira "Opções de configuração para registros privados" abaixo.
Para permitir que o Dependabot use os gerenciadores de pacotes bundler
, mix
e pip
para atualizar dependências em registros privados, você pode optar por permitir a execução de código externo. Para obter mais informações, confira insecure-external-code-execution
acima.
# Allow Dependabot to use one of the two defined private registries
# when updating dependency versions for this ecosystem
version: 2
registries:
maven-github:
type: maven-repository
url: https://maven.pkg.github.com/octocat
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
npm-npmjs:
type: npm-registry
url: https://registry.npmjs.org
username: octocat
password: ${{secrets.MY_NPM_PASSWORD}}
updates:
- package-ecosystem: "gitsubmodule"
directory: "/"
registries:
- maven-github
schedule:
interval: "monthly"
reviewers
Use reviewers
para especificar revisores individuais ou equipes de revisores para todas as solicitações de pull geradas para um gerenciador de pacotes. Use o nome completo da equipe, incluindo a organização, como se estivesse usando @mentioning para a equipe.
Se você definir essa opção, isso também afetará as solicitações de pull para atualizações de segurança nos arquivos de manifesto deste gerenciador de pacotes, a menos que você use target-branch
para verificar se há atualizações de versão em um branch não padrão.
# Specify reviewers for pull requests
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
# Add reviewers
reviewers:
- "octocat"
- "my-username"
- "my-org/python-team"
schedule.day
Ao definir um agendamento de atualização weekly
, por padrão, o Dependabot verifica se há novas versões na segunda-feira em um horário aleatório definido para o repositório. Use schedule.day
para especificar um dia alternativo para verificar se há atualizações.
Valores com suporte
monday
tuesday
wednesday
thursday
friday
saturday
sunday
# Specify the day for weekly checks
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Check for npm updates on Sundays
day: "sunday"
schedule.time
Por padrão, Dependabot verifica se há novas versões em um horário aleatório definido para o repositório. Use schedule.time
para especificar uma hora alternativa do dia para verificar se há atualizações (formato: hh:mm
).
# Set a time for checks
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Check for npm updates at 9am UTC
time: "09:00"
schedule.timezone
Por padrão, Dependabot verifica se há novas versões em um horário aleatório definido para o repositório. Use schedule.timezone
para especificar um fuso horário alternativo. O identificador de fuso horário precisa ser do banco de dados de Fusos Horários mantido pela IANA. Para obter mais informações, confira Lista de fusos horários do banco de dados tz.
# Specify the timezone for checks
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
time: "09:00"
# Use Japan Standard Time (UTC +09:00)
timezone: "Asia/Tokyo"
target-branch
Por padrão, Dependabot verifica se há arquivos de manifesto no branch padrão e levanta pull requests para atualizações de versão contra este branch. Use target-branch
para especificar um branch diferente para arquivos de manifesto e para solicitações de pull. Quando você usa esta opção, as configurações para este gerenciador de pacotes não afetarão mais quaisquer pull requests levantadas para atualizações de segurança.
# Specify a non-default branch for pull requests for pip
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
# Raise pull requests for version updates
# to pip against the `develop` branch
target-branch: "develop"
# Labels on pull requests for version updates only
labels:
- "pip dependencies"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Check for npm updates on Sundays
day: "sunday"
# Labels on pull requests for security and version updates
labels:
- "npm dependencies"
vendor
Use a opção vendor
para instruir o Dependabot a fornecer dependências ao atualizá-las. Não use esta opção se estiver usando o gomod
, pois o Dependabot detecta automaticamente o fornecimento dessa ferramenta.
# Configure version updates for both dependencies defined in manifests and vendored dependencies
version: 2
updates:
- package-ecosystem: "bundler"
# Raise pull requests to update vendored dependencies that are checked in to the repository
vendor: true
directory: "/"
schedule:
interval: "weekly"
Dependabot atualiza apenas as dependências de vendor localizadas em diretórios específicos em um repositório.
Gerenciador de pacotes | Caminho de arquivo necessário para dependências delegadas | Mais informações |
---|---|---|
bundler | As dependências precisam estar no diretório vendor/cache. Outros caminhos de arquivo não são compatíveis. | Documentação do bundle cache |
gomod | Sem requisito de caminho (as dependências geralmente estão localizadas no diretório vendor) | Documentação do go mod vendor |
versioning-strategy
Quando Dependabot edita um arquivo arquivo manifesto para atualizar uma versão, ele usa as seguintes estratégias globais:
- Para apps, os requisitos de versão são aumentados, por exemplo: npm, pip e Composer.
- Para bibliotecas, o intervalo de versões é alargado, por exemplo: Bundler e Cargo.
Use a opção versioning-strategy
para alterar esse comportamento para os gerenciadores de pacotes compatíveis.
Se você definir essa opção, isso também afetará as solicitações de pull para atualizações de segurança nos arquivos de manifesto deste gerenciador de pacotes, a menos que você use target-branch
para verificar se há atualizações de versão em um branch não padrão.
Estratégias de atualização disponíveis
Opção | Com suporte por | Ação |
---|---|---|
lockfile-only | bundler , cargo , composer , mix , npm , pip | Crie apenas pull requests para atualizar arquivos de bloqueio. Ignora quaisquer novas versões que exigiriam mudanças de manifesto do pacote. |
auto | bundler , cargo , composer , mix , npm , pip | Siga a estratégia padrão descrita acima. |
widen | composer , npm | Relaxa o requisito da versão para incluir a versão nova e antiga, quando possível. |
increase | bundler , composer , npm | Sempre aumentar o requisito da versão para corresponder à nova versão. |
increase-if-necessary | bundler , composer , npm | Aumenta o requisito da versão apenas quando exigido pela nova versão. |
# Customize the manifest version strategy
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Update the npm manifest file to relax
# the version requirements
versioning-strategy: widen
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "weekly"
# Increase the version requirements for Composer
# only when required
versioning-strategy: increase-if-necessary
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
# Only allow updates to the lockfile for pip and
# ignore any version updates that affect the manifest
versioning-strategy: lockfile-only
Opções de configuração para registros privados
A chave registries
de nível superior é opcional. Ela permite especificar detalhes de autenticação que Dependabot pode usar para acessar os registros de pacotes privados.
Observação: não há suporte para registros privados protegidos por firewalls em redes privadas.
O valor da chave registries
é uma matriz associativa, e cada elemento dele consiste de uma chave que identifica determinado registro particular e um valor que é uma matriz associativa que especifica as configurações necessárias para acessar esse registro. O arquivo dependabot.yml a seguir configura um registro identificado como dockerhub
na seção registries
do arquivo e referencia isso na seção updates
do arquivo.
# Minimal settings to update dependencies in one private registry
version: 2
registries:
dockerhub: # Define access for a private registry
type: docker-registry
url: registry.hub.docker.com
username: octocat
password: ${{secrets.DOCKERHUB_PASSWORD}}
updates:
- package-ecosystem: "docker"
directory: "/docker-registry/dockerhub"
registries:
- dockerhub # Allow version updates for dependencies in this registry
schedule:
interval: "monthly"
Você utiliza as seguintes opções para especificar as configurações de acesso. As configurações do registro precisam conter um type
e uma url
e, normalmente, uma combinação de username
e password
ou um token
.
Opção | Descrição |
---|---|
type | Identifica o tipo de registro. Veja a lista completa de tipos abaixo. |
url | A URL a ser usada para acessar as dependências deste registro. O protocolo é opcional. Se não for especificado, https:// é assumido. Dependabot adiciona ou ignora barras à direita, conforme necessário. |
username | O nome de usuário que Dependabot usa para acessar o registro. |
password | Uma referência a um segredo de Dependabot que contém a senha para o usuário especificado. Para obter mais informações, confira "Configurando o acesso a registros privados para Dependabot". |
key | Uma referência a um segredo de Dependabot que contém uma chave de acesso para este registro. Para obter mais informações, confira "Configurando o acesso a registros privados para Dependabot". |
token | Uma referência a um segredo de Dependabot que contém um token de acesso para este registro. Para obter mais informações, confira "Configurando o acesso a registros privados para Dependabot". |
replaces-base | Para registros com type: python-index , se o valor booliano é true , o pip resolve as dependências usando a URL especificada em vez de a URL base do Índice de Pacote Python (por padrão, https://pypi.org/simple ). |
Você precisa fornecer as configurações necessárias para cada configuração type
especificada. Alguns tipos permitem mais de uma maneira de conectar-se. As seções a seguir fornecem detalhes das configurações que você deve usar para cada type
.
composer-repository
O tipo composer-repository
dá suporte a nome de usuário e senha.
registries:
composer:
type: composer-repository
url: https://repo.packagist.com/example-company/
username: octocat
password: ${{secrets.MY_PACKAGIST_PASSWORD}}
docker-registry
Dependabot funciona com todos os registros de contêiner que implementam a especificação de registro de contêiner OCI. Para obter mais informações, confira https://github.com/opencontainers/distribution-spec/blob/main/spec.md. Dependabot dá suporte à autenticação em registros privados por meio de um serviço de token central ou autenticação básica HTTP. Para obter mais detalhes, confira Especificação de autenticação de token na documentação do Docker e a Autenticação de acesso básica na Wikipédia.
O tipo docker-registry
dá suporte a nome de usuário e senha.
registries:
dockerhub:
type: docker-registry
url: https://registry.hub.docker.com
username: octocat
password: ${{secrets.MY_DOCKERHUB_PASSWORD}}
O tipo docker-registry
também pode ser usado para pull do Amazon ECR particular usando as credenciais estáticas da AWS.
registries:
ecr-docker:
type: docker-registry
url: https://1234567890.dkr.ecr.us-east-1.amazonaws.com
username: ${{secrets.ECR_AWS_ACCESS_KEY_ID}}
password: ${{secrets.ECR_AWS_SECRET_ACCESS_KEY}}
git
O tipo git
dá suporte a nome de usuário e senha.
registries:
github-octocat:
type: git
url: https://github.com
username: x-access-token
password: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
hex-organization
O tipo hex-organization
dá suporte a organização e chave.
registries:
github-hex-org:
type: hex-organization
organization: github
key: ${{secrets.MY_HEX_ORGANIZATION_KEY}}
maven-repository
O tipo maven-repository
dá suporte a nome de usuário e senha.
registries:
maven-artifactory:
type: maven-repository
url: https://artifactory.example.com
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
npm-registry
O tipo npm-registry
dá suporte a nome de usuário e senha ou a um token.
Quando um nome de usuário e uma senha são usados, o token de autenticação de .npmrc
pode conter uma base64
codificada em _password
. No entanto, a senha referenciada no arquivo de configuração do Dependabot precisará ser a senha original (não codificada).
registries:
npm-npmjs:
type: npm-registry
url: https://registry.npmjs.org
username: octocat
password: ${{secrets.MY_NPM_PASSWORD}} # Must be an unencoded password
registries:
npm-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
nuget-feed
O tipo nuget-feed
dá suporte a nome de usuário e senha ou a um token.
registries:
nuget-example:
type: nuget-feed
url: https://nuget.example.com/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_NUGET_PASSWORD}}
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
python-index
O tipo python-index
dá suporte a nome de usuário e senha ou a um token.
registries:
python-example:
type: python-index
url: https://example.com/_packaging/my-feed/pypi/example
username: octocat
password: ${{secrets.MY_BASIC_AUTH_PASSWORD}}
replaces-base: true
registries:
python-azure:
type: python-index
url: https://pkgs.dev.azure.com/octocat/_packaging/my-feed/pypi/example
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
replaces-base: true
rubygems-server
O tipo rubygems-server
dá suporte a nome de usuário e senha ou a um token.
registries:
ruby-example:
type: rubygems-server
url: https://rubygems.example.com
username: octocat@example.com
password: ${{secrets.MY_RUBYGEMS_PASSWORD}}
registries:
ruby-github:
type: rubygems-server
url: https://rubygems.pkg.github.com/octocat/github_api
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
terraform-registry
O tipo terraform-registry
dá suporte a um token.
registries:
terraform-example:
type: terraform-registry
url: https://terraform.example.com
token: ${{secrets.MY_TERRAFORM_API_TOKEN}}
Como habilitar o suporte para ecossistemas de nível beta
enable-beta-ecosystems
Por padrão, o Dependabot atualiza os manifestos de dependência e bloqueia os arquivos somente para ecossistemas totalmente compatíveis. Use o sinalizador enable-beta-ecosystems
para aceitar atualizações para ecossistemas que ainda não estão em disponibilidade geral.
# Configure beta ecosystem
version: 2
enable-beta-ecosystems: true
updates:
- package-ecosystem: "pub"
directory: "/"
schedule:
interval: "weekly"