De manera predeterminada, Dependabot abre solicitud de cambios nueva para actualizar cada dependencia. Al habilitar las actualizaciones de seguridad, se abren nuevas solicitudes de cambios cuando se encuentra una dependencia vulnerable. Al configurar actualizaciones de versión para uno o varios ecosistemas, se abren nuevas solicitudes de cambios cuando hay nuevas versiones de dependencias disponibles, con la frecuencia definida en el archivo dependabot.yml
.
Si el proyecto tiene muchas dependencias, es posible que tengas un gran número de solicitudes de cambios de Dependabot para revisar y combinar, lo que puede resultar difícil de administrar rápidamente.
Hay un par de opciones de personalización que puedes implementar para optimizar las solicitudes de cambios de actualización de Dependabot y alinearlas con los procesos, como por ejemplo:
- Controlar la frecuencia con la que Dependabot comprueba las versiones más recientes de las dependencias con
schedule
. - Clasificar por orden de prioridad las actualizaciones significativas con
groups
.
Controlar la frecuencia y los tiempos de las actualizaciones de dependencias
Dependabot ejecuta sus comprobaciones de actualizaciones de versión con la frecuencia que hayas establecido en el archivo de configuración (donde el campo obligatorio, schedule.interval
, se debe establecer en daily
, weekly
o monthly
).
De manera predeterminada, Dependabot equilibra su carga de trabajo asignando un tiempo aleatorio para comprobar y generar solicitudes de cambios para las actualizaciones de dependencias.
Pero para reducir distracciones o para organizar mejor el tiempo y los recursos a fin de revisar y abordar las actualizaciones de versión, es posible que te resulte útil modificar la frecuencia y los tiempos. Por ejemplo, es posible que prefieras que Dependabot ejecute comprobaciones de actualizaciones semanales en lugar de diarias y a una hora que garantice que se generen solicitudes de cambios antes de la sesión de evaluación de prioridades del equipo.
Puedes usar schedule
con una combinación de opciones para modificar la frecuencia y los intervalos de cuándo Dependabot comprueba si hay actualizaciones de versión
En el archivo dependabot.yml
de ejemplo siguiente se cambia la configuración de npm para especificar que Dependabot debe comprobar las actualizaciones de versión para las dependencias de npm todos los días a las 02:00 Japanese Standard Time (UTC +09:00).
# `dependabot.yml` file with # customized schedule for version updates version: 2 updates: # Keep npm dependencies up to date - package-ecosystem: "npm" directory: "/" # Check the npm registry every week on Tuesday at 02:00 Japan Standard Time (UTC +09:00) schedule: interval: "weekly" day: "tuesday" time: "02:00" timezone: "Asia/Tokyo"
# `dependabot.yml` file with
# customized schedule for version updates
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
# Check the npm registry every week on Tuesday at 02:00 Japan Standard Time (UTC +09:00)
schedule:
interval: "weekly"
day: "tuesday"
time: "02:00"
timezone: "Asia/Tokyo"
Consulta también programación.
Clasificar por orden de prioridad las actualizaciones significativas
Puedes usar groups
para consolidar las actualizaciones de varias dependencias en una única solicitud de cambios. Esto te ayuda a centrar el tiempo de revisión en actualizaciones de mayor riesgo y minimizar el tiempo dedicado a revisar las actualizaciones de versiones secundarias. Por ejemplo, puedes combinar actualizaciones de actualizaciones secundarias o de revisión para las dependencias de desarrollo en una única solicitud de cambios y tener un grupo dedicado para actualizaciones de seguridad o versión que afecten a un área clave del código base.
Debes configurar grupos para cada ecosistema de paquetes individual y, después, puedes crear varios grupos para cada ecosistema de paquetes mediante una combinación de criterios:
- Tipo de actualización de Dependabot:
applies-to
- Tipo de dependencia:
dependency-type
. - Nombre de la dependencia:
patterns
yexclude-patterns
- Niveles de versionamiento semántico:
update-types
Para ver todos los valores admitidos para cada criterio, consulta groups
.
En los ejemplos siguientes se presentan varios métodos diferentes para crear grupos de dependencias mediante los criterios.
Ejemplo 1: Tres grupos de actualizaciones de versión
En este ejemplo, el archivo dependabot.yml
:
- Crea tres grupos, denominados "
production-dependencies
", "development-dependencies
" y "rubocop
". - Usa
patterns
ydependency-type
para incluir dependencias en el grupo. - Usa
exclude-patterns
para excluir una dependencia (o varias dependencias) del grupo.
version: 2
updates:
# Keep bundler dependencies up to date
- package-ecosystem: "bundler"
directory: "/"
schedule:
interval: "weekly"
groups:
production-dependencies:
dependency-type: "production"
development-dependencies:
dependency-type: "development"
exclude-patterns:
- "rubocop*"
rubocop:
patterns:
- "rubocop*"
Como resultado:
- Las actualizaciones de versión se agrupan por tipo de dependencia.
- Las dependencias de desarrollo que coinciden con el patrón
rubocop*
se excluyen del grupodevelopment-dependencies
. - En su lugar, las dependencias de desarrollo que coinciden con
rubocop*
se incluirán en el gruporubocop
. Debido al orden, las dependencias de producción que coinciden conrubocop*
se incluirán en el grupoproduction-dependencies
. - Además, todos los grupos solo se aplican a las actualizaciones de versión, ya que la clave
applies-to
está ausente.
Ejemplo 2: Actualizaciones agrupadas con dependencias excluidas
En este ejemplo, el archivo dependabot.yml
:
- Crea un grupo denominado "
support-dependencies
", como parte de una configuración de Bundler personalizada. - Usa
patterns
que coincide con el nombre de una dependencia (o varias dependencias) para incluir dependencias en el grupo. - Usa
exclude-patterns
que coincide con el nombre de una dependencia (o varias dependencias) para excluir dependencias del grupo. - Aplica la agrupación solo a las actualizaciones de versiones, ya que se usa
applies-to: version-updates
.
version: 2
updates:
# Keep bundler dependencies up to date
- package-ecosystem: "bundler"
directories:
- "/frontend"
- "/backend"
- "/admin"
schedule:
interval: "weekly"
# Create a group of dependencies to be updated together in one pull request
groups:
# Specify a name for the group, which will be used in pull request titles
# and branch names
support-dependencies:
# Define patterns to include dependencies in the group (based on
# dependency name)
applies-to: version-updates # Applies the group rule to version updates
patterns:
- "rubocop" # A single dependency name
- "rspec*" # A wildcard string that matches multiple dependency names
- "*" # A wildcard that matches all dependencies in the package
# ecosystem. Note: using "*" may open a large pull request
# Define patterns to exclude dependencies from the group (based on
# dependency name)
exclude-patterns:
- "gc_ruboconfig"
- "gocardless-*"
Como resultado:
- La mayoría de las dependencias del agrupador se consolidan en el grupo
support-dependencies
debido al patrón de comodín ("*"), aparte de - Las dependencias que coinciden con
gc_ruboconfig
ygocardless-*
se excluyen del grupo y Dependabot continúa con la generación de solicitudes de cambios únicas para estas dependencias. Esto puede resultar útil si es necesario revisar las actualizaciones de estas dependencias con un examen más detallado. - Para
support-dependencies
, Dependabot solo generará solicitudes de cambios para actualizaciones de versión.
Ejemplo 3: Solicitudes de cambios individuales para actualizaciones principales y agrupadas para actualizaciones secundarias o de revisión
En este ejemplo, el archivo dependabot.yml
:
- Crea un grupo denominado "
angular
". - Usa
patterns
que coincide con el nombre de una dependencia para incluir dependencias en el grupo. - Usa
update-type
para incluir solo actualizaciones deminor
opatch
en el grupo. - Aplica la agrupación solo a las actualizaciones de versiones, ya que se usa
applies-to: version-updates
.
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
groups:
# Specify a name for the group, which will be used in pull request titles
# and branch names
angular:
applies-to: version-updates
patterns:
- "@angular*"
update-types:
- "minor"
- "patch"
Como resultado:
- Dependabot creará una solicitud de cambios agrupada para todas las dependencias de Angular que tengan una actualización secundaria o de revisión.
- Todas las actualizaciones principales se seguirán generando como solicitudes de cambios individuales.
Ejemplo 4: Solicitudes de cambios agrupadas para actualizaciones secundarias o de revisión, y sin solicitudes de cambios para las actualizaciones principales
En este ejemplo, el archivo dependabot.yml
:
- Crea dos grupos denominados "
angular
" y "minor-and-patch
". - Usa
applies-to
para que el primer grupo solo se aplique a las actualizaciones de versiones y el segundo solo a las actualizaciones de seguridad. - Usa
update-type
para incluir solo actualizaciones deminor
opatch
para ambos grupos. - Usa una condición
ignore
para excluir las actualizaciones de versionesmajor
de paquetes@angular*
.
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
groups:
angular:
applies-to: version-updates
patterns:
- "@angular*"
update-types:
- "minor"
- "patch"
minor-and-patch:
applies-to: security-updates
patterns:
- "@angular*"
update-types:
- "patch"
- "minor"
ignore:
- dependency-name: "@angular*"
update-types: ["version-update:semver-major"]
Como resultado:
- Las actualizaciones de versiones secundarias y de revisión para las dependencias de Angular se agrupan en una única solicitud de cambios.
- Las actualizaciones de versiones secundarias y de revisión para las dependencias de Angular también se agrupan en una única solicitud de cambios.
- Dependabot no abrirá automáticamente solicitudes de cambios para las actualizaciones principales de Angular.