Skip to main content

Control de qué dependencias actualiza Dependabot

Aprende a configurar tu archivo dependabot.yml para que Dependabot actualice automáticamente los paquetes que especifiques, de la forma que definas.

¿Quién puede utilizar esta característica?

Users with write access

Puedes personalizar la configuración de Dependabot para adecuarla a tus necesidades si agregas opciones al archivo dependabot.yml. Por ejemplo, puedes asegurarte de que Dependabot usa los archivos de manifiesto de paquete correctos y actualiza solo las dependencias que quieras mantener.

En este artículo se intercalan opciones de personalización que pueden resultarte útiles.

Definición de varias ubicaciones para archivos de manifiesto

Si quieres habilitar Dependabot version updates para archivos de manifiesto almacenados en más de una ubicación, puedes usar directories en lugar de directory. Por ejemplo, esta configuración establece dos programaciones de actualización diferentes para los archivos de manifiesto almacenados en directorios diferentes.

YAML
# Specify the locations of the manifest files to update for each package manager
# using both `directories` and `directory`

version: 2
updates:
  - package-ecosystem: "bundler"
    # Update manifest files stored in these directories weekly
    directories:
      - "/frontend"
      - "/backend"
      - "/admin"
    schedule:
      interval: "weekly"
  - package-ecosystem: "bundler"
    # Update manifest files stored in the root directory daily
    directory: "/"
    schedule:
      interval: "daily"
  • Para especificar un intervalo de directorios mediante un patrón

    YAML
    # Specify the root directory and directories that start with "lib-",
    # using globbing, for locations of manifest files
    
    version: 2
    updates:
      - package-ecosystem: "composer"
        directories:
          - "/"
          - "/lib-*"
        schedule:
          interval: "weekly"
    
  • Para especificar manifiestos en el directorio actual y subdirectorios recursivos

    YAML
    # Specify all directories from the current layer and below recursively,
    # using globstar, for locations of manifest files
    
    version: 2
    updates:
      - package-ecosystem: "composer"
        directories:
          - "**/*"
        schedule:
          interval: "weekly"
    

Omisión de dependencias específicas

Si no estás listo para adoptar cambios de determinadas dependencias en el proyecto, puedes configurar Dependabot para omitir esas dependencias cuando abre solicitudes de cambios para actualizaciones de versión y actualizaciones de seguridad. Para ello, emplea uno de los métodos siguientes.

  • Configura la opción ignore para la dependencia en tu archivo dependabot.yml.
    • Puedes usar esto para omitir las actualizaciones de dependencias, versiones y tipos específicos de actualizaciones.
    • Para más información, consulta ignore en Referencia de opciones de Dependabot.
  • Usa comandos de comentario @dependabot ignore en una solicitud de incorporación de cambios de Dependabot para las actualizaciones de versión y actualizaciones de seguridad.

Estos son algunos ejemplos en los que se muestra cómo se puede usar ignore para personalizar qué dependencias se actualizan.

  • Para omitir las actualizaciones más allá de una versión específica

    YAML
    ignore:
      - dependency-name: "lodash:*"
        # Ignore versions of Lodash that are equal to or greater than 1.0.0
        versions: [ ">=1.0.0" ]
    
    YAML
    ignore:
      - dependency-name: "sphinx"
        versions: [ "[1.1,)" ]
    
  • Para omitir las actualizaciones de revisiones

    YAML
    ignore:
      - dependency-name: "@types/node"
        # Ignore patch updates for Node
        update-types: ["version-update:semver-patch"]
    
  • Para omitir versiones o intervalos de versiones específicos, consultaOmisión de versiones o intervalos específicos de versiones.

Si quieres dejar de omitir una dependencia o condición de omisión, puedes eliminar las condiciones de omisión del archivo dependabot.yml, o bien volver a abrir la solicitud de cambios.

En el caso de las solicitudes de incorporación de cambios para las actualizaciones agrupadas , también puedes usar los comandos de comentario @dependabot unignore. Los comandos de comentario @dependabot unignore te permiten hacer lo siguiente comentando en una solicitud de incorporación de cambios del Dependabot:

  • Dejar de ignorar una condición de omisión específica
  • Dejar de ignorar una dependencia específica
  • Dejar de ignorar todas las condiciones de omisión de todas las dependencias de una solicitud de incorporación de cambios del Dependabot

Para más información, consulta Administrar las solicitudes de extracción para las actualizaciones de dependencia.

Permiso para actualizar dependencias específicas

Puede usar allow para indicar a Dependabot las dependencias que quieres mantener. allow se usa habitualmente junto a ignore.

Para más información, consulta allow en Referencia de opciones de Dependabot.

De manera predeterminada, Dependabot crea solicitudes de cambios solo para las dependencias que se definen explícitamente en un manifiesto (dependencias direct). En esta configuración se usa allow para indicar a Dependabot que queremos que se mantengan los tipos de dependencia all. Es decir, tanto las dependencias direct como sus dependencias (también conocidas como dependencias indirectas, subdependencias o dependencias transitorias). Además, la configuración indica a Dependabot que omita todas las dependencias con un nombre que coincida con el patrón org.xwiki.* porque hay otro proceso para mantenerlas.

Tip

Dependabot comprueba todas las dependencias permitidas y después filtra cualquier dependencia ** ignorada**. Si una dependencia coincide con una instrucción allow e ignore, se omite.

YAML
version: 2
registries:
  # Helps find updates for non Maven Central dependencies
  maven-xwiki-public:
    type: maven-repository
    url: https://nexus.xwiki.org/nexus/content/groups/public/
    username: ""
    password: ""
  # Required to resolve xwiki-common SNAPSHOT parent pom
  maven-xwiki-snapshots:
    type: maven-repository
    url: https://maven.xwiki.org/snapshots
    username: ""
    password: ""
updates:
  - package-ecosystem: "maven"
    directory: "/"
    registries:
      - maven-xwiki-public
      - maven-xwiki-snapshots
    schedule:
      interval: "weekly"
    allow:
      # Allow both direct and indirect updates for all packages.
      - dependency-type: "all"
    ignore:
      # Ignore XWiki dependencies. We have a separate process for updating them
      - dependency-name: "org.xwiki.*"
    open-pull-requests-limit: 15

Omisión de versiones concretas o intervalos de versiones

Puedes usar versions junto con ignore para omitir versiones concretas o intervalos de versiones.

Para más información, consulta versions en Referencia de opciones de Dependabot.

  • Para omitir una versión específica

    YAML
    ignore:
      - dependency-name: "django*"
        # Ignore version 11
        versions: [ "11" ]
    
  • Para omitir un intervalo de versiones

    YAML
        ignore:
          - dependency-name: "@types/node"
            versions: ["15.x", "14.x", "13.x"]
          - dependency-name: "xdg-basedir"
            # 5.0.0 has breaking changes as they switch to named exports
            # and convert the module to ESM
            # We can't use it until we switch to ESM across the project
            versions: ["5.x"]
          - dependency-name: "limiter"
            # 2.0.0 has breaking changes
            # so we want to delay updating.
            versions: ["2.x"]
    

Especificación del nivel de versionamiento semántico que se omitirá

Puedes especificar uno o varios niveles de versionamiento semántico (SemVer) para omitir mediante update-types.

Para más información, consulta update-types en Referencia de opciones de Dependabot.

En este ejemplo, Dependabot omitirá las versiones de revisión para Node.

YAML
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"
      - dependency-name: "@types/node"
        # For Node types, ignore any patch versions
        update-types: ["version-update:semver-patch"]

Definición de una estrategia de control de versiones

De manera predeterminada, Dependabot intenta aumentar el requisito de versión mínima para las dependencias que identifica como aplicaciones y amplía los requisitos de versión permitidos a fin de incluir las versiones nuevas y antiguas para las dependencias que identifica como bibliotecas.

Puedes cambiar esta estrategia predeterminada. Para más información, consulta versioning-strategy en Referencia de opciones de Dependabot.

En este ejemplo, Dependabot aumentará el requisito de versión mínima para que coincida con la nueva versión de las aplicaciones y las bibliotecas.

YAML
version: 2
updates:
  - package-ecosystem: npm
    directory: "/"
    schedule:
      interval: daily
    # Increase the minimum version for all npm dependencies
    versioning-strategy: increase

En este ejemplo, Dependabot solo aumentará el requisito de versión mínima si la restricción original no permite la nueva versión.

YAML
version: 2
updates:
- package-ecosystem: pip
  directory: "/"
  schedule:
    interval: daily
  open-pull-requests-limit: 20
  rebase-strategy: "disabled"
  # Increase the version requirements for npm
  # only when required
  versioning-strategy: increase-if-necessary

Actualización de dependencias delegadas a proveedores

Puedes indicar a Dependabot que delegue a proveedores dependencias concretas cuando se actualicen.

Dependabot mantiene automáticamente las dependencias delegadas a proveedores para los módulos de Go y puede configurar Bundler para actualizarlas también.

Para más información, consulta vendor en Referencia de opciones de Dependabot.

En este ejemplo, vendor se establece en true para Bundler, lo que significa que Dependabot también mantendrá las dependencias de Bundler que se almacenan en el directorio vendor/cache del repositorio.

YAML
version: 2
updates:
- package-ecosystem: bundler
  directory: "/"
  # Vendoring Bundler
  vendor: true
  schedule:
    interval: weekly
    day: saturday
  open-pull-requests-limit: 10