Skip to main content

Acerca de las actualizaciones a la versión del Dependabot

Puede utilizar el Dependabot para mantener los paquetes que utilizas actualizados a su versión más reciente.

¿Quién puede utilizar esta característica?

Dependabot version updates se encuentran habilitadas para todos los repositorios de GitHub.com.

Acerca de Dependabot version updates

El Dependabot hace el esfuerzo de mantener tus dependencias. Puedes utilizarlo para garantizar que tu repositorio se mantenga automáticamente con los últimos lanzamientos de los paquetes y aplicaciones de los que depende.

Para habilitar Dependabot version updates, comprueba un archivo de configuración dependabot.yml en el repositorio. Este archivo de configuración especifica la ubicación del manifiesto o de otros archivos de definición de paquetes almacenados en tu repositorio. Dependabot usa esta información para comprobar si hay aplicaciones y paquetes obsoletos. Dependabot determina si hay una versión nueva de una dependencia buscando el control de versiones semántico (SemVer) de la dependencia para decidir si debería actualizarla a esa versión. Para ciertos administradores de paquetes, Dependabot version updates también es compatible con su delegación a proveedores. Las dependencias delegadas (o almacenadas en caché) son aquellas que se registran en un directorio específico en un repositorio en vez de que se referencien en un manifiesto. Las dependencias delegadas a proveedores están disponibles desde el momento de su creación, incluso si los servidores de paquetes no se encuentran disponibles. Las Dependabot version updates pueden configurarse para verificar las dependencias delegadas a proveedores para las nuevas versiones y también pueden actualizarse de ser necesario.

Cuando Dependabot identifica una dependencia obsoleta, genera una solicitud de incorporación de cambios para actualizar el manifiesto a la versión más reciente de la dependencia. Lara las dependencias delegadas a proveedores, el Dependabot levanta una solicitud de cambios para reemplazar la dependencia desactualizada directamente con la versión nueva. Verificas que tu prueba pase, revisas el registro de cambios y notas de lanzamiento que se incluyan en el resumen de la solicitud de extracción y, posteriormente, lo fusionas. Para obtener más información, vea «Configuración de las actualizaciones de versiones de Dependabot».

Si habilita las actualizaciones de seguridad, Dependabot también generará solicitudes de incorporación de cambios para actualizar las dependencias vulnerables. Para obtener más información, vea «Sobre las actualizaciones de seguridad de Dependabot».

Cuando Dependabot genera solicitudes de incorporación de cambios, pueden ser para actualizaciones de seguridad o de versión:

  • Dependabot security updates son solicitudes de incorporación de cambios automatizadas que ayudan a actualizar las dependencias con vulnerabilidades conocidas.
  • Dependabot version updates son solicitudes de incorporación de cambios automatizadas que mantienen actualizadas las dependencias, incluso cuando no tienen ninguna vulnerabilidad. Para verificar el estado de las actualizaciones de versión, navega a la pestaña de perspectivas de tu repositorio, luego a la gráfica de dependencias, y luego al Dependabot.

GitHub Actions no se requiere para que Dependabot version updates y Dependabot security updates se ejecuten en GitHub. Pero las solicitudes de incorporación de cambios que abre Dependabot pueden desencadenar flujos de trabajo que ejecutan acciones. Para más información, consulta "Automatizar al Dependabot con las GitHub Actions".

Dependabot y todas las características relacionadas están sujetas por los Términos del servicio de GitHub. El acuerdo de licencia abarca

Frecuencia de las solicitudes de extracción del Dependabot

Tú eres quien especifica qué tan a menudo se revisa cada ecosistema para encontrar nuevas versiones en el archivo de configuración: diario, semanalmente, o mensualmente.

Cuando habilitas las actualizaciones de versión por primera vez, podrías tener muchas dependencias desactualizadas y algunas podrían estar varias versiones debajo de la última. Dependabot verifica las dependencias que estén desactualizadas tan pronto se habilita. Podrías ver nuevas solicitudes de extracción para las actualizaciones de versión después de algunos minutos de haber agregado el archivo de configuración, dependiendo de la cantidad de archivos de manifiesto para los cuales configuras las actualizaciones. El Dependabot también ejecutará una actualización en los cambios subsecuentes al archivo de configuración.

Para facilitar la administración y revisión de las solicitudes de incorporación de cambios, Dependabot genera un máximo de cinco solicitudes de incorporación de cambios para comenzar a actualizar a las dependencias a su versión más reciente. Si fusionas algunas de estas primeras solicitudes de cambios en la siguiente actualización programada, aquellas restantes se abrirán en la siguiente actualización, hasta ese máximo. Puede cambiar el número máximo de solicitudes de incorporación de cambios abiertas si establece la opción de configuración open-pull-requests-limit.

Para reducir aún más el número de solicitudes de incorporación de cambios que puedes ver, puedes usar la opción de configuración groups para agrupar conjuntos de dependencias (por ecosistema de paquetes). Dependabot genera una única solicitud de incorporación de cambios para actualizar tantas dependencias como sea posible en el grupo a las versiones más recientes al mismo tiempo. Para más información, consulta "Personalizar las actualizaciones de las dependencias".

Si habilitaste las actualizaciones de seguridad, algunas veces verás solicitudes de extracción adicionales para actualizaciones de seguridad. Estas se desencadenan mediante una alerta Dependabot para una dependencia de la rama predeterminada. El Dependabot levanta automáticamente una solicitud de extracción para actualizar la dependencia vulnerable.

Repositorios y ecosistemas compatibles

Puedes configurar las actualizaciones de versión para los repositorios que contengan un manifiesto de dependencias o un archivo fijado para alguno de los administradores de paquetes compatibles. Para algunos administradores de paquetes, también puedes configurar la delegación a proveedores para las dependencias. Para obtener más información, vea vendor. Dependabot también admite dependencias en registros privados. Para obtener más información, vea registries.

Nota: Cuando ejecutas actualizaciones de versión o de seguridad, algunos ecosistemas deberán poder resolver todas las dependencias de su fuente para verificar que las actualizaciones sean exitosas. Si tus archivos de manifiesto o de bloqueo contienen cualquier dependencia privada, el Dependabot deberá poder acceder a la ubicación en la que se hospedan dichas dependencias. Los propietarios de las organizaciones pueden otorgar acceso al Dependabot para los repositorios privados que contengan dependencias para un proyecto dentro de la misma organización. Para obtener más información, vea «Administrar la configuración de seguridad y análisis de su organización». Puede configurar el acceso a los registros privados en el archivo de configuración dependabot.yml de un repositorio. Para obtener más información, vea «Opciones de configuración para el archivo dependabot.yml».

El Dependabot no es compatible con dependencias privadas de GitHub para todos los administradores de paquetes. Consulta los detalles en la tabla 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
Administrador de paquetesEl valor de YAMLVersiones compatiblesLos repositorios privadosRegistros privadosDelegamiento a proveedores
Bundlerbundlerv1, v2
Cargocargov1 (solo Git)
Composercomposerv1, v2
Contenedores de desarrollodevcontainersNo aplicable
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, v9
NuGetnuget<=6.8.0
pippipv21.1.2
pipenvpip<= 2021-05-29
pip-compilepip6.1.0
pnpmnpmv7, v8
poetrypipv1
pubpubv2
Swiftswiftv5 (solo Git)
Terraformterraform>= 0,13, <= 1,5.xNo aplicable
yarnnpmv1, v2, v3

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.

Contenedores de desarrollo

Puedes usar devcontainers como package-ecosystem en el archivo dependabot.yml para actualizar características en los archivos de configuración de devcontainer.json. Para obtener más información sobre esta compatibilidad y ejemplos de archivos de configuración, consulta Disponibilidad general de integración de Dependabot en la documentación de contenedores de desarrollo.

Los contenedores de desarrollo se usan en varias herramientas y servicios, incluidos Codespaces. Para obtener más información sobre las características y los servicios compatibles, consulta Características y Compatibilidad de herramientas y servicios en la documentación de contenedores de desarrollo, respectivamente.

Este actualizador garantiza que las características se anclan a la versión major más reciente del archivo devcontainer.json asociado. Si un contenedor de desarrollo tiene un archivo de bloqueo, ese archivo también se actualizará. Para obtener más información sobre las especificaciones del archivo de bloqueo, consulta Archivos de bloqueo en el repositorio devcontainers/spec.

Las características de cualquier ubicación de contenedor de desarrollo válida se actualizarán en una única solicitud de cambios. Para más información sobre la especificación del contenedor de desarrollo, consulta Especificación en la documentación sobre contenedores de desarrollo.

Docker

Dependabot puede agregar metadatos de imágenes de Docker para extraer solicitudes de actualizaciones de versiones. Los metadatos incluyen notas de la versión, registros de cambios y el historial de confirmaciones. Los administradores del repositorio pueden usar los metadatos para evaluar rápidamente el riesgo de estabilidad de la actualización de dependencias.

Para que Dependabot capture los metadatos de Docker, los mantenedores de imágenes de Docker deben agregar la etiqueta org.opencontainers.image.source a Dockerfile e incluir la dirección URL del repositorio de origen. Además, los mantenedores deben etiquetar el repositorio con las mismas etiquetas que las imágenes de Docker publicadas. Para ver un ejemplo, consulta el repositorio dependabot-fixtures/docker-with-source. Para más información sobre las etiquetas de Docker, consulta Etiquetas de imagen de extensión y BUILDX_GIT_LABELS en la documentación de Docker.

Dependabot puede actualizar etiquetas de imagen de Docker en manifiestos de Kubernetes. Agrega una entrada al elemento package-ecosystem de Docker del archivo dependabot.yml para cada directorio que contenga un manifiesto de Kubernetes que haga referencia a etiquetas de imagen de Docker. Los manifiestos de Kubernetes pueden ser archivos YAML de implementación de Kubernetes o gráficos de Helm. Para obtener información sobre cómo configurar el archivo dependabot.yml para docker, consulta "package-ecosystem" en "Opciones de configuración para el archivo dependabot.yml".

Dependabot admite registros de Docker públicos y privados. Para una lista de los registros admitidos, consulta "docker-registry" en "Opciones de configuración para el archivo dependabot.yml".

Dependabot analiza las etiquetas de imagen de Docker para Versionamiento Semántico (SemVer). Si Dependabot detecta una etiqueta con una versión preliminar, solo sugerirá una actualización a la versión más reciente con una versión preliminar coincidente y no sugerirá una versión más reciente que use una etiqueta de versión preliminar diferente. Para obtener más información, consulta el archivo dependabot-docker README.md en el repositorio dependabot/dependabot-core.

GitHub Actions

Dependabot admite actualizaciones de versiones para GitHub Actions con las siguientes advertencias.

  • Dependabot solo admite actualizaciones de GitHub Actions mediante la sintaxis de repositorio de GitHub, como actions/checkout@v4. Dependabot omitirá las acciones o los flujos de trabajo reutilizables a los que se hace referencia localmente (por ejemplo, ./.github/actions/foo.yml).
  • Actualmente no se admiten Docker Hub y direcciones URL del Container registry de GitHub Packages. Por ejemplo, no se admiten referencias a acciones de contenedor de Docker mediante la sintaxis docker://.
  • Dependabot admite repositorios públicos y privados para GitHub Actions. Para ver las opciones de configuración del registro privado, consulta "git" en "Opciones de configuración para el archivo dependabot.yml".

Para obtener más información sobre el uso de Dependabot version updates con GitHub Actions, consulte "Uso de las características de seguridad de GitHub para proteger el uso de Acciones de GitHub".

Gradle

Dependabot no ejecuta Gradle, pero admite actualizaciones de los siguientes archivos:

  • build.gradle, build.gradle.kts (para proyectos de Kotlin)
  • gradle/libs.versions.toml (para proyectos que usan un catálogo de versiones estándar de Gradle)
  • 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).

Para Dependabot security updates, la compatibilidad con Gradle se limita a las cargas manuales de los datos del gráfico de dependencias mediante la API de envío de dependencias. Para obtener más información sobre la API de envío de dependencias, consulta "Uso de la Dependency submission API".

Notas:

  • Al cargar dependencias de Gradle en el gráfico de dependencias mediante la API de envío de dependencias, todas las dependencias del proyecto se cargan, incluso las dependencias transitivas que no se mencionan explícitamente en ningún archivo de dependencia. Cuando se detecta una alerta en una dependencia transitiva, Dependabot no puede encontrar la dependencia vulnerable en el repositorio y, por tanto, no creará una actualización de seguridad para esa alerta.
  • Sin embargo, Dependabot version updates creará solicitudes de incorporación de cambios cuando la dependencia primaria se declare explícitamente como una dependencia directa en el archivo de manifiesto del proyecto.

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 6.8.0.

pip y pip-compile

Además de admitir actualizaciones de los archivos requirements.txt, Dependabot admite actualizaciones de los archivos pyproject.toml si siguen el estándar PEP 621.

pnpm

pnpm se admite para Dependabot version updates y Dependabot security updates.

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.

Puedes usar Dependabot para mantener actualizadas las dependencias de Dart si usas repositorios de pub hospedados privados. Para obtener información sobre cómo permitir que Dependabot accedan a dependencias privadas de GitHub, vea "Permitir que Dependabot accedan a dependencias privadas".

Swift

La compatibilidad con el registro privado se aplica solo a los registros de Git. No se admiten los registros de Swift. No se admiten manifiestos no declarativos. Para más información sobre los manifiestos no declarativos, consulta Edición de manifiestos no declarativos en la documentación de Swift Evolution.

Terraform

Terraform es compatible con:

  • Módulos hospedados en Terraform Registry o en un repositorio Git accesible públicamente.
  • Proveedores de Terraform.
  • Registro privado de Terraform. Puede configurar el acceso para repositorios git privados especificando un registro de git en el archivo dependabot.yml. Para obtener más información, vea git.

yarn

Dependabot admite dependencias proporcionadas por el proveedor a partir de la versión 2.

Si tu repositorio ya utiliza una integración para la administración de dependencias, necesitarás inhabilitarlo antes de habilitar el Dependabot. Para más información, consulta "Acerca del uso de integraciones".

Acerca de la desactivación automática de Dependabot updates

Cuando los mantenedores de un repositorio dejan de interactuar con solicitud de incorporación de cambios de Dependabot, Dependabot pausa temporalmente sus actualizaciones y te informa de ello. Este comportamiento de exclusión automática reduce el ruido porque Dependabot no crea solicitudes de cambios para actualizaciones de versión y de seguridad y no fusiona mediante cambio de base las solicitudes de cambios de Dependabot para los repositorios inactivos.

La desactivación automática de las actualizaciones de Dependabot solo se aplica a los repositorios en los que Dependabot ha abierto solicitudes de incorporación de cambios, pero las solicitudes de incorporación de cambios permanecen intactas. Si Dependabot no ha abierto ninguna solicitud de incorporación de cambios, los datos de Dependabot nunca se pausarán.

Un repositorio activo es un repositorio para el que un usuario (no Dependabot) ha llevado a cabo alguna de las acciones siguientes en los últimos 90 días:

  • Combinar o cerrar una solicitud de incorporación de cambios de Dependabot en el repositorio.
  • Realizar un cambio en el archivo dependabot.yml del repositorio.
  • Desencadenar manualmente una actualización de seguridad o una actualización de versión.
  • Habilitar las Dependabot security updates para el repositorio.
  • Usar comandos @dependabot en solicitudes de incorporación de cambios.

Un repositorio inactivo es un repositorio que tiene al menos una solicitud de incorporación de cambios de Dependabot abierta durante más de 90 días, se ha habilitado durante el período completo y en el que ningún usuario ha realizado ninguna de las acciones enumeradas anteriormente.

Cuando se pausan los datos Dependabot, GitHub agrega un aviso de banner:

  • A todas las solicitudes de cambios Dependabot abiertas.
  • En la interfaz de usuario de la pestaña Configuración del repositorio (en Seguridad y análisis de código, Dependabot).
  • En la lista de datos Dependabot alerts (si Dependabot security updates se ven afectados).

En cuanto un mantenedor vuelva a interactuar con una solicitud de incorporación de cambios de Dependabot, Dependabot se reanudará automáticamente:

  • Las actualizaciones de seguridad se reanudan automáticamente para Dependabot alerts.
  • Las actualizaciones de versión se reanudan automáticamente con la programación especificada en el archivo dependabot.yml.

Dependabot también deja de fusionar mediante cambio las solicitudes de cambios para actualizaciones de versión y de seguridad después de 30 días, lo que reduce las notificaciones de las solicitudes de cambios de Dependabot inactivos.

Acerca de las notificaciones para las actualizaciones de versión del Dependabot

Puedes filtrar tus notificaciones en GitHub para mostrar notificaciones para las solicitudes de cambios que creó el Dependabot. Para obtener más información, vea «Administrar las notificaciones en tu bandeja de entrada».