Skip to main content

Solucionar problemas de los errores del Dependabot

Algunas veces, el Dependabot no puede levantar solicitudes de cambios para actualizar tus dependencias. Puedes revisar el error y desbloquear al Dependabot.

Acerca de los errores del Dependabot

El Dependabot levanta solicitudes de extracción para actualizar las dependencias. En función de la configuración del repositorio, Dependabot podría generar solicitudes de incorporación de cambios para las actualizaciones de versión o de seguridad. Administrarás estas solicitudes de la misma forma que cualquier otra solicitud de extracción, pero también hay comandos extra disponibles. Para obtener información sobre cómo habilitar las actualizaciones de dependencias de Dependabot, vea "Configuración de Dependabot security updates" y "Habilitación y deshabilitación de actualizaciones de seguridad de Dependabot".

Si existe algo que impida que el Dependabot levante una solicitud de cambios, esto se reporta como un error.

Investigar los errores de las Dependabot security updates

Cuando se bloquea al Dependabot y no puede crear una solicitud de cambios para arreglar una alerta del Dependabot, éste publica el mensaje de error en la alerta. La vista de Dependabot alerts muestra una lista de cualquier alerta que aún no se haya resuelto. Para acceder a la vista de alertas, haga clic en Dependabot alerts en la pestaña Security (Seguridad) del repositorio. Donde sea que se genere una solicitud de cambios que arregle una dependencia vulnerable, la alerta incluirá un enlace a dicha solicitud.

Vista de las Dependabot alerts que muestra un enlace a una solicitud de cambios

Hay varias razones por las cuales una alerta podría no tener un enlace a una solicitud de incorporación de cambios:

  1. No se han habilitado las Dependabot security updates en el repositorio.

  2. La alerta es para malware y no hay ninguna versión segura del paquete.

  3. La alerta es para una dependencia transitoria o indirecta que no se definió explícitamente en un archivo de bloqueo.

  4. Un error bloqueó al Dependabot y éste no puede crear una solicitud de cambios.

Si existe un error que bloqueó al Dependabot y éste no puede crear una solicitud de cambios, puedes mostrar los detalles del error si das clic en la alerta.

Investigar los errores de las Dependabot version updates

Cuando el Dependabot se bloquea y no puede crear una solicitud de cambios para actualizar una dependencia en un ecosistema, éste publica el icono de error en el archivo de manifiesto. Los archivos de manifiesto que administra Dependabot aparecen en la pestaña Dependabot. Para acceder a esta, en la pestaña Insights (Información) del repositorio, haga clic en Dependency graph (Gráfico de dependencias) y luego en la pestaña Dependabot .

vista del Dependabot que muestra un error

Para ver el archivo de registro de cualquier archivo de manifiesto, haga clic en el vínculo Last checked TIME ago (Última comprobación hace TIME). Cuando muestras el archivo de bitácora de un manifiesto que se muestra con un símbolo de error (por ejemplo, Maven en la impresión de pantalla anterior), cualquier error se mostrará también.

Error y bitácora de una actualizacón de versión del Dependabot

Entender los errores del Dependabot

Las solicitudes de cambios para las actualizaciones de seguridad actúan para mejorar una dependencia vulnerable a la versión mínima que incluya un arreglo de la vulnerabilidad. Por el contrario, las solicitudes de cambios para las actualizaciones de versión actúan para mejorar una dependencia a la última versión que permite el paquete de archivos de manifiesto y de configuración del Dependabot. Como consecuencia, algunos errores son específicos de un tipo de actualización.

El Dependabot no puede actualizar la DEPENDENCIA a una versión no-vulnerable

Únicamente actualizaciones de seguridad. Dependabot no puede crear una solicitud de incorporación de cambios a fin de actualizar la dependencia vulnerable a una versión segura sin interrumpir otras dependencias del gráfico de dependencias para este repositorio.

Cada aplicación que tenga dependencias tiene una gráfica de dependencias, esto es, una gráfica acíclica dirigida de cada versión de paquete de la cual depende la aplicación directa o indirectamente. Cada vez que se actualiza una dependencia, esta gráfica debe resolverse o la aplicación no se compilará. Cuando un ecosistema tiene una gráfica de dependencias profunda y compleja, por ejemplo, npm y RubyGems, es a menudo imposible mejorar una sola dependencia sin mejorar todo el ecosistema.

La mejor forma de evitar este problema es mantenerse actualizado con los lanzamientos de versiones más recientes, por ejemplo, habilitando las actualizaciones de versión. Esto aumenta la probabilidad de que una vulnerabilidad en alguna dependencia pueda resolverse con una mejora simple que no afecte la gráfica de dependencias. Para obtener más información, consulta "Configurar las actualizaciones de versión de Dependabot".

Dependabot intenta actualizar las dependencias sin una alerta

Únicamente actualizaciones de seguridad. Dependabot actualiza las dependencias transitivas definidas explícitamente como vulnerables para todos los ecosistemas. En el caso de npm, Dependabot generará una solicitud de incorporación de cambios que también actualiza la dependencia primaria si es la única manera de corregir la dependencia transitiva.

Por ejemplo, un proyecto con una dependencia de A versión ~2.0.0 que tiene una dependencia transitiva de B versión ~1.0.0 que se ha resuelto en 1.0.1.

my project
|
--> A (2.0.0) [~2.0.0]
       |
       --> B (1.0.1) [~1.0.0]

Si se publica una vulnerabilidad de seguridad para B versiones <2.0.0 y hay una revisión disponible en 2.0.0, Dependabot intentará actualizar B, pero se encontrará con que no es posible debido a la restricción implementada por A, que solo permite versiones vulnerables más bajas. Para corregir la vulnerabilidad, Dependabot buscará actualizaciones de la dependencia de A que permitan usar la versión fija de B.

Dependabot genera automáticamente una solicitud de incorporación de cambios que actualiza las dependencias transitivas primarias y secundarias bloqueadas.

El Dependabot no puede actualizar a la versión requerida porque ya existe una solicitud de cambios abierta para la última versión

Únicamente actualizaciones de seguridad. Dependabot no creará una solicitud de incorporación de cambios a fin de actualizar la dependencia vulnerable a una versión segura porque ya hay una solicitud de incorporación de cambios abierta para actualizar esta dependencia. Verás éste error cuando se detecte una vulnerabilidad en una dependencia específica y ya exista una solicitud de cambios abierta para actualizar dicha dependencia a la última versión disponible.

Existen dos opciones: puedes revisar la solicitud de cambios abierta y fusionarla tan pronto como puedas garantizar que el cambio es seguro, o cerrar la solicitud de cambios y activar una solicitud nueva de actualización de seguridad. Para obtener más información, vea "Desencadenamiento manual de una solicitud de incorporación de cambios de Dependabot".

El Dependabot agotó el tiempo de espera durante su actualización

El Dependabot tardó más del límite de tiempo máximo permitido para valorar la actualización requerida y preparar una solicitud de cambios. Este error normalmente se ve únicamente en los repositorios de gran tamaño con muchos archivos de manifiesto, por ejemplo, en los proyectos de npm o yarn de un repositorio, que tienen cientos de archivos package.json. Las actualizaciones en el ecosistema de Composer también llevan más tiempo para su valoración y podrían exceder el tiempo de espera.

Es difícil tratar a este error. Si una actualización de versión agota el tiempo de espera, podría especificar las dependencias más importantes que se van a actualizar mediante el parámetro allow o, como alternativa, utilizar el parámetro ignore para excluir algunas de las dependencias de estas actualizaciones. El actualizar tu configuración podría permitir que el Dependabot revise la actualización de versión y genere la solicitud de cambios en el tiempo disponible.

Si una actualización de seguridad excede el tiempo de espera, puedes reducir la probabilidad de que esto suceda si mantienes las dependencias actualizadas, por ejemplo, habilitando las actualizaciones de versión. Para más información, vea "Configuración de las actualizaciones de la versión de Dependabot".

El Dependabot no puede abrir más solicitudes de cambios

Hay un límite en la cantidad de solicitudes de cambios abiertas que el Dependabot puede generar. Cuando se llega a éste límite, no se podrán abrir más solicitudes de cambios y se reportará este error. La mejor forma de resolver este error es revisar y fusionar algunas de las solicitudes de cambios abiertas.

Hay límites separados para las solicitudes de cambios de actualización de seguridad y de versión, y esto es para que aquellas de actualización de versión no bloqueen la creación de las de actualización de seguridad. El límite para las solicitudes de cambios de actualizaciones de seguridad es de 10. De manera predeterminada, el límite de las actualizaciones de versión es 5, pero puede cambiarlo mediante el parámetro open-pull-requests-limit en el archivo de configuración. Para más información, vea "Opciones de configuración para el archivo dependabot.yml".

La mejor forma de resolver este error es fusionar o cerrar algunas de las solicitudes de cambios existentes y activar una solicitud de cambios nueva manualmente. Para obtener más información, vea "Desencadenamiento manual de una solicitud de incorporación de cambios de Dependabot".

El Dependabot no puede resolver o acceder a tus dependencias

Si el Dependabot intenta verificar si las referencias de la dependencia necesitan actualizarse en un repositorio, pero no puede acceder a uno o más de los archivos referenciados, la operación fallará con el mensaje de error "Dependabot can't resolve your LANGUAGE dependency files". El tipo de error de la API es git_dependencies_not_reachable.

De forma similar, si el Dependabot no puede acceder a un registro de un paquete privado en el cual se ubica la dependencia, se generará alguno de los siguientes errores:

  • "Dependabot can't reach a dependency in a private package registry" (Dependabot no puede acceder a una dependencia en un registro de paquete privado)
    (Tipo de error de la API: private_source_not_reachable)
  • "Dependabot can't authenticate to a private package registry" (Dependabot no se puede autenticar en un registro de paquetes privado)
    (Tipo de error de la API: private_source_authentication_failure)
  • "Dependabot timed out while waiting for a private package registry" (Dependabot agota el tiempo de espera mientras espera un registro de paquete privado)
    (Tipo de error de la API: private_source_timed_out)
  • "Dependabot couldn't validate the certificate for a private package registry" (Dependabot no ha podido validar el certificado para un registro de paquete privado)
    (Tipo de error de la API: private_source_certificate_failure)

Para permitir añ Dependabot actualizar las referencias de dependencia exitosamente, asegúrate que todas las dependencias referencias se hospeden en ubicaciones accesibles.

Únicamente actualizaciones de versiones. 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 más información, vea "Administración de la configuración de seguridad y análisis para la organización". Puede configurar el acceso a los registros privados en el archivo de configuración dependabot.yml de un repositorio. Para más información, vea "Opciones de configuración para el archivo dependabot.yml". Adicionalmente, el Dependabot no es compatible con dependencias privadas de GitHub para todos los administradores de paquetes. Para obtener más información, vea "Acerca de las actualizaciones de versiones de Dependabot".

Activar una solicitud de cambios del Dependabot manualmente

Si desbloqueas al Dependabot, puedes activar manualmente un nuevo intento de crear una solicitud de cambios.

  • Actualizaciones de seguridad: muestre la alerta de Dependabot que indica el error que ha corregido y haga clic en Crear actualización de seguridad de Dependabot .
  • Actualizaciones de versión: en la pestaña Insights (Información) del repositorio, haga clic en Dependency graph (Gráfico de dependencias) y luego en la pestaña Dependabot. Haga clic en Last checked TIME ago (Última comprobación hace TIME) para ver el archivo de registro que Dependabot ha generado durante la última comprobación de actualizaciones de versión. Haga clic en Buscar actualizaciones.

Información adicional