Skip to main content

Control de qué dependencias actualiza Dependabot

Obtenga información sobre cómo configurar el dependabot.yml archivo para que Dependabot actualice automáticamente los paquetes que especifique, de la manera que defina.

¿Quién puede utilizar esta característica?

Users with write access

Puede personalizar la Dependabot configuración para satisfacer sus necesidades agregando opciones al dependabot.yml archivo. Por ejemplo, puede asegurarse de que Dependabot usa los archivos de manifiesto de paquete correctos y actualiza solo las dependencias que desea 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 desea habilitar Dependabot version updates para los archivos de manifiesto almacenados en más de una ubicación, puede 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á listo para adoptar cambios de determinadas dependencias del proyecto, puede configurar Dependabot para omitir esas dependencias cuando abre solicitudes de incorporación de cambios para actualizaciones de versiones 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.
  • Utilice @dependabot ignore comandos de comentario en un Dependabot pull request para las actualizaciones de versión y las 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 ignorar las actualizaciones de parches

    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 cambios para las actualizaciones agrupadas, también puedes usar comandos de comentario @dependabot unignore. Los @dependabot unignore comandos de comentario le permiten hacer lo siguiente al comentar en un Dependabot pull request:

  • 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 para todas las dependencias en una solicitud de incorporación de cambios Dependabot

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

Permiso para que se actualicen dependencias específicas

Puede usar allow para informar Dependabot sobre las dependencias que desea mantener. allow se usa habitualmente junto a ignore.

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

De forma predeterminada, Dependabot crea solicitudes de actualización de versiones solo para las dependencias que se definen explícitamente en un manifiesto (direct dependencias). Esta configuración usa allow para indicar Dependabot que queremos que mantenga all tipos de dependencia. 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 Dependabot que omita todas las dependencias con un nombre que coincida con el patrón org.xwiki.* porque tenemos un proceso diferente para mantenerlos.

Sugerencia

          Dependabot comprueba todas las dependencias **permitidas** y filtra las dependencias **ignoradas** . Si una dependencia coincide con una **allow** y una **ignore**, entonces se omite. También puede usar `update-types` en `allow` reglas para restringir las actualizaciones a niveles de versionado semántico específicos.
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

Permitir niveles de control de versiones semánticos específicos para las actualizaciones

Puede usar update-types con allow para restringir las actualizaciones a niveles específicos de control de versiones semánticas (SemVer). Esto es útil cuando quieras ser explícito sobre los tipos de actualizaciones para los que Dependabot debe crear pull requests.

Nota:

          `update-types` solo afecta a las actualizaciones de _versión_ , no a las actualizaciones _de seguridad_ . Las actualizaciones de seguridad siempre se crearán independientemente de la `update-types` configuración.

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

Estos son algunos ejemplos que muestran cómo update-types se puede usar con allow.

  • Para permitir solo actualizaciones secundarias y de revisión para una dependencia específica, puede combinar update-types con dependency-name.

    YAML
    version: 2
    updates:
      - package-ecosystem: "maven"
        directory: "/"
        schedule:
          interval: "weekly"
        allow:
          - dependency-name: "io.micrometer:micrometer-core"
            update-types:
              - "version-update:semver-minor"
              - "version-update:semver-patch"
    
  • Para aplicar diferentes directivas de actualización para las dependencias de producción y desarrollo, puede combinar update-types con dependency-type.

    YAML
    version: 2
    updates:
      - package-ecosystem: "composer"
        directory: "/"
        schedule:
          interval: "monthly"
        allow:
          - dependency-type: "production"
            update-types:
              - "version-update:semver-patch"
          - dependency-type: "development"
            update-types:
              - "version-update:semver-minor"
              - "version-update:semver-patch
    

    En este ejemplo, las dependencias de producción solo recibirán actualizaciones de parches, mientras que las dependencias de desarrollo recibirán tanto actualizaciones menores como de parches.

Ignorar 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á

Puede especificar uno o varios niveles de control de versiones semánticos (SemVer) para omitir mediante update-types con ignore. Como alternativa, puede usar update-types con allow para especificar explícitamente qué niveles de actualización permitir, consulte Permitir niveles semánticos de control de versiones específicos para las actualizaciones.

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

En este ejemplo, Dependabot omitirá las versiones de revisión de 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 forma 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 para 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, Dependabotsolo 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 pip
  # only when required
  versioning-strategy: increase-if-necessary

Actualización de dependencias delegadas a proveedores

Puede indicarle Dependabot a las dependencias específicas del proveedor al actualizarlas.

          Dependabot mantiene automáticamente las dependencias proporcionadas para los módulos de Go y puede configurar Bundler para actualizar también las dependencias proporcionadas por el proveedor.

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 conservará 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