Nota: Para poder utilizar esta característica, el administrador del sitio debe configurar Dependabot updates para tu instancia de GitHub Enterprise Server. Para obtener más información, vea «Habilitación de Dependabot para la empresa».
Acerca del archivo dependabot.yml
El archivo de configuración de Dependabot, dependabot.yml, utiliza la sintaxis YAML. Si no está familiarizado con YAML y quiere obtener más información, vea "Aprender YAML en cinco minutos".
Debe almacenar este archivo en el directorio .github
del repositorio. Cuando agrega o actualiza el archivo dependabot.yml, se activa una comprobación inmediata de las actualizaciones de la versión. Para obtener más información y un ejemplo, consulta "Configuración de las actualizaciones de versiones de Dependabot".
Cualquier opción que también afecte las actualizaciones de seguridad se utiliza en la siguiente ocasión en que una alerta de seguridad active una solicitud de cambios para una actualización de seguridad. Para obtener más información, vea «Configuración de actualizaciones de seguridad de Dependabot».
Nota: No puedes configurar Dependabot alerts mediante el archivo dependabot.yml.
El archivo dependabot.yml tiene dos claves obligatorias de nivel superior: version
y updates
. Opcionalmente, puedes incluir una clave registries
de nivel superior. El archivo debe comenzar por version: 2
.
Opciones de configuración para el archivo dependabot.yml
La clave updates
de nivel superior es obligatoria. La utilizas para configurar la forma en que el Dependabot actualiza las versiones o las dependencias de tu proyecto. Cada entrada configura los ajustes de actualización para un administrador de paquetes en particular. Puede utilizar las siguientes opciones.
Opción | Obligatorio | Actualizaciones de seguridad | Actualizaciones de versiones | Descripción |
---|---|---|---|---|
package-ecosystem | X | X | Administrador de paquetes a utilizar | |
directory | X | X | Ubicación de los manifiestos del paquete | |
schedule.interval | X | X | Qué tan a menudo se revisará si hay actualizaciones | |
allow | X | X | Personalizar qué actualizaciones se permitirán | |
assignees | X | X | Los asignados a configurar en las solicitudes de extracción | |
commit-message | X | X | Preferencias de mensaje de confirmación | |
enable-beta-ecosystems | X | Habilitación de ecosistemas que tienen compatibilidad de nivel beta | ||
ignore | X | X | Ignorar ciertas dependencias o versiones | |
insecure-external-code-execution | X | Permite o rechaza la ejecución de código en los archivos de manifiesto | ||
labels | X | X | Las etiquetas a configurar en las solicitudes de extracción | |
milestone | X | X | Hito a configurar en las solicitudes de extracción | |
open-pull-requests-limit | X | X | Limitar la cantidad de solicitudes de extracción abiertas para las actualizaciones de versión | |
pull-request-branch-name.separator | X | X | Cambiar el separador para los nombres de rama de la solicitud de extracción | |
rebase-strategy | X | X | Inhabilitar el rebase automático | |
registries | X | Los registros privados a los que puede acceder el Dependabot | ||
reviewers | X | X | Los revisores a configurar en las solicitudes de extracción | |
schedule.day | X | Día de la semana para revisar si hay actualizaciones | ||
schedule.time | X | Hora del día para revisar si hay actualizaciones (hh:mm) | ||
schedule.timezone | X | Huso horario para la hora del día (identificador de zona) | ||
target-branch | X | Rama contra la cual se creará la solicitud de extracción | ||
vendor | X | Actualiza las dependencias delegadas a proveedores o almacenadas en caché | ||
versioning-strategy | X | X | Cómo actualizar los requisitos de la versión del manifiesto |
Estas opciones caen a groso modo en las siguientes categorías.
- Opciones básicas de configuración que debe incluir en todas las configuraciones:
package-ecosystem
,directory
yschedule.interval
. - Opciones para personalizar la programación de la actualización:
schedule.time
,schedule.timezone
yschedule.day
. - Opciones para controlar qué dependencias se actualizan:
allow
,ignore
yvendor
. - Opciones para agregar metadatos a solicitudes de incorporación de cambios:
reviewers
,assignees
,labels
ymilestone
. - Opciones para cambiar el comportamiento de las solicitudes de incorporación de cambios:
target-branch
,versioning-strategy
,commit-message
,rebase-strategy
ypull-request-branch-name.separator
.
Además, la opción open-pull-requests-limit
cambia el número máximo de solicitudes de incorporación de cambios para las actualizaciones de la versión que Dependabot puede abrir.
Nota: Algunas de estas opciones de configuración también pueden afectar a las solicitudes de incorporación de cambios que se generan para las actualizaciones de seguridad de los manifiestos de paquetes vulnerables.
Las actualizaciones de seguridad se levantan para los manifiestos de paquetes vulnerables únicamente en la rama predeterminada. Cuando se establecen opciones de configuración para la misma rama (true, a menos que use target-branch
), y especifique un elemento package-ecosystem
y directory
para el manifiesto vulnerable, las solicitudes de incorporación de cambios para las actualizaciones de seguridad usan opciones relevantes.
En general, las actualizaciones de seguridad utilizan cualquier opción de configuración que afecte las solicitudes de extracción, por ejemplo, agregar metadatos o cambiar su comportamiento. Para obtener más información sobre las actualizaciones de seguridad, consulta "Configuración de actualizaciones de seguridad de Dependabot".
package-ecosystem
Requerido. Agregará un elemento package-ecosystem
para cada administrador de paquetes que quiera que Dependabot supervise a fin de encontrar versiones nuevas. El repositorio también debe contener un archivo bloqueado o de manifiesto de dependencias para cada uno de estos administradores de paquetes. Si quieres habilitar la delegación a proveedores para un administrador de paquetes que sea compatible con ella, las dependencias delegadas a proveedores deben ubicarse en el directorio requerido. Para obtener más información, consulta vendor
a continuación.
Nota: Los propietarios de empresas pueden descargar la versión más reciente de la acción de Dependabot para obtener la mejor cobertura del ecosistema. Para más información sobre la acción e instrucciones sobre cómo descargar la versión más reciente, consulta "Utilizar la última versión de las acciones empaquetadas oficiales".
La siguiente tabla muestra, para cada administrador de paquetes:
- El valor YAML a utilizar en el archivo dependabot.yml
- Las versiones compatibles del administrador de paquetes
- Si las dependencias en los repositorios o registros privados de GitHub son compatibles
- Si las dependencias delegadas a proveedores son compatibles
Administrador de paquetes | El valor de YAML | Versiones compatibles | Los repositorios privados | Registros privados | Delegamiento a proveedores |
---|---|---|---|---|---|
Bundler | bundler | v1, v2 | |||
Cargo | cargo | v1 | (solo Git) | ||
Composer | composer | v1, v2 | |||
Docker | docker | v1 | No aplicable | ||
Hex | mix | v1 | |||
elm-package | elm | v0.19 | |||
submódulo de git | gitsubmodule | No aplicable | No aplicable | ||
GitHub Actions | github-actions | No aplicable | No aplicable | ||
Módulos de Go | gomod | v1 | |||
Gradle | gradle | No aplicable | |||
Maven | maven | No aplicable | |||
npm | npm | v6, v7, v8 | |||
NuGet | nuget | <= 4.8 | |||
pip | pip | v21.1.2 | |||
pipenv | pip | <= 2021-05-29 | |||
pip-compile | pip | 6.1.0 | |||
poetry | pip | v1 | |||
pub | pub | v2 | |||
Terraform | terraform | >= 0,13, <= 1,3.x | No aplicable | ||
yarn | npm | v1 |
Sugerencia: Para los administradores de paquetes tales como pipenv
y poetry
, necesitas utilizar el valor pip
de YAML. Por ejemplo, si utilizas poetry
para administrar tus dependencias de Python y quieres que el Dependabot monitoree el archivo de manifiesto de tu dependencia para encontrar versiones, utiliza package-ecosystem: "pip"
en tu archivo de dependabot.yml.
Cargo
La compatibilidad con el registro privado se aplica a los registros de Git y no incluye los registros de carga.
GitHub Actions
Dependabot solo admite actualizaciones de GitHub Actions mediante la sintaxis de repositorio de GitHub, como actions/checkout@v3. Actualmente no se admiten Docker Hub y direcciones URL del Container registry de GitHub Packages.
Gradle
Dependabot no ejecuta Gradle, pero admite actualizaciones de los siguientes archivos:
build.gradle
,build.gradle.kts
(para proyectos de Kotlin)- Archivos incluidos a través de la
apply
declaración que tienendependencies
en el nombre de archivo. Ten en cuenta queapply
no es compatible conapply to
, con la recursión o con las sintaxis avanzadas (por ejemplo, elapply
de Kotlin conmapOf
, que son nombres de archivo que se definen por propiedad).
Maven
Dependabot no ejecuta Maven, pero admite actualizaciones de los archivos pom.xml
.
CLI de NuGet
Dependabot no ejecuta la CLI de NuGet, pero admite la mayoría de las características hasta la versión 4.8.
pub
Dependabot no realizará una actualización de pub
cuando la versión que intenta actualizar se omite, incluso si hay una versión anterior disponible.
Ejemplo de una configuración básica para tres administradores de paquetes
# 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
Requerido. Debe definir la ubicación de los manifiestos de paquetes para cada administrador de paquetes (por ejemplo, package.json o Gemfile). Tú definierás el directorio relativo a la raíz del repositorio para todos los ecosistemas, menos para GitHub Actions. Para Acciones de GitHub, establezca el directorio en /
para comprobar si hay archivos de flujo de trabajo en .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
Requerido. Debes definir la frecuencia en la que se verificará si hay versiones nuevas para cada administrador de paquetes. Predeterminadamente, el Dependabot asigna una hora aleatoria para aplicar todas las actualizaciones en el archivo de configuración. Para establecer una hora específica, puede usar schedule.time
y schedule.timezone
.
Tipos de intervalo | Frecuencia |
---|---|
daily | Se ejecuta cada día de la semana, de lunes a viernes. |
weekly | Se ejecuta una vez a la semana. Predeterminadamente, esto ocurre los lunes. Para modificar este valor, use schedule.day . |
monthly | Se ejecuta una vez al mes. Esto ocurre en el primer día de cada mes. |
# 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"
Nota: schedule
define cuándo Dependabot intenta hacer una nueva actualización. Sin embargo, no es la única ocasión en la que podrías recibir solilcitudes de cambio. Las actualizaciones pueden desencadenarse basándose en los cambios del archivo dependabot.yml
, los cambios en los archivos de manifiesto después de una actualización errónea o Dependabot security updates. Para obtener más información, vea «Acerca de las actualizaciones a la versión del Dependabot» y «Sobre las actualizaciones de seguridad de Dependabot».
allow
De forma predeterminada, las actualizaciones de versión de Dependabot mantienen actualizadas todas las dependencias definidas explícitamente. Además, las actualizaciones de seguridad Dependabot también actualizan dependencias vulnerables definidas en archivos de bloqueo. Puedes usar allow
y ignore
para personalizar las dependencias que se deben mantener. El Dependabot revisa las dependencias permitidas y después filtra cualquier dependencia o versión ignorada. Por tanto, una dependencia que coincida con allow
y ignore
se omitirá.
Use la opción allow
para personalizar las dependencias que se actualizan. Esto aplica tanto a la versión como a las actualizaciones de seguridad. Puede utilizar las siguientes opciones:
-
dependency-name
: se usa para permitir actualizaciones de dependencias con nombres que coinciden; opcionalmente, se usa*
para que coincida con cero o más caracteres.- Para las dependencias de Java, el formato del atributo
dependency-name
esgroupId:artifactId
; por ejemplo,org.kohsuke:github-api
. - Para las etiquetas de imagen de Docker, el formato es el nombre completo del repositorio; por ejemplo, para una etiqueta de imagen de
<account ID>.dkr.ecr.us-west-2.amazonaws.com/base/foo/bar/ruby:3.1.0-focal-jemalloc
, usabase/foo/bar/ruby
.
- Para las dependencias de Java, el formato del atributo
-
dependency-type
: se usa para permitir actualizaciones de dependencias de tipos específicos.Tipos de dependencia Administradores de paquete compatibles Permitir actualizaciones direct
Todo Todas las dependencias definidas explícitamente. indirect
bundler
,pip
,composer
,cargo
Las dependencias de las dependencias directas (también conocidas como sub-dependencias, o dependencias transitorias). all
Todo Todas las dependencias definidas explícitamente. Para bundler
,pip
,composer
,cargo
, también las dependencias de dependencias directas.production
bundler
,composer
,mix
,maven
,npm
,pip
Solo las dependencias en el "Grupo de dependencias de producción". development
bundler
,composer
,mix
,maven
,npm
,pip
Únicamente las dependencias en el "Grupo de dependencias de desarrollo".
# 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
a fin de especificar usuarios asignados individuales para todas las solicitudes de incorporación de cambios generadas para un administrador de paquetes.
Configurar esta opción también afectará a las solicitudes de incorporación de cambios para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquetes, a menos que use target-branch
para buscar actualizaciones de versión en una rama diferente a la predeterminada.
# Specify assignees for pull requests
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Add assignees
assignees:
- "octocat"
commit-message
Predeterminadamente, el Dependabot intenta detectar tus preferencias de mensajes de confirmación y utiliza patrones similares. Use la opción commit-message
para especificar sus preferencias explícitamente.
Opciones admitidas
Nota: Las opciones prefix
y prefix-development
tienen un límite de caracteres de 15.
-
prefix
especifica un prefijo para todos los mensajes de confirmación. Al especificar un prefijo para los mensajes de confirmación, GitHub agregará automáticamente dos puntos entre el prefijo definido y el mensaje de confirmación, siempre que el prefijo definido termine con una letra, un número, un paréntesis de cierre o un corchete de cierre. Esto significa que, por ejemplo, si finaliza el prefijo con un espacio en blanco, no se agregarán dos puntos entre el prefijo y el mensaje de confirmación. El fragmento de código siguiente proporciona ambos ejemplos en el mismo archivo de configuración. -
prefix-development
especifica un prefijo independiente para todos los mensajes de confirmación que actualizan las dependencias en el grupo de dependencias de desarrollo. Cuando se especifica un valor para esta opción,prefix
se utiliza únicamente para las actualizaciones a las dependencias en el grupo de dependencias de producción. Esta opción es compatible con:bundler
,composer
,mix
,maven
,npm
ypip
. -
include: "scope"
especifica que cualquier prefijo va seguido de una lista de las dependencias actualizadas en la confirmación.
Configurar esta opción también afectará a las solicitudes de incorporación de cambios para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquetes, a menos que use target-branch
para buscar actualizaciones de versión en una rama diferente a la predeterminada.
# 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"
Si usas la misma configuración que en el ejemplo anterior, el aumento de la versión de la biblioteca requests
en el grupo de dependencias de desarrollo pip
generará un mensaje de confirmación como el siguiente:
pip dev: bump requests from 1.0.0 to 1.0.1
ignore
De forma predeterminada, las actualizaciones de versión de Dependabot mantienen actualizadas todas las dependencias definidas explícitamente. Además, las actualizaciones de seguridad Dependabot también actualizan dependencias vulnerables definidas en archivos de bloqueo. Puedes usar allow
y ignore
para personalizar las dependencias que se deben mantener. El Dependabot revisa las dependencias permitidas y después filtra cualquier dependencia o versión ignorada. Por tanto, una dependencia que coincida con allow
y ignore
se omitirá.
Las dependencias se pueden omitir agregándolas a ignore
o mediante el comando @dependabot ignore
en una solicitud de incorporación de cambios que abra Dependabot.
Creación de condiciones ignore
a partir de @dependabot ignore
Las dependencias omitidas mediante el comando @dependabot ignore
se almacenan de forma centralizada para cada administrador de paquetes. Si empieza a omitir las dependencias del archivo dependabot.yml
, estas preferencias existentes se tienen en cuenta junto con las dependencias ignore
de la configuración.
Para comprobar si un repositorio tiene preferencias ignore
almacenadas, busque en el repositorio "@dependabot ignore" in:comments
. Si quieres dejar de ignorar una dependencia que se haya ignorado de esta forma, vuelve a abrir la solicitud de cambios.
Para obtener más información sobre los comandos @dependabot ignore
, consulta "Administrar las solicitudes de extracción para las actualizaciones de dependencia".
Especificar dependencias y versiones para ignorar
Puede usar la opción ignore
para personalizar las dependencias que se actualizan. La opción ignore
admite las siguientes opciones.
dependency-name
: se usa para omitir actualizaciones de dependencias con nombres que coinciden; opcionalmente, se usa*
para que coincida con cero o más caracteres. Para las dependencias de Java, el formato del atributodependency-name
esgroupId:artifactId
; por ejemplo:org.kohsuke:github-api
. Para impedir que Dependabot actualice automáticamente las definiciones de tipo de TypeScript desde DefinitelyTyped, usa@types/*
.versions
: se usa para omitir versiones o rangos específicos de las versiones. Si quieres definir un rango, usa el patrón estándar para el administrador de paquetes. Por ejemplo, para npm, usa^1.0.0
; para Bundler, usa~> 2.0
; para Docker, usa la sintaxis de la versión de Ruby; para NuGet, usa7.*
.update-types
: se usa para omitir los tipos de actualizaciones, como las actualizacionesmajor
,minor
opatch
de semver en las actualizaciones de versiones (por ejemplo:version-update:semver-patch
omitirá las actualizaciones de revisiones). Puede combinarlo condependency-name: "*"
a fin de omitir elementosupdate-types
concretos para todas las dependencias. Actualmente,version-update:semver-major
,version-update:semver-minor
yversion-update:semver-patch
son las únicas opciones admitidas. Este ajuste no afectará a las actualizaciones de seguridad.
Si versions
y update-types
se usan de forma conjunta, Dependabot omitirá las actualizaciones de cualquiera de los conjuntos.
Configurar esta opción también afectará a las solicitudes de incorporación de cambios para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquetes, a menos que use target-branch
para buscar actualizaciones de versión en una rama diferente a la predeterminada.
# 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"]
Nota: Dependabot solo puede ejecutar actualizaciones de versión en los archivos de bloqueo o de manifiesto si puede acceder a todas las dependencias en estos archivos, incluso si agrega dependencias inaccesibles a la opción ignore
del archivo de configuración. Para obtener más información, vea «Administrar la configuración de seguridad y análisis de su organización» y «Solucionar problemas de los errores del Dependabot».
Nota: Para el ecosistema pub
, Dependabot no realizará una actualización cuando se omita la versión a la que intenta actualizar, incluso si hay disponible una versión anterior.
insecure-external-code-execution
Los administradores de paquetes con los valores bundler
, mix
y pip
de package-ecosystem
pueden ejecutar código externo en el manifiesto como parte del proceso de actualización de la versión. Esto podría permitir que un paquete que se haya puesto en riesgo borre las credenciales u obtenga acceso a los registros configurados. Al agregar un valor registries
en una configuración updates
, Dependabot impide automáticamente la ejecución de código externo, en cuyo caso se puede producir un error en la actualización de la versión. Puede optar por invalidar este comportamiento y permitir la ejecución de código externo para los administradores de paquetes bundler
, mix
y pip
estableciendo insecure-external-code-execution
en 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"
Si defines una configuración de registries
para permitir que Dependabot acceda a un registro de paquetes privado y establece insecure-external-code-execution
en allow
en la misma configuración de updates
, la ejecución de código externo que se produce solo tendrá acceso a los administradores de paquetes de los registros asociados a esa configuración de updates
. No se permite el acceso a ninguno de los registros definidos en la configuración de registries
de nivel superior.
En este ejemplo, el archivo de configuración permite que Dependabot acceda al registro de paquetes privados ruby-github
. En la misma configuración de updates
, insecure-external-code-execution
se establece en allow
, lo que significa que el código ejecutado mediante dependencias solo tendrá acceso al registro de ruby-github
y no al de 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"
Puede denegar explícitamente la ejecución de código externo, independientemente de si hay un valor de registries
para esta configuración de actualización, estableciendo insecure-external-code-execution
en deny
.
labels
De manera predeterminada, Dependabot genera todas las solicitudes de incorporación de cambios con la etiqueta dependencies
. Si se define más de un administrador de paquetes, Dependabot incluye una etiqueta adicional en cada una de las solicitudes de incorporación de cambios. Esto indica qué lenguaje o ecosistema actualizará la solicitud de incorporación de cambios, por ejemplo: java
para las actualizaciones de Gradle y submodules
para las actualizaciones de los submódulos de Git. El Dependabot crea estas etiquetas predeterminadas automáticamente, de acuerdo lo necesite tu repositorio.
Utilice labels
a fin de anular las etiquetas predeterminadas y especificar etiquetas alternas para todas las solicitudes de incorporación de cambios que se hayan generado para un administrador de paquetes. Si ninguna de estas etiquetas se define en el repositorio, entonces se ha ignorado.
Para deshabilitar todas las etiquetas, incluidas las predeterminadas, use labels: [ ]
.
Configurar esta opción también afectará a las solicitudes de incorporación de cambios para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquetes, a menos que use target-branch
para buscar actualizaciones de versión en una rama diferente a la predeterminada.
# 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
a fin de asociar todas las solicitudes de incorporación de cambios generadas para un administrador de paquetes con un hito. Necesitas especificar el identificador numérico del hito y, no así, su etiqueta. Si ve un hito, la parte final de la dirección URL de la página, después de milestone
, es el identificador. Por ejemplo: https://github.com/<org>/<repo>/milestone/3
.
Configurar esta opción también afectará a las solicitudes de incorporación de cambios para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquetes, a menos que use target-branch
para buscar actualizaciones de versión en una rama diferente a la predeterminada.
# 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
Predeterminadamente, Dependabot abre un máximo de cinco solicitudes de extracción para las actualizaciones de versión. Una vez que haya cinco solicitudes de incorporación de cambios abiertas desde Dependabot, Dependabot no abrirá ninguna solicitud nueva hasta que algunas de esas solicitudes abiertas se combinen o se cierren. Use open-pull-requests-limit
para cambiar este límite. Esto también proporciona una forma simple de inhabilitar temporalmente las actualizaciones de versión para un administrador de paquete.
Esta opción no tiene impacto en las actualizaciones de seguridad que tienen un límite separado e interno de diez solicitudes de extracción abiertas.
# 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
El Dependabot genera una rama para cada solicitud de extracción. Cada nombre de rama incluye dependabot
, así como el administrador de paquetes y la dependencia que se actualizan. De manera predeterminada, estas partes están separadas por un símbolo /
, por ejemplo: dependabot/npm_and_yarn/next_js/acorn-6.4.1
.
Use pull-request-branch-name.separator
para especificar un separador diferente. Puede ser "-"
, _
o /
. El símbolo de guión debe estar entre comillas porque, de lo contrario, se interpretará como que está declarando una lista YAML vacía.
Configurar esta opción también afectará a las solicitudes de incorporación de cambios para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquetes, a menos que use target-branch
para buscar actualizaciones de versión en una rama diferente a la predeterminada.
# 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
Predeterminadamente, elDependabot rebasa automáticamente las solicitudes de cambios abiertas y detecta cualquier cambio en ellas. Use rebase-strategy
para deshabilitar este comportamiento.
Estrategias de rebase disponibles
auto
para utilizar el comportamiento predeterminado y fusionar mediante cambio de base las solicitudes de incorporación de cambios abiertas cuando se detecten cambios.disabled
para deshabilitar la fusión automática mediante cambio de base.
Cuando rebase-strategy
se establece en auto
, Dependabot intenta fusionar mediante cambio de base las solicitudes de incorporación de cambios en los casos siguientes.
-
Al usar Dependabot version updates, para cualquier solicitud de incorporación de cambios de Dependabot abierta al ejecutarse la programación.
-
Al volver a abrir una solicitud de incorporación de cambios de Dependabot cerrada.
-
Al cambiar el valor de
target-branch
en el archivo de configuración de Dependabot. Para obtener más información sobre este campo, consulta "target-branch
". -
Cuando Dependabot detecta que una solicitud de incorporación de cambios de Dependabot entra en conflicto después de una inserción reciente en la rama de destino.
Nota: Dependabot seguirá fusionando mediante cambio de base una solicitud de incorporación de cambios indefinidamente hasta que la solicitud se cierre, se combine o bien deshabilites Dependabot updates.
Cuando rebase-strategy
se establece en disabled
, Dependabot deja de fusionar mediante cambio de base las solicitudes de incorporación de cambios.
Nota: Este comportamiento solo se aplica a las solicitudes de incorporación de cambios que entran en conflicto con la rama de destino. Dependabot seguirá fusionando mediante cambio de base las solicitudes de incorporación de cambios abiertas antes de que se cambie la configuración de rebase-strategy
, así como las solicitudes de incorporación de cambios que forman parte de una ejecución programada.
Configurar esta opción también afectará a las solicitudes de incorporación de cambios para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquetes, a menos que use target-branch
para buscar actualizaciones de versión en una rama diferente a la predeterminada.
# 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 Dependabot acceda a un registro de paquetes privado al realizar una actualización de versión, debe incluir un valor registries
en la configuración updates
pertinente. Puede permitir que todos los registros definidos se usen estableciendo registries
en "*"
. Como alternativa, puedes listar los registros que puede utilizar la actualización. Para ello, use el nombre del registro tal y como se define en la sección registries
de nivel superior del archivo dependabot.yml. Para obtener más información, consulta más adelante "Opciones de configuración para los registros privados".
Para permitir que Dependabot use los administradores de paquetes bundler
, mix
y pip
a fin de actualizar las dependencias de los registros privados, puede optar por permitir la ejecución de código externo. Para más información, vea la sección insecure-external-code-execution
anterior.
# 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
Utilice reviewers
a fin de especificar los revisores o equipos individuales de revisores para las solicitudes de incorporación de cambios generadas para un administrador de paquetes. Debe utilizar el nombre completo del equipo, incluida la organización, como si estuviera @mentioning al equipo.
Configurar esta opción también afectará a las solicitudes de incorporación de cambios para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquetes, a menos que use target-branch
para buscar actualizaciones de versión en una rama diferente a la predeterminada.
# 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
Cuando configura una programación de actualizaciones de tipo weekly
, de manera predeterminada, Dependabot revisa si hay versiones nuevas los lunes a una hora aleatoria para el repositorio. Use schedule.day
para especificar un día alternativo a fin de buscar actualizaciones.
Valores admitidos
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
Predeterminadamente, el Dependabot revisa si hay nuevas versiones en una hora aleatoria para el repositorio. Use schedule.time
para especificar una hora alternativa y comprobar si hay actualizaciones (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
Predeterminadamente, el Dependabot revisa si hay nuevas versiones en una hora aleatoria para el repositorio. Use schedule.timezone
para especificar una zona horaria alternativa. El identificador de zona horaria debe formar parte de la base de datos Time Zone que mantiene iana. Para obtener más información, vea Lista de zonas horarias de la base de datos 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
Predeterminadamente, el Dependabot revisa si hay archivos de manifiesto en las ramas predeterminadas y levanta solicitudes de extracción para las actualizaciones de versión contra dicha rama. Use target-branch
a fin de especificar una rama diferente para los archivos de manifiesto y las solicitudes de incorporación de cambios. Cuando utilizas esta opción, la configuración para este administrador de paquete ya no afectará ninguna solicitud de extracción que se haya levantado para las actualizaciones de seguridad.
# 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 la opción vendor
para indicar a Dependabot que traslade las dependencias al directorio "vendor" cuando se actualicen. No utilice esta opción si está usando gomod
, ya que Dependabot detecta automáticamente el traslado al directorio "vendor" para esta herramienta.
# 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"
El Dependabot solo actualiza las dependencias delegadas a proveedores que se ubiquen en directorios específicos en un repositorio.
Administrador de paquetes | Ruta de archivo requerida para las dependencias delegadas | Más información |
---|---|---|
bundler | Las dependencias deben estar en el directorio vendor/cache. Otras rutas de archivos no son compatibles. | Documentación de bundle cache |
gomod | Ningún requisito de ruta de acceso (las dependencias normalmente se encuentran en el directorio vendor) | Documentación de go mod vendor |
versioning-strategy
Cuando el Dependabot edita un archivo de manifiesto para actualizar una versión, utiliza las siguientes estrategias generales:
- Para las apps, los requisitos de versión se incrementan, por ejemplo: npm, pip y Composer.
- Para las bibliotecas, el rango de versiones se amplía, por ejemplo: Bundler y Cargo.
Use la opción versioning-strategy
a fin de cambiar este comportamiento para los administradores de paquetes admitidos.
Configurar esta opción también afectará a las solicitudes de incorporación de cambios para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquetes, a menos que use target-branch
para buscar actualizaciones de versión en una rama diferente a la predeterminada.
Estrategias de actualización disponibles
Opción | Compatible con | Acción |
---|---|---|
lockfile-only | bundler , cargo , composer , mix , npm , pip | Crear únicamente solicitudes de cambios para actualizar archivos de bloqueo. Ignorar cualquier versión nueva que pudiera requerir cambios en el paquete del manifiesto. |
auto | bundler , cargo , composer , mix , npm , pip | Seguir la estrategia predeterminada descrita anteriormente. |
widen | composer , npm | Relajar el requisito de versión para que incluya tanto la versión nueva como la anterior, cuando sea posible. |
increase | bundler , composer , npm | Siempre incrementar el requisito de versión para que empate con la versión nueva. |
increase-if-necessary | bundler , composer , npm | Incrementar el requisito de versión únicamente cuando lo requiera la versión nueva. |
# 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
Opciones de configuración para los registros privados
La clave registries
de nivel superior es opcional. Esta te permite especificar los detalles de autenticación que el Dependabot puede utilizar para acceder a los registros de paquetes privados.
Nota: No se admiten registros privados detrás de firewalls en redes privadas.
El valor de la clave registries
es una matriz asociativa, de la cual cada elemento consiste en una clave que identifica un registro en particular y un valor que es una matriz asociativa que especifica la configuración que se requiere para acceder a dicho registro. El siguiente archivo dependabot.yml configura un registro identificado como dockerhub
en la sección registries
del archivo y, después, hace referencia a este en la sección updates
del archivo.
# 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"
Utilizarás las siguientes opciones para especificar la configuración de acceso. La configuración del registro debe contener un elemento type
y otro url
, y normalmente incluirán una combinación username
y password
, o un elemento token
.
Opción | Descripción |
---|---|
type | Identifica el tipo de registro. Consulta la lista completa de tipos más adelante. |
url | La URL a utilizar para acceder a las dependencias en el registro. El protocolo es opcional. Si no se especifica, se da por hecho el valor https:// . El Dependabot agrega o ignora las diagonales iniciales conforme sea necesario. |
username | El nombre de usuario que utilizará el Dependabot para acceder al registro. |
password | Una referencia a un secreto del Dependabot que contenga la contraseña del usuario específico. Para obtener más información, vea «Configuración del acceso a registros privados para Dependabot». |
key | Una referencia a un secreto del Dependabot que contenga una clave de acceso para este registro. Para obtener más información, vea «Configuración del acceso a registros privados para Dependabot». |
token | Una referencia a un secreto del Dependabot que contenga un token de acceso para este registro. Para obtener más información, vea «Configuración del acceso a registros privados para Dependabot». |
replaces-base | En el caso de registros con type: python-index , si el valor booleano es true , pip resuelve las dependencias mediante la dirección URL especificada en lugar de la ubicación base del índice de paquetes de Python (de manera predeterminada, https://pypi.org/simple ). |
Debes proporcionar los valores necesarios para cada objeto type
de configuración que especifiques. Algunos tipos permiten más de una forma de conectarse. En las siguientes secciones se proporcionan detalles de las configuraciones que debería utilizar para cada type
.
composer-repository
El tipo composer-repository
admite el nombre de usuario y la contraseña.
registries:
composer:
type: composer-repository
url: https://repo.packagist.com/example-company/
username: octocat
password: ${{secrets.MY_PACKAGIST_PASSWORD}}
docker-registry
Dependabot funciona con los registros de contenedor que implementan la especificación del registro de contenedor OCI. Para obtener más información, consulta https://github.com/opencontainers/distribution-spec/blob/main/spec.md. Dependabot admite autenticación en registros privados a través de un servicio de token central o una autenticación http básica. Para obtener más información, consulta Especificación de autenticación de tokens en la documentación de Docker y Autenticación de acceso básico en Wikipedia.
El tipo docker-registry
admite el nombre de usuario y la contraseña.
registries:
dockerhub:
type: docker-registry
url: https://registry.hub.docker.com
username: octocat
password: ${{secrets.MY_DOCKERHUB_PASSWORD}}
El tipo docker-registry
también se puede usar para incorporar cambios de Amazon ECR privado mediante credenciales estáticas de 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
El tipo git
admite el nombre de usuario y la contraseña.
registries:
github-octocat:
type: git
url: https://github.com
username: x-access-token
password: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
hex-organization
El tipo hex-organization
admite la organización y la clave.
registries:
github-hex-org:
type: hex-organization
organization: github
key: ${{secrets.MY_HEX_ORGANIZATION_KEY}}
maven-repository
El tipo maven-repository
admite el nombre de usuario y la contraseña.
registries:
maven-artifactory:
type: maven-repository
url: https://artifactory.example.com
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
npm-registry
El tipo npm-registry
admite el nombre de usuario y la contraseña, o el token.
Al usar el nombre de usuario y la contraseña, el token de autenticación de .npmrc
puede contener un elemento _password
codificada en base64
; pero la contraseña a la que se hace referencia en el archivo de configuración de Dependabot debe ser la contraseña original (sin codificar).
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
El tipo nuget-feed
admite el nombre de usuario y la contraseña, o el 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
El tipo python-index
admite el nombre de usuario y la contraseña, o el 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
El tipo rubygems-server
admite el nombre de usuario y la contraseña, o el 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
El tipo terraform-registry
admite un token.
registries:
terraform-example:
type: terraform-registry
url: https://terraform.example.com
token: ${{secrets.MY_TERRAFORM_API_TOKEN}}
Habilitación de la compatibilidad con ecosistemas de nivel beta
enable-beta-ecosystems
De manera predeterminada, Dependabot actualiza los manifiestos de dependencia y los archivos de bloqueo solo para ecosistemas totalmente compatibles. Use la marca enable-beta-ecosystems
para optar por recibir las actualizaciones de ecosistemas que aún no están disponibles con carácter general.
# Configure beta ecosystem
version: 2
enable-beta-ecosystems: true
updates:
- package-ecosystem: "beta-ecosystem"
directory: "/"
schedule:
interval: "weekly"