Skip to main content

Personalizar las actualizaciones de las dependencias

Puedes personalizar cómo el Dependabot mantiene tus dependencias.

Quién puede usar esta característica

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

Acerca de personalizar las actualizaciones de las dependencias

Después de habilitar las actualizaciones de versión, puedes personalizar cómo mantiene tus dependencias el Dependabot. Para ello, agrega más opciones al archivo dependabot.yml. Por ejemplo, podría realizar estas acciones:

  • Especificar el día de la semana que se deben abrir las solicitudes de incorporación de cambios de las actualizaciones de versión: schedule.day
  • Establecer revisores, usuarios asignados y etiquetas para cada administrador de paquetes: reviewers, assignees y labels
  • Crear grupos de dependencias (por ecosistema de paquetes), de modo que el Dependabot actualice el grupo de dependencias en una única solicitud de incorporación de cambios: groups
  • Definir una estrategia de control de versiones para los cambios en cada archivo de manifiesto: versioning-strategy
  • Cambiar el número máximo de solicitudes de incorporación de cambios abiertas para las actualizaciones de versión a partir del valor predeterminado de 5: open-pull-requests-limit
  • Abrir solicitudes de incorporación de cambios de actualizaciones de versión para seleccionar una rama específica en vez de la rama predeterminada: target-branch

Para más información sobre las opciones de configuración, consulta "Opciones de configuración para el archivo dependabot.yml".

Cuando actualices el archivo dependabot.yml en el repositorio, el Dependabot ejecutará una comprobación inmediata con la nueva configuración. Verá una lista de dependencias actualizada en cuestión de minutos en la pestaña de Dependabot ; esto podría demorarse más si el repositorio tiene muchas dependencias. También puedes ver las solicitudes de extracción nuevas para las actualizaciones de versión. Para obtener más información, vea «Listar dependencias configuradas para las actualizaciones de versión».

Impacto de los cambios de configuración en las actualizaciones de seguridad

Si personalizas el archivo dependabot.yml, podrías notar algunos cambios en las solicitudes de incorporación de cambios generadas para las actualizaciones de seguridad. Estas solicitudes de extracción siempre se activan mediante una asesoría de seguridad para una dependencia en vez de mediante un calendario de programación del Dependabot. Sin embargo, heredan la configuración correspondiente del archivo dependabot.yml a menos que especifiques una rama de destino diferente para las actualizaciones de versión.

Para ver un ejemplo, consulte "Configuración de etiquetas personalizadas" a continuación.

Modificar la programación

Cuando configura una programación de actualización de tipo daily, de manera predeterminada, Dependabot revisa si hay versiones nuevas a las 05:00 UTC. Puede usar schedule.time para especificar una hora alternativa y comprobar si hay actualizaciones (formato: hh:mm).

El archivo dependabot.yml de ejemplo mostrado a continuación expande la configuración de npm para especificar cuándo el Dependabot debe comprobar si existen actualizaciones de versión de dependencias.

# `dependabot.yml` file with
# customized schedule for version updates

version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    # Check the npm registry for updates at 2am UTC
    schedule:
      interval: "daily"
      time: "02:00"

Configurar los revisores y asignados

Predeterminadamente, el Dependabot levanta solicitudes de extracción sin ningún revisor o asignado.

Puede usar reviewers y assignees para especificar revisores y usuarios asignados para todas las solicitudes de incorporación de cambios generadas de un administrador de paquetes. Cuando especifique un equipo, debe utilizar su nombre completo, como si estuviera @mentioning (incluida la organización).

El archivo dependabot.yml de ejemplo mostrado a continuación cambia la configuración de npm para que todas las solicitudes de incorporación de cambios que se hayan abierto con actualizaciones de versión y seguridad para npm tengan dos revisores y un usuario asignado.

# `dependabot.yml` file with
# reviews and an assignee for all npm pull requests

version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Raise all npm pull requests with reviewers
    reviewers:
      - "my-org/team-name"
      - "octocat"
    # Raise all npm pull requests with an assignee
    assignees:
      - "user-name"

Configurar las etiquetas personalizadas

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.

Puede utilizar labels para 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. No puedes crear etiquetas nuevas en el archivo dependabot.yml, así que las etiquetas alternativas ya deben existir en el repositorio.

El archivo dependabot.yml de ejemplo mostrado a continuación cambia la configuración de npm para que todas las solicitudes de incorporación de cambios que se hayan abierto con actualizaciones de versión y seguridad para npm tengan etiquetas personalizadas. También cambia la configuración de Docker para revisar las actualizaciones de versión contra una rama personalizada y para levantar solicitudes de extracción con etiquetas personalizadas contra dicha rama personalizada. Los cambios en Docker no afectarán las solicitudes de extracción para actualizaciones de seguridad, ya que dichas actualizaciones de seguridad siempre se hacen contra la rama predeterminada.

Nota: El nuevo target-branch debe contener un Dockerfile para actualizar; de lo contrario, este cambio tendrá el efecto de deshabilitar las actualizaciones de versión para Docker.

# `dependabot.yml` file with
# customized npm configuration

version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Raise all npm pull requests with custom labels
    labels:
      - "npm dependencies"
      - "triage-board"

    # Keep Docker dependencies up to date
  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "weekly"
    # Raise pull requests for Docker version updates
    # against the "develop" branch. The Docker configuration
    # no longer affects security update pull requests.
    target-branch: "develop"
    # Use custom labels on pull requests for Docker version updates
    labels:
      - "Docker dependencies"
      - "triage-board"

Agrupar Dependabot version updates en una solicitud de incorporación de cambios

De forma predeterminada, Dependabot genera una única solicitud de incorporación de cambios para cada dependencia que debe actualizarse a una versión más reciente. Puedes usar groups para crear conjuntos de dependencias (por administrador de paquetes), de modo que Dependabot abra una única solicitud de incorporación de cambios para actualizar varias dependencias al mismo tiempo.

También puedes especificar la configuración de agrupación en función de cómo afectan las actualizaciones a un ecosistema específico y seguir el control de versiones semántico (SemVer). Esto significa que, por ejemplo, puedes agrupar todas las actualizaciones de revisiones. Este enfoque ayuda a que Dependabot cree el menor número de solicitudes de incorporación de cambios posible, a la vez que reduce las posibilidades de aceptar accidentalmente cambios que podrían causar problemas. Si un paquete sigue a SemVer, existe una mayor probabilidad (pero no una garantía) de que las actualizaciones secundarias y de revisión sean compatibles con versiones anteriores.

Nota: SemVer es un estándar aceptado para definir versiones de paquetes de software, con el formato x.y.z. Dependabot supone que las versiones de este formulario siempre son major.minor.patch.

Solo puedes crear grupos para Dependabot version updates. Dependabot security updates no admiten actualizaciones agrupadas.

El primer archivo dependabot.yml de ejemplo usa una combinación de opciones patterns y dependency-type para incluir dependencias específicas en el grupo y exclude-patterns para excluir una dependencia (o varias dependencias) del grupo.

En el segundo ejemplo se cambia la configuración del agrupador para crear un grupo de dependencias. La configuración especifica patterns (cadenas de caracteres) que coinciden con el nombre de una dependencia (o varias dependencias) para incluir las dependencias en el grupo.

En el tercer ejemplo, los paquetes que coincidan con el patrón @angular* en el que la versión más alta que se pueda resolver sea minor o patch se agruparán. El Dependabot creará una solicitud de incorporación de cambios independiente para cualquier paquete que no coincida con el patrón o que no se actualice a una versión minor o patch .

En el cuarto ejemplo se usa una condición ignore para excluir las actualizaciones de versiones major de paquetes @angular*.

Para obtener más información sobre cómo configurar grupos de dependencias en el archivo dependabot.yml, consulta "Opciones de configuración para el archivo dependabot.yml".

Debes configurar grupos por ecosistema de paquetes.

# `dependabot.yml` file using the `dependency-type` option to group updates
# in conjunction with `patterns` and `exclude-patterns`.

groups:
  production-dependencies:
    dependency-type: "production"
  development-dependencies:
    dependency-type: "development"
    exclude-patterns:
    - "rubocop*"
  rubocop:
    patterns:
    - "rubocop*"
# `dependabot.yml` file with customized bundler configuration
# In this example, the name of the group is `dev-dependencies`, and
# only the `patterns` and `exclude-patterns` options are used.
version: 2
updates:
  # Keep bundler dependencies up to date
  - package-ecosystem: "bundler"
    directory: "/"
    schedule:
      interval: "weekly"
    # Create a group of dependencies to be updated together in one pull request
    groups:
       # Specify a name for the group, which will be used in pull request titles
       # and branch names
       dev-dependencies:
          # Define patterns to include dependencies in the group (based on
          # dependency name)
          patterns:
            - "rubocop" # A single dependency name
            - "rspec*"  # A wildcard string that matches multiple dependency names
            - "*"       # A wildcard that matches all dependencies in the package
                        # ecosystem. Note: using "*" may open a large pull request
          # Define patterns to exclude dependencies from the group (based on
          # dependency name)
          exclude-patterns:
            - "gc_ruboconfig"
            - "gocardless-*"
# `dependabot.yml` file using the `update-types` option to group updates.
# Any packages matching the pattern @angular* where the highest resolvable
# version is minor or patch will be grouped together.
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      angular:
        patterns:
        - "@angular*"
        update-types:
        - "minor"
        - "patch"
# `dependabot.yml` file using the `update-types` option to group updates
# in conjunction with an `ignore` condition.
# If you do not want updates to `major` versions of `@angular*` packages, you can specify an `ignore` condition
groups:
  angular:
    patterns:
    - "@angular*"
    update-types:
    - "minor"
    - "patch"
ignore:
  - dependency-name: "@angular*"
    update-types: ["version-update:semver-major"]

Ignorar dependencias específicas de Dependabot version updates

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

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

En solicitudes de incorporación de cambios para actualizaciones de versiones agrupadas, también puedes usar 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

Nota: los comandos de comentario @dependabot unignore solo funcionan en las solicitudes de incorporación de cambios para actualizaciones de versión agrupadas.

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

Más ejemplos

Para más información, consulta "Opciones de configuración para el archivo dependabot.yml".