Skip to main content
Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais atualizadas, acesse a documentação em inglês.

Opções de configuração para o arquivo dependabot.yml

Informações detalhadas para todas as opções que você pode usar para personalizar como o Dependabot mantém seus repositórios.

Quem pode usar esse recurso

People with write permissions to a repository can configure Dependabot for the repository.

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çãoObrigatórioAtualizações de SegurançaAtualizações de versãoDescrição
package-ecosystemXXGerenciador de pacotes para usar
directoryXXLocalização de manifestos de pacotes
schedule.intervalXXCom que frequência verificar se há atualizações
allowXXPersonalizar quais atualizações são permitidas
assigneesXXResponsáveis por definir pull request
commit-messageXXPreferências de mensagem do commit
enable-beta-ecosystemsXHabilitar ecossistemas que têm suporte em nível beta
ignoreXXIgnorar determinadas dependências ou versões
insecure-external-code-executionXPermitir ou negar a execução de código nos arquivos de manifesto
labelsXXEtiquetas para definir pull requests
milestoneXXMarcos para definir pull requests
open-pull-requests-limitXXLimite de número de pull request para atualizações de versão
pull-request-branch-name.separatorXXAlterar o separador para nomes do branch de pull request
rebase-strategyXXDesativar o rebasamento automático
registriesXRegistros privados que Dependabot pode acessar
reviewersXXRevisores que irão configurar pull request
schedule.dayXDia da semana para verificar se há atualizações
schedule.timeXHora do dia para procurar atualizações (hh:mm)
schedule.timezoneXFuso horário para hora do dia (identificador de zona)
target-branchXBranch para criar pull requests contra
vendorXAtualizar dependências de vendor ou armazenadas em cache
versioning-strategyXXComo atualizar os requisitos da versão do manifesto

Estas opções se encaixam, geralmente, nas seguintes categorias.

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 pacotesValor do YAMLVersões com suporteRepositórios privadosRegistros privadosDelegação
bundlerbundlerv1, v2
Cargocargov1 (somente git)
Compositorcomposerv1, v2
Dockerdockerv1Não aplicável
Hexmixv1
elm-packageelmv0.19
git submodulegitsubmoduleNão aplicávelNão aplicável
GitHub Actionsgithub-actionsNão aplicávelNão aplicável
Módulos Gogomodv1
GradlegradleNão aplicável
MavenmavenNão aplicável
npmnpmv6, v7, v8
NuGetnuget<= 4.8
pippipv21.1.2
pipenvpip<= 2021-05-29
pip-compilepip6.1.0
poetrypipv1
pubpubv2
Terraformterraform>= 0.13, <= 1.3.xNão aplicável
yarnnpmv1

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 tenham dependencies no nome do arquivo. Observe que apply não dá suporte a apply to, recursão ou sintaxes avançadas (por exemplo, apply do Kotlin com mapOf 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 intervaloFrequê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, use base/foo/bar/ruby.
  • dependency-type – use-a para permitir atualizações para dependências de tipos específicos.

    Tipos de dependênciaSuportado por gestores de pacotesPermitir atualizações
    directTudoTodas as dependências explicitamente definidas.
    indirectbundler, pip, composer, cargoDependências de dependências diretas (também conhecidas como sub-dependências ou dependências transitórias).
    allTudoTodas as dependências explicitamente definidas. Para bundler, pip, composer, cargo, também as dependências de dependências diretas.
    productionbundler, composer, mix, maven, npm, pipApenas dependências no "Grupo de dependência de produção".
    developmentbundler, composer, mix, maven, npm, pipSomente 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, o prefix 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 e pip.

  • 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 atributo dependency-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, use 7.*.
  • update-types – use-a para ignorar tipos de atualizações, como atualizações major, minor ou patch do SemVer, em atualizações de versão (por exemplo: version-update:semver-patch ignora atualizações de patch). Combine isso com dependency-name: "*" para ignorar update-types específicos em todas as dependências. Atualmente, version-update:semver-major, version-update:semver-minor e version-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 pacotesCaminho de arquivo necessário para dependências delegadasMais informações
bundlerAs dependências precisam estar no diretório vendor/cache.
Outros caminhos de arquivo não são compatíveis.
Documentação do bundle cache
gomodSem 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çãoCom suporte porAção
lockfile-onlybundler, cargo, composer, mix, npm, pipCrie apenas pull requests para atualizar arquivos de bloqueio. Ignora quaisquer novas versões que exigiriam mudanças de manifesto do pacote.
autobundler, cargo, composer, mix, npm, pipSiga a estratégia padrão descrita acima.
widencomposer, npmRelaxa o requisito da versão para incluir a versão nova e antiga, quando possível.
increasebundler, composer, npmSempre aumentar o requisito da versão para corresponder à nova versão.
increase-if-necessarybundler, composer, npmAumenta 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
typeIdentifica o tipo de registro. Veja a lista completa de tipos abaixo.
urlA 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.
usernameO nome de usuário que Dependabot usa para acessar o registro.
passwordUma 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".
keyUma 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".
tokenUma 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-basePara 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"