Opções de configuração para atualizações de dependências

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

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

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. 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 "Habilitando e desabilitando as atualizações da versão de Dependabot" e "Configurando Atualizações de segurança do Dependabot".

O arquivo dependabot.yml tem duas chaves obrigatórias de nível superior: versãoe atualizações. Opcionalmente, você pode incluir uma chave de registro de nível superior. O arquivo deve começar com a versão: 2.

Opções de configuração para atualizações

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çãoObrigatórioDescrição
package-ecosystemXGerenciador de pacotes para usar
diretórioXLocalização de manifestos de pacotes
schedule.intervalXCom que frequência verificar se há atualizações
allowPersonalizar quais atualizações são permitidas
assigneesResponsáveis por definir pull request
commit-messagePreferências de mensagem do commit
ignoreIgnorar determinadas dependências ou versões
insecure-external-code-executionPermitir ou negar a execução de código nos arquivos de manifesto
etiquetasEtiquetas para definir pull requests
marcoMarcos para definir pull requests
open-pull-requests-limitLimite de número de pull request para atualizações de versão
pull-request-branch-name.separatorAlterar o separador para nomes do branch de pull request
rebase-strategyDesativar o rebasamento automático
registrosRegistros privados que Dependabot pode acessar
reviewersRevisores que irão configurar pull request
schedule.dayDia da semana para verificar se há atualizações
schedule.timeHora do dia para procurar atualizações (hh:mm)
schedule.timezoneFuso horário para hora do dia (identificador de zona)
target-branchBranch para criar pull requests contra
vendorAtualizar dependências de vendor ou armazenadas em cache
versioning-strategyComo 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-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 pacotesValor do YAMLVersões compatíveisRepositórios privadosRegistros privadosDelegação
bundlerbundlerv1, v2
Cargocargov1
Composercomposerv1, v2
Dockerdockerv1
Hexmixv1
elm-packageelmv0.19
git submodulegitsubmoduleN/A (sem versão)
GitHub Actionsgithub-actionsN/A (sem versão)
Módulos Gogomodv1
GradlegradleN/A (sem versão)[1]
MavenmavenN/A (sem versão)[2]
npmnpmv6, v7
NuGetnuget<= 4.8[3]
pippipv21.1.2
pipenvpip<= 2021-05-29
pip-compilepip6.1.0
poetrypipv1
Terraformterraform>= 0.13, <= 1.0
yarnnpmv1

[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.

Para gerentes de pacote como pipenv e poetry, você precisa usar o valor do pip do YAML. 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.

# 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, use schedule.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 atributo dependency-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ênciaSuportado por gestores de pacotesPermite atualizações
    diretaTodasTodas as dependências explicitamente definidas.
    indiretabundler, pip, composer, cargoDependências de dependências diretas (também conhecidas como sub-dependências ou dependências transitórias).
    todosTodasTodas as dependências explicitamente definidas. Para bundler, pip, composer, cargo, também as dependências de dependências diretas.
    produçãobundler, composer, mix, maven, npm, pipApenas dependências no "Grupo de dependência de produção".
    desenvolvimentobundler, 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: "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

  • 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, o prefix é usado apenas para atualizações para dependências no grupo de dependência de Produção. Isto é suportado por: bundler, composer, mix, maven, npm e pip.
  • 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"

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 atributo dependency-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 semver major, minor ou atualizações de atualização de versão (por exemplo: version-update:semver-patch ignorará atualizações de patch). Você pode combinar isso com a dependency-name: "*" para ignorar em update-types específicos para todas as dependências. Atualmente, version-update:semver-major, version-update:semver-minor e version-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 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.

# 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 pacotesCaminho de arquivo necessário para dependências delegadasMais informações
bundlerAs dependências devem estar no diretório vendor/cache.
Outros caminhos de arquivo não são compatíveis.
documentação de bundle cache
gomodNenhuma 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çãoSuportado 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: "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
tipoIdentifica 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, presume-se https://. Dependabot adiciona ou ignora barras à direita, conforme necessário.
nome de usuárioO nome de usuário que Dependabot usa para acessar o registro.
senhaUma 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".
ChaveUma 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".
tokenUma 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-basePara 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}}

Esse documento ajudou você?

Política de Privacidade

Ajude-nos a tornar esses documentos ótimos!

Todos os documentos do GitHub são de código aberto. Você percebeu que algo que está errado ou não está claro? Envie um pull request.

Faça uma contribuição

Ou, aprenda como contribuir.