Nota: La seguridad y actualizaciones de versión del Dependabot se encuentran actualmente en beta privado y están sujetas a cambios. Por favor, contacta a tu equipo de administración de cuenta para obtener las instrucciones para habilitar las actualizaciones del Dependabot.
Nota: Tu administrador de sitio debe configurar las Actualizaciones del dependabot para tu instancia de GitHub Enterprise Server antes de que puedas utilizar esta característica. Para obtener más información, consulta la sección "Habilitar la Dependabot en tu empresa".
Acerca del archivo dependabot.yml
El archivo de configuración del Dependabot, dependabot.yml, utiliza la sintaxis YAML. Si eres nuevo en YAML y deseas conocer más, consulta "Aprender YAML en cinco minutos".
Debes almacenar este archivo en el directorio .github
de tu repositorio. Cuando agregas o actualizas el archivo dependabot.yml, esto activa una revisión inmediata de las actualizaciones de la versión. For more information and an example, see "Configuring Dependabot version updates."
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, consulta la sección "Configurar las Actualizaciones de seguridad del dependabot".
El archivo dependabot.yml tiene dos claves mandatorias de nivel superior: version
, y updates
. You can, optionally, include a top-level registries
key. El archivo debe comenzar con version: 2
.
Configuration options for the dependabot.yml file
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. Puedes utilizar las siguientes opciones.
Opción | Requerido | Security Updates | Version Updates | Descripción |
---|---|---|---|---|
package-ecosystem | X | X | Administrador de paquetes a utilizar | |
directorio | 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 | |
asignatarios | X | X | Los asignados a configurar en las solicitudes de extracción | |
commit-message | X | X | Commit message preferences | |
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 | ||
etiquetas | X | X | Las etiquetas a configurar en las solicitudes de extracción | |
hito | 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 | ||
revisores | 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 | 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 de configuración esenciales que debes incluir en todas las configuraciones:
package-ecosystem
,directory
,schedule.interval
. - Opciones para personalizar el calendario de actualización:
schedule.time
,schedule.timezone
,schedule.day
. - Las opciones para controlar qué dependencias se actualizarán:
allow
,ignore
,vendor
. - Opciones para agregar metadatos a las solicitudes de extracción:
reviewers
,assignees
,labels
,milestone
. - Opciones para cambiar el comportamiento de las solicitudes de extracción:
target-branch
,versioning-strategy
,commit-message
,rebase-strategy
,pull-request-branch-name.separator
.
Adicionalmente, la opción open-pull-requests-limit
cambia la cantidad máxima de solicitudes de extracción para las actualizaciones de versión que puede abrir el Dependabot.
Nota: Algunas de estas opciones de configuración también pueden afectar a las solicitudes de extracción que se levantan para las actualizaciones de seguridad de los manifiestos delos paquetes vulnerables.
Las actualizaciones de seguridad se levantan para los manifiestos de paquetes vulnerables únicamente en la rama predeterminada. Cuando se establecen las opciones de configuración para la misma rama (como "true" a menos de que utilices target-branch
), y se especifica un package-ecosystem
y directory
para el manifiesto vulnerable, entonces las solicitudes de extracción para las actualizaciones de seguridad utilizan las 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 acerca de las actualizaciones de seguridad, consulta la sección "Configurar Actualizaciones de seguridad del dependabot".
package-ecosystem
Requerido. Agregarás un elemento de package-ecosystem
para cada administrador de paquetes que quieras que monitoree el Dependabot para 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 la sección vendor
a continuación.
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
Administración de paquetes | El valor de YAML | Las versiones compatibles | Los repositorios privados | Registros privados | Delegamiento a proveedores |
---|---|---|---|---|---|
Bundler | bundler | v1, v2 | ✓ | ✓ | |
Cargo | cargo | v1 | ✓ | ✓ | |
Composer | composer | v1, v2 | ✓ | ✓ | |
Docker | docker | v1 | ✓ | ✓ | |
Hex | mix | v1 | ✓ | ||
elm-package | elm | v0.19 | ✓ | ✓ | |
submódulo de git | gitsubmodule | N/A (sin versión) | ✓ | ✓ | |
GitHub Actions | github-actions | N/A (sin versión) | ✓ | ✓ | |
Módulos de Go | gomod | v1 | ✓ | ✓ | ✓ |
Gradle | gradle | N/A (sin versión)[1] | ✓ | ✓ | |
Maven | maven | N/A (sin versión)[2] | ✓ | ✓ | |
npm | npm | v6, v7, v8 | ✓ | ✓ | |
NuGet | nuget | <= 4.8[3] | ✓ | ✓ | |
pip | pip | v21.1.2 | ✓ | ||
pipenv | pip | <= 2021-05-29 | ✓ | ||
pip-compile | pip | 6.1.0 | ✓ | ||
poetry | pip | v1 | ✓ | ||
Terraform | terraform | >= 0.13, <= 1.0 | ✓ | ✓ | |
yarn | npm | v1 | ✓ | ✓ |
Tip: Para los administradores de paquetes tales como pipenv
y poetry
, necesitas utilizar el valor de YAML pip
. 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 nuevas, utiliza package-ecosystem: "pip"
en tu archivo de dependabot.yml.
[1] El Dependabot no ejecuta Gradle pero es compatible con las actualizaciones de los siguientes archivos: build.gradle
, build.gradle.kts
(para los proyectos de Kotlin), y los archivos que se incluye a través de la declaración apply
que tengan dependencies
en el nombre de archivo. Toma en cuenta que apply
no es compatible con apply to
, con la recursión o con las sintaxis avanzadas (por ejemplo, el apply
de Kotlin con mapOf
, que son nombres de archivo que se definen por propiedad).
[2] El Dependabot no ejecuta Maven pero es compatible con las actualizaciones a los archivos pom.xml
.
[3] El Dependabot no ejecuta el CLI de NuGet pero sí es compatible con la mayoría de las características hasta la versión 4.8.
# Basic set up for three package managers
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
# Maintain dependencies for npm
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Maintain dependencies for Composer
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
directorio
Requerido. Debes definir la ubicación de los manifiestos de los paquetes para cada administrador de paquetes (por ejemplo, el 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 GitHub Actions, configura el directorio para que sea /
y así revisar los 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: "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
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 configurar una hora específica, puedes utilizar schedule.time
y schedule.timezone
.
daily
—se ejecuta en cada día de la semana, de Lunes a Viernes.weekly
—se ejecuta una vez cada semana. Predeterminadamente, esto ocurre los lunes. Para modificar esto, utilizaschedule.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"
Note: schedule
define cuando el Dependabot intenta hacer una actualización nueva. Sin embargo, no es la única ocasión en la que podrías recibir solilcitudes de cambio. Las actualizaciones pueden activarse con base en los cambios a tu archivo de dependabot.yml
, los cambios a tus archivo(s) de manifiesto después de una actualización fallida, o las Actualizaciones de seguridad del dependabot. Para obtener más información, consulta las secciones "Frecuencia de las solicitudes de cambio del Dependabot" y "Acerca de las Actualizaciones de seguridad del dependabot".
allow
Predeterminadamente, todas las dependencias que se definen explícitamente en un manifiesto o archivo fijado se mantienen actualizadas. Puedes utilizar allow
e ignore
para personalizar qué dependencias quieres mantener con las actualizaciones de versión. El Dependabot revisa las dependencias permitidas y después filtra cualquier dependencia o versión ignorada. Así que se ignorará cualquier dependencia que empate tanto con allow
como con ignore
.
Utiliza la opción allow
para personalizar qué dependencias se actualizan. Esto aplica tanto a la versión como a las actualizaciones de seguridad. Puedes utilizar las siguientes opciones:
-
dependency-name
—se utiliza para permitir actualizaciones para las dependencias con nombres coincidentes, opcionalmente, utiliza*
para empatar cero o más caracteres. Para las dependencias de Java, el formato del atributodependency-name
es:groupId:artifactId
, por ejemplo:org.kohsuke:github-api
. -
dependency-type
—utilízalo para permitir actualizaciones para dependencias de tipos específicos.Tipos de dependencia Administradores de paquete compatibles Permitir actualizaciones direct
Todas 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
Todas Todas las dependencias definidas explícitamente. Para bundler
,pip
,composer
,cargo
, también las dependencias de las 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: "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"
asignatarios
Utiliza assignees
para especificar a los asignados individuales para todas las solicitudes de extracción levantadas para un administrador de paquete.
Configurar esta opción también afectará a las solicitudes de extracción para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquete, a menos de que utilices target-branch
para revisar las 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: "daily"
# Add assignees
assignees:
- "octocat"
commit-message
Predeterminadamente, el Dependabot intenta detectar tus preferencias de mensajes de confirmación y utiliza patrones similares. Utiliza la opcióncommit-message
para especificar tus preferencias explícitamente.
Opciones compatibles
Note: The prefix
and the prefix-development
options have a 15 character limit.
prefix
especifica un prefijo para todos los mensajes de confirmación.prefix-development
especifica un prefijo separado para todos los mensajes de confirmación que actualizan dependencias en el grupo de dependencias de desarrollo. Cuando especificas un valor para esta opción,prefix
se utiliza únicamente para las actualizaciones a las dependencias en el grupo de dependencias de producción. Esto es compatible con:bundler
,composer
,mix
,maven
,npm
, ypip
.include: "scope"
especifica que cualquier prefijo es sucedido por una lista de dependencias actualizadas en la confirmación.
Configurar esta opción también afectará a las solicitudes de extracción para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquete, a menos de que utilices target-branch
para revisar las actualizaciones de versión en una rama diferente a la predeterminada.
# Customize commit messages
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
commit-message:
# Prefix all commit messages with "npm"
prefix: "npm"
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
# Prefix all commit messages with "Composer"
# include a list of updated dependencies
commit-message:
prefix: "Composer"
include: "scope"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
# Include a list of updated dependencies
# with a prefix determined by the dependency group
commit-message:
prefix: "pip prod"
prefix-development: "pip dev"
include: "scope"
If you use the same configuration as in the example above, bumping the requests
library in the pip
development dependency group will generate a commit message of:
pip dev: bump requests from 1.0.0 to 1.0.1
ignore
Predeterminadamente, todas las dependencias que se definen explícitamente en un manifiesto o archivo fijado se mantienen actualizadas. Puedes utilizar allow
e ignore
para personalizar qué dependencias quieres mantener con las actualizaciones de versión. El Dependabot revisa las dependencias permitidas y después filtra cualquier dependencia o versión ignorada. Así que se ignorará cualquier dependencia que empate tanto con allow
como con ignore
.
Las dependencias pueden ignorarse ya sea agregándolas a ignore
o utilizando el comando @dependabot ignore
en una solicitud de cambios que haya abierto el Dependabot.
Crear condiciones de ignore
desde @dependabot ignore
Las dependencias que se ignoran utilizando el comando @dependabot ignore
se almacenan centralmente para cada administrador de paquete. Si comienzas a ignorar las dependencias en el archivo dependabot.yml
, estas preferencias existentes se consideran junto con las dependencias de ignore
en la configuración.
Puedes verificar si un repositorio tiene preferencias de ignore
almacenadas si buscas "@dependabot ignore" in:comments
en este. 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 acerca de los comandos de @dependabot ignore
, consulta la sección "Administrar las solicitudes de extracción para las actualizaciones de dependencias".
Especificar dependencias y versiones para ignorar
Puedes utilizar la opción ignore
para personalizar qué dependencias se actualizarán. La opción ignore
es compatible con las siguientes opciones.
dependency-name
—se utiliza para ignorar actualizaciones para las dependencias con nombres coincidentes, opcionalmente, utiliza*
para empatar cero o más caracteres. Para las dependencias de Java, el formato del atributodependency-name
es:groupId:artifactId
(por ejemplo:org.kohsuke:github-api
).versions
—se utiliza para ignorar versiones o rangos específicos de las versiones. Si quieres definir un rango, utiliza el patrón estándar del administrador de paquetes (por ejemplo:^1.0.0
para npm, o~> 2.0
para Bundler).update-types
—Se utiliza para ignorar tipos de actualizaciones tales como las de tipomajor
,minor
, opatch
en actualizaciones de versión (por ejemplo:version-update:semver-patch
ignorará las actualizaciones de parche). Puedes combinar esto condependency-name: "*"
para ignorar algúnupdate-types
en particular en todas las dependencias. Actualmente,version-update:semver-major
,version-update:semver-minor
, yversion-update:semver-patch
son las únicas opciones compatibles. Este ajuste no afectará a las actualizaciones de seguridad.
Si las versions
y los update-types
se utilizan juntos, el Dependabot ignorará todas las actualizaciones en cualquiera que se configure.
Configurar esta opción también afectará a las solicitudes de extracción para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquete, a menos de que utilices target-branch
para revisar las 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: "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"]
Nota: El 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, aún si agregas dependencias inaccesibles a la opción ignore
de tu archivo de configuración. Para obtener más información, consulta las secciones "Administrar los ajustes de seguridad y análisis de tu organización" y "Solución de errores del Dependabot".
insecure-external-code-execution
Los administradores de paquetes con los valores bundler
, mix
, y pip
de package-ecosystem
pueden ejecutar el 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. Cuando agregas un ajuste de registries
dentro de una configuración de updates
, el Dependabot prevendrá automáticamente la ejecución de código externo, en cuyo caso, la actualización de versión podría fallar. Puedes elegir ignorar este comportamiento y permitir la ejecución de código externo para los administradores de paquetes bundler
, mix
, y pip
si configuras a insecure-external-code-execution
en allow
.
Puedes negar explícitamente la ejecución de código externo, sin importar si es que hay un ajuste de registries
para esta configuración de actualización, configurando a insecure-external-code-execution
en deny
.
# 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
Predeterminadamente, el Dependabot levanta todas las solicitudes de extracción 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 extracción. Esto indica qué lenguaje o ecosistema actualizará la solicitud de extracción, por ejemplo: java
para las actualizaciones de Gradle submodules
para las actualizaciones de los submódulos de git. El Dependabot crea estas etiquetas predeterminadas automáticamente, de acuerdo lo necesite tu repositorio.
Utiliza labels
para anular las etiquetas predeterminadas y especificar las etiquetas alternas para todas las solicitudes de extracción que se levante para un administrador de paquete. Si ninguna de estas etiquetas se define en el repositorio, entonces se ha ignorado. Para inhabilitar todas las etiquetas, incluyendo aquellas predeterminadas, utiliza labels: [ ]
.
Configurar esta opción también afectará a las solicitudes de extracción para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquete, a menos de que utilices target-branch
para revisar las 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: "daily"
# Specify labels for npm pull requests
labels:
- "npm"
- "dependencies"
hito
Utiliza milestone
para asociar todas las solicitudes de extracción que se han levantado para un administrador de paquete con un hito. Necesitas especificar el identificador numérico del hito y, no así, su etiqueta. Si ves un hito, la parte final de la 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 extracción para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquete, a menos de que utilices target-branch
para revisar las 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: "daily"
# 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 hayan cinco solicitudes de cambio abiertas, las solicitudes nuevas se bloquearán hasta que fusiones o cierres algunas de las sollicitudes abiertas, después de lo cual, las solicitudes de cambiso nuevas pueden abrirse en actualizaciones subsecuentes. Utiliza 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: "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
El Dependabot genera una rama para cada solicitud de extracción. Cada nombre de rama incluye dependabot
, y el administrador de paquete y la dependencia que se actualizaron. Predeterminadamente, estas partes están separadas por un símbolo de /
, por ejemplo: dependabot/npm_and_yarn/next_js/acorn-6.4.1
.
Utiliza pull-request-branch-name.separator
para especificar un separador diferente. Este puede ser alguno de entre: "-"
, _
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 extracción para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquete, a menos de que utilices target-branch
para revisar las 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: "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
Predeterminadamente, elDependabot rebasa automáticamente las solicitudes de cambios abiertas y detecta cualquier cambio en ellas. Utiliza rebase-strategy
para inhabilitar este comportamiento.
Estrategias de rebase disponibles
disabled
para inhabilitar el rebase automático.auto
para utilizar el comportamiento predeterminado y rebasar las solicitudes de cambios abiertas cuando se detecten cambios.
Configurar esta opción también afectará a las solicitudes de extracción para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquete, a menos de que utilices target-branch
para revisar las actualizaciones de versión en una rama diferente a la predeterminada.
# Disable automatic rebasing
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# Disable rebasing for npm pull requests
rebase-strategy: "disabled"
registries
Para permitir que el Dependabot acceda a un registro de paquete privado cuando esté realizando una actualización de versión, debes incluir un ajuste de registries
dentro de la configuración relevante de updates
. Puedes permitir que se utilicen todos los registros definidos si configuras a registries
en "*"
. Como alternativa, puedes listar los registros que puede utilizar la actualización. Para hacerlo, utiliza el nombre del registro como se define en la sección registries
de nivel superior en el archivo dependabot.yml. Para obtener más información, consulta la sección "Opciones de configuración para los registros privados" a continuación.
Para permitir que el Dependabot utilice los administradores de paquetes bundler
, mix
, y pip
para actualizar dependencias en los registros privados, puedes elegir el permitir la ejecución de código externo. Para obtener más información, consulta insecure-external-code-execution
anteriormente.
# 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"
revisores
Utiliza reviewers
para especificar los revisores o equipos individuales de revisores para las solicitudes de extracción que se levantaron para un administrador de paquete. Debes utilizar el nombre completo del equipo, incluyendo la organización, como si lo estuvieras @mencionando.
Configurar esta opción también afectará a las solicitudes de extracción para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquete, a menos de que utilices target-branch
para revisar las 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: "daily"
# Add reviewers
reviewers:
- "octocat"
- "my-username"
- "my-org/python-team"
schedule.day
Cuando configuras una programación de actualizaciones en weekly
, predeterminadamente, Dependabot revisa si hay versiones nuevas los lunes en alguna hora aleatoria para el repositorio. Utiliza schedule.day
para especificar un día alterno para revisar si hay actualizaciones.
Valores compatibles
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. Utiliza schedule.time
para especificar una hora alterna para revisar si hay actualizaciones (formato: hh:mm
).
# Set a time for checks
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
# 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. Utiliza schedule.timezone
para especificar un huso horario alternativo. El identificador de zona debe ser tomado de la base de datos de Husos Horarios que mantiene iana. Para obtener más información, consulta la Lista de bases de datos tz para husos horarios.
# Specify the timezone for checks
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
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. Utiliza target-branch
para especificar una rama diferente para los archivos de manifiesto y para las solicitudes de extracción. 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: "daily"
# 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
Utiliza la opción vendor
para indicar al Dependabot delegar las dependencias a los proveedores cuando se actualicen. No utilices esta opción si estás usando gomod
, ya que el Dependabot detecta la delegación a vendedores automáticamente 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.
Administración 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 archivo no son compatibles. | documentación de bundle cache |
gomod | No hay requisitos de ruta (las dependencias se ubican habitualmente 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.
Utiliza la opción versioning-strategy
para cambiar este comportamiento para los administradores de paquete compatibles.
Configurar esta opción también afectará a las solicitudes de extracción para las actualizaciones de seguridad en los archivos de manifiesto de este administrador de paquete, a menos de que utilices target-branch
para revisar las 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: "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
Opciones de configuración para los registros privados
La clave de nivel superior registries
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: Los registros privados detras de los cortafuegos en las redes privadas no son compatibles.
El valor de la clave registries
es un arreglo asociativo, del cual cada elemento consiste de una clave que identifica un registro en particular y un valor que es un arreglo asociativo que especifica la configuración que se requiere para acceder a dicho registro. El siguiente archivo de dependabot.yml configura un registro que se identifica como dockerhub
en la sección de registries
del archivo y luego lo referencia en la sección de updates
del mismo.
# 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 type
y una url
y, habitualmente, ya sea una combinación de username
y password
o un 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 asumirá que es https:// . El Dependabot agrega o ignora las diagonales iniciales conforme sea necesario. |
nombre de usuario | El nombre de usuario que utilizará el Dependabot para acceder al registro. |
contraseña | Una referencia a un secreto del Dependabot que contenga la contraseña del usuario específico. Para obtener más información, consulta la sección "Administrar los secretos cifrados del Dependabot". |
clave | Una referencia a un secreto del Dependabot que contenga una clave de acceso para este registro. Para obtener más información, consulta la sección "Administrar los secretos cifrados del Dependabot". |
token | Una referencia a un secreto del Dependabot que contenga un token de acceso para este registro. Para obtener más información, consulta la sección "Administrar los secretos cifrados del Dependabot". |
replaces-base | Para los registros con type: python-index , si el valor booleano es true , pip resuleve las dependencias utilizando la URL especificada en vez de la URL base del Índice de Paquetes de Python (que predeterminadamente es https://pypi.org/simple ). |
Cada type
de configuración requiere que proporciones ajustes en particular. Algunos tipos permiten más de una forma de conectarse. Las siguientes secciones proporcionan detalles de las configuraciones que deberías utilizar para cada type
.
composer-repository
El tipo composer-repository
es compatible con nombre de usuario y contraseña.
registries:
composer:
type: composer-repository
url: https://repo.packagist.com/example-company/
username: octocat
password: ${{secrets.MY_PACKAGIST_PASSWORD}}
docker-registry
El tipo docker-registry
es compatible con nombre de usuario y 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 utilizar para extraer información de Amazon ECR utilizando las 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
es compatible con nombre de usuario y 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
es compatible con organizaciones y claves.
registries:
github-hex-org:
type: hex-organization
organization: github
key: ${{secrets.MY_HEX_ORGANIZATION_KEY}}
maven-repository
El tipo maven-repository
es compatible con usuario y 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
es compatible con nombre de usuario y contraseña, o token.
Cuando utilizas un nombre de usuario y contraseña, tu token de autorización de .npmrc
podría contener un _password
cifrado en base64
; sin embargo, la contraseña referenciada en tu archivo de configuración del Dependabot podría ser la contraseña original (descifrada).
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
es compatible con nombre de usuario y contraseña, o 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
El tipo python-index
es compatible con nombre de usuario y contraseña, o 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
El tipo rubygems-server
es compatible con nombre de usuario y contraseña, o 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
es comatible con un token.
registries:
terraform-example:
type: terraform-registry
url: https://terraform.example.com
token: ${{secrets.MY_TERRAFORM_API_TOKEN}}