Note: Dependabot security and version updates are currently in private beta and subject to change. Please contact your account management team for instructions on enabling Dependabot updates.
Note: Your site administrator must set up Atualizações de Dependabot for your GitHub Enterprise Server instance before you can use this feature. Para obter mais informações, consulte "Habilitar Dependabot para a sua empresa."
Sobre o arquivo dependabot.yml
O arquivo de configuração do Dependabot , dependabot.yml, usa a sintaxe YAML. Se você não souber o que é YAMLe quiser saber mais, consulte "Aprender a usar YAML em cinco minutos".
Você deve armazenar este arquivo no diretório .github
do seu repositório. Ao adicionar ou atualizar o arquivo dependabot.yml , isso aciona uma verificação imediata de atualizações de versão. Para obter mais informações e um exemplo, consulte "Configurando as atualizações da versão de 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, consulte "Configurando Atualizações de segurança do Dependabot."
O arquivo dependabot.yml tem duas chaves obrigatórias de nível superior: versão
e atualizações
. You can, optionally, include a top-level registries
key. O arquivo deve começar com a versão: 2
.
Opções de configuração para o arquivo dependabot.yml
A chave atualizações
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 o seguinte opções.
Opção | Obrigatório | Security Updates | Version Updates | Descrição |
---|---|---|---|---|
package-ecosystem | X | X | Gerenciador de pacotes para usar | |
diretório | 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 mensagens de commit | |
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 | ||
etiquetas | X | X | Etiquetas para definir pull requests | |
marco | 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 | |
registros | 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ê deve incluir em todas as configurações:
package-ecosystem
,directory
,schedule.interval
. - Opções para personalizar o agendamento da atualização:
schedule.time
,schedule.timezone
,schedule.day
. - Opções para controlar quais dependências são atualizadas:
allow
,ignore
,vendor
. - Opções para adicionar metadata a pull requests:
reviewers
,assignees
,labels
,milestone
. - Opções para alterar o comportamento dos pull requests:
target-branch
,versioning-strategy
,commit-message
,rebase-strategy
,pull-request-branch-name.separator
.
Além disso, a opção open-pull-requests-limite
altera o número máximo de pull requests para atualizações de versão que o Dependabot pode abrir.
Nota: Algumas dessas opções de configuração também podem afetar pull requests levantadas para atualizações de segurança de manifestos vulneráveis do pacote.
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 (verdadeiro a menos que você use target-branch
) e especifica um package-ecosystem
e o directory
para o manifesto vulnerável, as pull requests 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 atualizações de segurança, consulte "Configurando Atualizações de segurança do Dependabot."
package-ecosystem
Obrigatório. Você adiciona um elemento de package-ecosystem
para cada gerenciador de pacotes que você deseja que Dependabot monitore para 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, consulte o vendor
abaixo.
A tabela a seguir mostra, para cada gerenciador de pacotes:
- O valor de 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 compatíveis | Repositórios privados | Registros privados | Delegação |
---|---|---|---|---|---|
bundler | bundler | v1, v2 | ✓ | ✓ | |
Cargo | cargo | v1 | ✓ | ✓ | |
Composer | composer | v1, v2 | ✓ | ✓ | |
Docker | docker | v1 | ✓ | ✓ | |
Hex | mix | v1 | ✓ | ||
elm-package | elm | v0.19 | ✓ | ✓ | |
git submodule | gitsubmodule | N/A (sem versão) | ✓ | ✓ | |
GitHub Actions | github-actions | N/A (sem versão) | ✓ | ✓ | |
Módulos Go | gomod | v1 | ✓ | ✓ | ✓ |
Gradle | gradle | N/A (sem versão)[1] | ✓ | ✓ | |
Maven | maven | N/A (sem versão)[2] | ✓ | ✓ | |
npm | npm | v6, v7, v8 | ✓ | ✓ | |
NuGet | nuget | <= 4.8[3] | ✓ | ✓ | |
pip | pip | v21.1.2 | ✓ | ||
pipenv | pip | <= 2021-05-29 | ✓ | ||
pip-compile | pip | 6.1.0 | ✓ | ||
poetry | pip | v1 | ✓ | ||
Terraform | terraform | >= 0.13, <= 1.2.x | ✓ | ✓ | |
yarn | npm | v1 | ✓ | ✓ |
Tip: For package managers such as pipenv
and poetry
, you need to use the pip
YAML value. Por exemplo, se você usa o poetry
para gerenciar suas dependências do Python e quer que Dependabot monitore seu arquivo de manifesto de dependência para novas versões, use pacote-ecosystem: "pip"
no seu arquivo dependabot.yml.
[1] Dependabot doesn't run Gradle but supports updates to the following files: build.gradle
, build.gradle.kts
(for Kotlin projects), and files included via the apply
declaration that have dependencies
in the filename. Note that apply
does not support apply to
, recursion, or advanced syntaxes (for example, Kotlin's apply
with mapOf
, filenames defined by property).
[2] Dependabot não executa o Maven, mas é compatível com atualizações para arquivos pom.xml
.
[3] Dependabot não executa o NuGet CLI, mas é compatível com a maioria dos recursos até a versão 4.8.
# Configuração básica para três gerenciadores de pacotes
versão: 2
atualizações:
# Manter dependências para o GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
# Manter dependências para npm
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Manter dependências para Composer
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
diretório
Obrigatório. Você deve definir o local dos manifestos dos pacote para cada gerenciador de pacotes (por exemplo, package.json ou Gemfile). Você define o diretório relativo à raiz do repositório para todos os ecossistemas, exceto GitHub Actions. Para GitHub Actions, defina o diretório para /
para verificar os arquivos de fluxo de trabalho em .github/workflows
.
# Especifique o local dos arquivos de manifesto para cada gerenciador de pacotes
versão: 2
atualizações:
- package-ecosystem: "composer"
# Files stored in repository root
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "npm"
# Files stored in `app` directory
directory: "/app"
schedule:
interval: "daily"
- package-ecosystem: "github-actions"
# Workflow files stored in the
# default location of `.github/workflows`
directory: "/"
schedule:
interval: "daily"
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 um horário específico, use schedule.time
e schedule.timezone
.
diariamente
— ocorre em todos os dias de semana, de segunda a sexta.semanal
— ocorre uma vez por semana. Por padrão, ocorre às segundas. Para modificar isso, useschedule.day
.mensal
— ocorre uma vez por mês. Isso é no primeiro dia do mês.
# Definir agendamento de atualização para cada gerenciador de pacotes
versão: 2
atualizações:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Verificar se há atualizações para o GitHub Actions todos os dias de semana
interval: "daily"
- package-ecosystem: "composer"
directory: "/"
schedule:
# Verificar se há atualizações gerenciadas pelo Composer uma vez por semana
interval: "weekly"
Observação: o agendamento
define quando Dependabot tenta realizar uma nova atualização. No entanto, essa não é a única vez que você poderá receber pull requests. As atualizações podem ser acionadas com base em alterações do seu arquivo dependabot.yml
, alterações no(s) seu(s) arquivo(s) de manifesto após uma falha na atualização ou Atualizações de segurança do Dependabot. Para obter mais informações, consulte "Frequência de pull requests de Dependabot" e "Sobre Atualizações de segurança do Dependabot".
allow
Por padrão, todas as dependências que estão explicitamente definidas em um manifesto ou arquivo de bloqueio são mantidas atualizadas. Você pode usar allow
e ignore
para personalizar quais dependências devem manter com as atualizações da versão. Dependabot verifica todas as dependências permitidas e, em seguida, filtra quaisquer dependências ou versões ignoradas. Portanto, uma dependência que seja acompanhada por ambos allow
e ignore
será ignorada.
Use a opção allow
para personalizar quais dependências são atualizadas. Isso se aplica tanto às atualizações de versão quanto de segurança. Você pode usar o seguinte opções:
-
dependency-name
—use 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 atributodependency-name
é:groupId:artifactId
, por exemplo:org.kohsuke:github-api
. -
dependency-type
—use para permitir atualizações para dependências de tipos específicos.Tipos de dependência Suportado por gestores de pacotes Permite atualizações direta
Todas Todas as dependências explicitamente definidas. indireta
bundler
,pip
,composer
,cargo
Dependências de dependências diretas (também conhecidas como sub-dependências ou dependências transitórias). tudo
Todas Todas as dependências explicitamente definidas. Para bundler
,pip
,composer
,cargo
, também as dependências de dependências diretas.produção
bundler
,composer
,mix
,maven
,npm
,pip
Apenas dependências no "Grupo de dependência de produção". desenvolvimento
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: "daily"
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: "daily"
allow:
# Allow both direct and indirect updates for all packages
- dependency-type: "all"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
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 responsáveis individuais para todas as pull requests criadas para um gerenciador de pacotes.
A configuração desta opção também afetará as pull requests 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.
# Especificar responsáveis para pull requests
versão: 2
atualizações:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Adicionar responsáveis
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 suportadas
Observação: O prefixo
e as opções prefixo-desenvolvimento
têm um limite de 15 caracteres.
prefix
especifica um prefixo para todas as mensagens do commit.prefix-development
especifica um prefixo separado para todas as mensagens do commit que atualizam dependências no grupo de dependências de Desenvolvimento. Quando você especificar um valor para esta opção, oprefix
é usado apenas para atualizações para dependências no grupo de dependência de Produção. Isto é suportado por:bundler
,composer
,mix
,maven
,npm
epip
.include: "scope"
especifica que qualquer prefixo é seguido por uma lista das dependências atualizadas no commit.
A configuração desta opção também afetará as pull requests 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: "daily"
commit-message:
# Prefix all commit messages with "npm"
prefix: "npm"
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
# Prefix all commit messages with "Composer"
# include a list of updated dependencies
commit-message:
prefix: "Composer"
include: "scope"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
# 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"
If you use the same configuration as in the example above, bumping the requests
library in the pip
development dependency group will generate a commit message of:
pip dev: bump requests from 1.0.0 to 1.0.1
ignore
Por padrão, todas as dependências que estão explicitamente definidas em um manifesto ou arquivo de bloqueio são mantidas atualizadas. Você pode usar allow
e ignore
para personalizar quais dependências devem manter com as atualizações da versão. Dependabot verifica todas as dependências permitidas e, em seguida, filtra quaisquer dependências ou versões ignoradas. Portanto, uma dependência que seja acompanhada por ambos allow
e ignore
será ignorada.
As dependências podem ser ignoradas adicionando-as a ignore
ou usando o comando @dependabot ignore
em um pull request aberto por Dependabot.
Criar as condições de ignore
a partir de @dependabot ignore
As dependências ignoradas usando o 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
, estas preferências existentes serão consideradas junto com as dependências ingore
na configuração.
Você pode verificar se um repositório armazenou as preferências ignore
ao fazer a pesquisa no repositório por "@dependabot ignore" in:comments
. Se você deseja deixar de ignorar uma dependência ignorada, reabra o pull request.
Para obter mais informações sobre os comandos @dependabot ignore
, consulte Gerenciando pull requests para atualizações de dependências".
Especificando dependências e versões para ignorar
Você pode usar a opção ignore
para personalizar quais dependências são atualizadas. A opção ignore
suporta as seguintes opções.
dependency-name
—use para ignorar atualizações para dependências com nomes correspondentes, opcionalmente usando*
para corresponder a zero ou mais caracteres. Para dependências do Java, o formato do atributodependency-name
é:groupId:artifactId
(por exemplo:org.kohsuke:github-api
).versions
—use para ignorar versões específicas ou intervalos de versões. Se você deseja definir um intervalo, use o padrão pattern para o gerenciador de pacotes (por exemplo:^1.0.0
para npm, ou~> 2.0
para o Bundler).update-types
—use para ignorar tipos de atualizações, como semvermajor
,minor
ouatualizações de atualização de versão
(por exemplo:version-update:semver-patch
ignorará atualizações de patch). Você pode combinar isso com adependency-name: "*"
para ignorar emupdate-types
específicos para todas as dependências. Atualmente,version-update:semver-major
,version-update:semver-minor
eversion-update:semver-patch
são as únicas opções compatíveis. As atualizações de segurança não afetadas por esta configuração.
Se as versões
e update-types
forem usadas em conjunto, Dependabot irá ignorar qualquer atualização em qualquer conjunto.
A configuração desta opção também afetará as pull requests 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: "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"
# For AWS SDK, ignore all patch updates
- dependency-name: "aws-sdk"
update-types: ["version-update:semver-patch"]
Observação: Dependabot só pode executar atualizações de versão no manifesto ou em arquivos de bloqueio se puder acessar todas as dependências do arquivo, ainda que você adicione dependências inacessíveis à opção ignorar
do seu arquivo de configuração. Para obter mais informações, consulte "Gerenciar configurações de segurança e análise para a sua organização" e "Solução de problemas de erros de Dependabot".
insecure-external-code-execution
Gerenciadores de pacotes com os valores depackage-ecossistema
de bundler
, mix
e pip
pode executar o código externo no manifesto como parte do processo de atualização da versão. Isto pode permitir que um pacote comprometido roube credenciais ou obtenha acesso aos registros configurados. Ao adicionar a configuração dos registros
dentro de uma configuração de atualização
, Dependabot impedirá 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 o bundler
, mix
e pip
gerenciadores de pacotes, configurando insecure-external-code-execution
como permitir
.
Você pode negar explicitamente a execução de código externo, independentemente de haver uma configuração de registros
para esta configuração de atualização, definindo inseguro-external-code-execution
como negar
.
# 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"
etiquetas
Por padrão, Dependabot eleva todas as pull requests com o rótulo de dependencies
. Se mais de um gerenciador de pacotes for definido, Dependabot incluirá uma etiqueta adicional em cada pull request. Isto indica qual idioma ou ecossistema a pull request irá atualizar, por exemplo: java
para atualizações Gradle e submodules
para atualizações de submódulos do git. Dependabot cria essas etiquetas padrão automaticamente, conforme necessário no seu repositório.
Use labels
para substituir etiquetas padrão e especificar etiquetas alternativas para todas as pull requests criadas para um gerenciador de pacotes. Se qualquer uma destas etiquetas não for definida no repositório, será ignorado. Para desativar todas as etiquetas, incluindo as etiquetas padrão, use labels: [ ]
.
A configuração desta opção também afetará as pull requests 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.
# Especifique etiquetas para pull requests
versão: 2
atualizações:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Especifique etiquetas para npm pull requests
labels:
- "npm"
- "dependencies"
marco
Use milestone
para associar todas as pull requests levantadas 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, depois de milestone
é o identificador. Por exemplo: https://github.com/<org>/<repo>/milestone/3
.
A configuração desta opção também afetará as pull requests 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.
# Especificar um marco para as pull requests
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Associar pull requests com marco "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. Uma vez que há cinco pull requests abertos, novas solicitações serão bloqueadas até que você faça o merge ou feche alguns dos pull requests aberto, e, após esse peeríodo, novos pull requests poderão ser abertos em atualizações subsequentes. Use open-pull-requests-limit
para alterar este 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: "daily"
# Disable version updates for npm dependencies
open-pull-requests-limit: 0
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
# 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 dependabot
e o gerenciador de pacotes e dependências que são atualizados. 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 um separador diferente. Pode ser um desses: "-"
, _
ou /
. O símbolo de hífen deve estar entre aspas porque, caso contrário, será interpretado como iniciando uma lista YAML vazia.
A configuração desta opção também afetará as pull requests 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: "daily"
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 desativar este comportamento.
Estratégias de rebase disponíveis
disabled
para desabilitar rebasing automático.auto
para usar o comportamento padrão e fazer rebase dos pull requests abertos quando forem detectadas alterações.
A configuração desta opção também afetará as pull requests 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: "daily"
# Disable rebasing for npm pull requests
rebase-strategy: "disabled"
registros
Para permitir que Dependabot acesse um registro de pacote privado ao executar uma atualização de versão, você deverá incluir uma configuração de registros
com a configuração de atualizações
relevante. Pode permitir que todos os registros definidos sejam usados configurando registros
como "*"
. Como alternativa, você pode listar os registros que a atualização pode usar. Para isso, use o nome do registro conforme definido na seção de registros
do arquivo dependabot.yml. Para obter mais informações, consulte "Opções de configuração para registros privados" abaixo.
Para permitir que Dependabot use os gerenciadores de pacote 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, consulte 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 pull requests levantadas para um gerenciador de pacotes. Você deve usar o nome completo da equipe, incluindo a organização, como se você estivesse @mencionando a equipe.
A configuração desta opção também afetará as pull requests 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.
# Especificar revisores para pull requests
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
# Adicionar revisores
reviewers:
- "octocat"
- "my-username"
- "my-org/python-team"
schedule.day
Ao definir um cronograma de atualização semanal
, por padrão, Dependabot verifica 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 procurar atualizações.
Valores suportados
segunda-feira
terça-feira
quarta-feira
quinta-feira
sexta-feira
sábado
domingo
# Especificar o dia para verificações semanais
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Verificar atualizações npm aos domingos
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 um horário alternativo do dia para procurar por atualizações (format: hh:mm
).
# Configurar um horário para verificações
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Verificar atualizações npm às 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 do fuso horário deve ser do banco de dados do fuso horário mantido por iana. Para obter mais informações, consulte lista de fusos horários do banco de dados do tz.
# Especificar o fuso horário para verificações
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
time: "09:00"
# Usar horário padrão do Japão (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 pull requests. 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.
# Especifique um branch não padronizado para pull requests para pip
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
# Criar pull requests para atualizações de versão
# pip contra o branck "desenvolver"
target-branch: "develop"
# Etiquetas em pull requests somente para atualizações de versão
labels:
- "pip dependencies"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Verificar atualizações de npm aos domingos
day: "sunday"
# Etiquetas em pull requests para atualizações de segurança e versão
labels:
- "npm dependencies"
vendor
Use a opção vendor
para dizer Dependabot para dependências de vendor ao atualizá-las. Não use esta opção se você estiver usando o gomod
, uma vez que Dependabot detecta automaticamente o vendoring para esta 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 devem estar no diretório vendor/cache. Outros caminhos de arquivo não são compatíveis. | documentação de bundle cache |
gomod | Nenhuma exigência de caminho (as dependências geralmente estão localizadas no diretório do vendor do diretório) | documentação de 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 gerenciadores de pacotes suportados.
A configuração desta opção também afetará as pull requests 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 | Suportado 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: "daily"
# Update the npm manifest file to relax
# the version requirements
versioning-strategy: widen
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
# Increase the version requirements for Composer
# only when required
versioning-strategy: increase-if-necessary
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
# 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 de registros
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: Os registros privados por trás de firewalls em redes privadas não são compatíveis.
O valor da chave de registros
é uma matriz associativa e cada elemento que consiste de uma chave que identifica um 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 de registros
do arquivo e faz referência a isso na seção atualizações
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 de registro devem conter um tipo
e uma url
, e, de modo geral, uma combinação de nome de usuário
e senha
ou token
.
Option | Descrição |
---|---|
tipo | 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, presume-se https:// . Dependabot adiciona ou ignora barras à direita, conforme necessário. |
nome de usuário | O nome de usuário que Dependabot usa para acessar o registro. |
senha | Uma referência a um segredo de Dependabot que contém a senha para o usuário especificado. Para obter mais informações, consulte "Gerenciar segredos criptografados para o Dependabot". |
Chave | Uma referência a um segredo de Dependabot que contém uma chave de acesso para este registro. Para obter mais informações, consulte "Gerenciar segredos criptografados para o 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, consulte "Gerenciar segredos criptografados para o Dependabot". |
replaces-base | Para registros com type: python-index , se o valor booleano for true , o pip resolverá as dependências usando a URL especificada, em vez da URL base do Índice de Pacotes Python (por padrão https://pypi.org/simple ). |
Cada tipo
de configuração exige que você forneça configurações específicas. 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 tipo
.
composer-repository
O tipo composer-repository
é compatível com 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
O tipo docker-registry
é compatível com 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 extrair do Amazon ECR usando credenciais estáticas do 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
é compatível com o 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
é compatível com organização e com a chave.
registries:
github-hex-org:
type: hex-organization
organization: github
key: ${{secrets.MY_HEX_ORGANIZATION_KEY}}
maven-repository
O tipo maven-repository
é compatível com o 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
é compatível com o nome de usuário e senha ou token.
Ao usar nome de usuário e senha, o seu token de autorização .npmrc
pode conter um base64
condificado e _password
. No entanto, a senha especificada no arquivo de configuração Dependabot deverá 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
é compatível com o nome de usuário e senha ou 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
token: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
python-index
O tipo python-index
é compatível com o nome de usuário e senha ou 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
token: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
replaces-base: true
rubygems-server
O tipo rubygems-server
é compatível com o nome de usuário e senha ou 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
é compatível com um token.
registries:
terraform-example:
type: terraform-registry
url: https://terraform.example.com
token: ${{secrets.MY_TERRAFORM_API_TOKEN}}