Opciones de configuración para actualizaciones de dependencias

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

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

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. 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 las secciónes "Habilitar e inhabilitar las actualizaciones de versión" y "Configurar las Actualizaciones de seguridad del dependabot".

El archivo dependabot.yml tiene dos claves mandatorias de nivel superior: version, y updates. Opcionalmente, puedes incluir una clave de registries de nivel superior. El archivo debe comenzar con version: 2.

Opciones de configuración para las actualizaciones

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ónRequeridoDescripción
package-ecosystemXAdministrador de paquetes a utilizar
directorioXUbicación de los manifiestos del paquete
schedule.intervalXQué tan a menudo se revisará si hay actualizaciones
allowPersonalizar qué actualizaciones se permitirán
asignatariosLos asignados a configurar en las solicitudes de extracción
commit-messagePreferencias de mensaje de confirmación
ignoreIgnorar ciertas dependencias o versiones
insecure-external-code-executionPermite o rechaza la ejecución de código en los archivos de manifiesto
etiquetasLas etiquetas a configurar en las solicitudes de extracción
hitoHito a configurar en las solicitudes de extracción
open-pull-requests-limitLimitar la cantidad de solicitudes de extracción abiertas para las actualizaciones de versión
pull-request-branch-name.separatorCambiar el separador para los nombres de rama de la solicitud de extracción
rebase-strategyInhabilitar el rebase automático
registriesLos registros privados a los que puede acceder el Dependabot
reviewersLos revisores a configurar en las solicitudes de extracción
schedule.dayDía de la semana para revisar si hay actualizaciones
schedule.timeHora del día para revisar si hay actualizaciones (hh:mm)
schedule.timezoneHuso horario para la hora del día (identificador de zona)
target-branchRama contra la cual se creará la solicitud de extracción
vendorActualiza las dependencias delegadas a proveedores o almacenadas en caché
versioning-strategyCómo actualizar los requisitos de la versión del manifiesto

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

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 paquetesEl valor de YAMLLas versiones compatiblesLos repositorios privadosRegistros privadosDelegamiento a proveedores
Bundlerbundlerv1, v2
Cargocargov1
Composercomposerv1, v2
Dockerdockerv1
Hexmixv1
elm-packageelmv0.19
submódulo de gitgitsubmoduleN/A (sin versión)
GitHub Actionsgithub-actionsN/A (sin versión)
Módulos de Gogomodv1
GradlegradleN/A (sin versión)[1]
MavenmavenN/A (sin versión)[2]
npmnpmv6, v7
NuGetnuget<= 4.8[3]
pippipv21.1.2
pipenvpip<= 2021-05-29
pip-compilepip6.1.0
poetrypipv1
Terraformterraform>= 0.13, <= 1.0
yarnnpmv1

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

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 nuevas, utiliza package-ecosystem: "pip" en tu archivo de dependabot.yml.

# 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, utiliza schedule.day.
  • monthly—se ejecuta una vez al mes. Esto ocurre en el primer día de cada mes.
# Set update schedule for each package manager

version: 2
updates:

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      # Check for updates to GitHub Actions every weekday
      interval: "daily"

  - package-ecosystem: "composer"
    directory: "/"
    schedule:
      # Check for updates managed by Composer once a week
      interval: "weekly"

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 atributo dependency-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 dependenciaAdministradores de paquete compatiblesPermitir actualizaciones
    directTodasTodas las dependencias definidas explícitamente.
    indirectbundler, pip, composer, cargoLas dependencias de las dependencias directas (también conocidas como sub-dependencias, o dependencias transitorias).
    allTodasTodas las dependencias definidas explícitamente. Para bundler, pip, composer, cargo, también las dependencias de las 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: "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

  • 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, y pip.
  • 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"

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 atributo dependency-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 tipo major, minor, o patch en actualizaciones de versión (por ejemplo: version-update:semver-patch ignorará las actualizaciones de parche). Puedes combinar esto con dependency-name: "*" para ignorar algún update-types en particular en todas las dependencias. Actualmente, version-update:semver-major, version-update:semver-minor, y version-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 la sección "Administrar la configuración de seguridad y análisis de tu organización" y "Solución de problemas para 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 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.

# 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

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 paquetesRuta de archivo requerida para las dependencias delegadasMás información
bundlerLas dependencias deben estar en el directorio vendor/cache.
Otras rutas de archivo no son compatibles.
documentación de bundle cache
gomodNo 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ó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: "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
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 asumirá que es https://. El Dependabot agrega o ignora las diagonales iniciales conforme sea necesario.
nombre de usuarioEl nombre de usuario que utilizará el Dependabot para acceder al registro.
contraseñaUna 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".
claveUna 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".
tokenUna 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-basePara 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}}

¿Te ayudó este documento?

Política de privacidad

¡Ayúdanos a hacer geniales estos documentos!

Todos los documentos de GitHub son de código abierto. ¿Notas algo que esté mal o que no sea claro? Emite una solicitud de cambios.

Haz una contribución

O, aprende cómo contribuir.