Skip to main content
Publicamos actualizaciones para la documentación con frecuencia y es posible que aún se esté traduciendo esta página. Para obtener la información más reciente, consulta la documentación en inglés.

Opciones de configuración para el archivo dependabot.yml

La información detallada para todas las opciones que puedes utilizar para personalizar como el Dependabot mantiene tus repositorios.

Quién puede usar esta característica

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

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ónObligatorioActualizaciones de seguridadActualizaciones de versionesDescripción
package-ecosystemXXAdministrador de paquetes a utilizar
directoryXXUbicación de los manifiestos del paquete
schedule.intervalXXQué tan a menudo se revisará si hay actualizaciones
allowXXPersonalizar qué actualizaciones se permitirán
assigneesXXLos asignados a configurar en las solicitudes de extracción
commit-messageXXPreferencias de mensaje de confirmación
enable-beta-ecosystemsXHabilitación de ecosistemas que tienen compatibilidad de nivel beta
ignoreXXIgnorar ciertas dependencias o versiones
insecure-external-code-executionXPermite o rechaza la ejecución de código en los archivos de manifiesto
labelsXXLas etiquetas a configurar en las solicitudes de extracción
milestoneXXHito a configurar en las solicitudes de extracción
open-pull-requests-limitXXLimitar la cantidad de solicitudes de extracción abiertas para las actualizaciones de versión
pull-request-branch-name.separatorXXCambiar el separador para los nombres de rama de la solicitud de extracción
rebase-strategyXXInhabilitar el rebase automático
registriesXLos registros privados a los que puede acceder el Dependabot
reviewersXXLos revisores a configurar en las solicitudes de extracción
schedule.dayXDía de la semana para revisar si hay actualizaciones
schedule.timeXHora del día para revisar si hay actualizaciones (hh:mm)
schedule.timezoneXHuso horario para la hora del día (identificador de zona)
target-branchXRama contra la cual se creará la solicitud de extracción
vendorXActualiza las dependencias delegadas a proveedores o almacenadas en caché
versioning-strategyXXCómo actualizar los requisitos de la versión del manifiesto

Estas opciones caen a groso modo en las siguientes categorías.

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 paquetesEl valor de YAMLVersiones compatiblesLos repositorios privadosRegistros privadosDelegamiento a proveedores
Bundlerbundlerv1, v2
Cargocargov1 (solo Git)
Composercomposerv1, v2
Dockerdockerv1No aplicable
Hexmixv1
elm-packageelmv0.19
submódulo de gitgitsubmoduleNo aplicableNo aplicable
GitHub Actionsgithub-actionsNo aplicableNo aplicable
Módulos de Gogomodv1
GradlegradleNo aplicable
MavenmavenNo aplicable
npmnpmv6, v7, v8
NuGetnuget<= 4.8
pippipv21.1.2
pipenvpip<= 2021-05-29
pip-compilepip6.1.0
poetrypipv1
pubpubv2
Terraformterraform>= 0,13, <= 1,3.xNo aplicable
yarnnpmv1

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 tienen dependencies en el nombre de archivo. Ten 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).

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 intervaloFrecuencia
dailySe ejecuta cada día de la semana, de lunes a viernes.
weeklySe ejecuta una vez a la semana. Predeterminadamente, esto ocurre los lunes. Para modificar este valor, use schedule.day.
monthlySe 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 es groupId: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, usa base/foo/bar/ruby.
  • dependency-type: se usa para permitir actualizaciones de dependencias de tipos específicos.

    Tipos de dependenciaAdministradores de paquete compatiblesPermitir actualizaciones
    directTodoTodas las dependencias definidas explícitamente.
    indirectbundler, pip, composer, cargoLas dependencias de las dependencias directas (también conocidas como sub-dependencias, o dependencias transitorias).
    allTodoTodas las dependencias definidas explícitamente. Para bundler, pip, composer, cargo, también las dependencias de dependencias directas.
    productionbundler, composer, mix, maven, npm, pipSolo las dependencias en el "Grupo de dependencias de producción".
    developmentbundler, 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 y pip.

  • 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 atributo dependency-name es groupId: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, usa 7.*.
  • update-types: se usa para omitir los tipos de actualizaciones, como las actualizaciones major, minor o patch de semver en las actualizaciones de versiones (por ejemplo: version-update:semver-patch omitirá las actualizaciones de revisiones). Puede combinarlo con dependency-name: "*" a fin de omitir elementos update-types concretos para todas las dependencias. Actualmente, version-update:semver-major, version-update:semver-minor y version-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 paquetesRuta de archivo requerida para las dependencias delegadasMás información
bundlerLas dependencias deben estar en el directorio vendor/cache.
Otras rutas de archivos no son compatibles.
Documentación de bundle cache
gomodNingú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ónCompatible conAcción
lockfile-onlybundler, cargo, composer, mix, npm, pipCrear únicamente solicitudes de cambios para actualizar archivos de bloqueo. Ignorar cualquier versión nueva que pudiera requerir cambios en el paquete del manifiesto.
autobundler, cargo, composer, mix, npm, pipSeguir la estrategia predeterminada descrita anteriormente.
widencomposer, npmRelajar el requisito de versión para que incluya tanto la versión nueva como la anterior, cuando sea posible.
increasebundler, composer, npmSiempre incrementar el requisito de versión para que empate con la versión nueva.
increase-if-necessarybundler, composer, npmIncrementar 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
typeIdentifica el tipo de registro. Consulta la lista completa de tipos más adelante.
urlLa 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.
usernameEl nombre de usuario que utilizará el Dependabot para acceder al registro.
passwordUna 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».
keyUna 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».
tokenUna 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-baseEn 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"