Skip to main content

Résolution des erreurs Dependabot

Parfois, Dependabot n’est pas en mesure de lancer une demande de mise à jour de vos dépendances. Vous pouvez examiner l’erreur et débloquer Dependabot.

À propos des erreurs Dependabot

Dependabot déclenche des demandes de tirage pour mettre à jour les dépendances. Selon la configuration de votre dépôt, Dependabot peut déclencher des demandes de tirage pour des mises à jour de version et/ou des mises à jour de sécurité. Vous gérez ces demandes de tirage comme toute demande de tirage, mais des commandes supplémentaires sont disponibles. Pour plus d’informations sur l’activation des mises à jour de dépendances Dependabot, consultez « Configuration des mises à jour de sécurité Dependabot » et « Configuration de mises à jour de version Dependabot ».

Si quelque chose empêche Dependabot de déclencher une demande de tirage (pull request), cela est signalé comme une erreur.

Remarque : Dependabot ne crée pas de demandes de tirage pour les dépôts inactifs. Pour plus d’informations sur les critères d’inactivité, consultez « À propos des mises à jour de sécurité Dependabot » et « À propos des mises à jour de version Dependabot » pour les mises à jour de sécurité et de version, respectivement.

Examen des erreurs liées aux Dependabot security updates

Quand Dependabot n’est pas en mesure de créer une demande de tirage pour corriger une alerte Dependabot, il publie le message d’erreur sur l’alerte. L’affichage des Dependabot alerts montre la liste des alertes qui n’ont pas encore été résolues. Pour accéder à l’affichage des alertes, cliquez sur Dependabot alerts sous l’onglet Sécurité du dépôt. Si une demande de tirage destinée à corriger la dépendance vulnérable a été générée, l’alerte inclut un lien vers cette demande de tirage.

Capture d’écran de la vue des Dependabot alerts montrant deux alertes. À droite d’une alerte, un lien vers une demande de tirage, intitulé « #353 », est mis en évidence avec un encadré orange.

Il existe plusieurs raisons pour lesquelles une alerte peut ne pas avoir de lien vers une demande de tirage :

  1. Les Dependabot security updates ne sont pas activées pour le dépôt.
  2. L’alerte concerne une dépendance indirecte ou transitive qui n’est pas explicitement définie dans un fichier de verrouillage.
  3. Une erreur a empêché Dependabot de créer une demande de tirage.

Si une erreur a empêché Dependabot de créer une demande de tirage, vous pouvez afficher les détails de l’erreur en cliquant sur l’alerte.

Examen des erreurs liées aux Dependabot version updates

Lorsque Dependabot est bloqué pour créer une demande de tirage pour mettre à jour une dépendance dans un écosystème, vous pouvez afficher la liste des journaux d’activité pour savoir plus sur l’erreur .

La liste des journaux des projets est accessible à partir du graphique de dépendance d'un référentiel. Dans le graphique de dépendance, cliquez sur l’onglet Dependabot, puis à droite du fichier manifeste concerné, cliquez sur Projets de mise à jour récents.

Pour afficher les fichiers journaux complets d’un projet particulier, à droite de l’entrée du journal qui vous intéresse, cliquez sur Afficher les journaux d'activité.

Capture d’écran des entrées du journal des projets Dependabot pour un fichier manifeste. Une touche intitulée « Afficher les journaux d'activité » est mise en évidence avec un contour orange foncé.

Pour plus d’informations, consultez « Affichage des journaux d’activité des tâches Dependabot ».

Présentation des erreurs Dependabot

Les demandes de tirage pour les mises à jour de sécurité visent à mettre à niveau une dépendance vulnérable vers la version minimale qui inclut un correctif pour la vulnérabilité. En revanche, les demandes de tirage pour les mises à jour de version visent à mettre à niveau une dépendance vers la dernière version autorisée par le manifeste du package et les fichiers de configuration Dependabot. Ainsi, certaines erreurs sont propres à un type de mise à jour.

Dependabot ne peut pas mettre à jour la dépendance vers une version non vulnérable

Mises à jour de sécurité uniquement. Dependabot ne peut pas créer une demande de tirage pour mettre à jour la dépendance vulnérable vers une version sécurisée sans rompre d’autres dépendances dans le graphe de dépendances de ce dépôt.

Chaque application qui a des dépendances a un graphe de dépendances, autrement dit un graphe orienté acyclique de chaque version de package dont l’application dépend directement ou indirectement. Chaque fois qu’une dépendance est mise à jour, ce graphe doit être résolu, sinon l’application n’est pas générée. Quand un écosystème a un graphe de dépendances profond et complexe, par exemple, npm et RubyGems, il est souvent impossible de mettre à niveau une seule dépendance sans mettre à niveau l’ensemble de l’écosystème.

La meilleure façon d’éviter ce problème est de rester à jour avec les dernières versions publiées, par exemple, en activant les mises à jour de version. Cela augmente la probabilité qu’une vulnérabilité dans une dépendance puisse être résolue par une simple mise à niveau qui ne rompt pas le graphe de dépendances. Pour plus d’informations, consultez « Configuration de mises à jour de version Dependabot ».

Dependabot tente de mettre à jour les dépendances sans alerte

Mises à jour de sécurité uniquement. Dependabot met à jour les dépendances transitives définies explicitement qui sont vulnérables pour tous les écosystèmes. Pour npm, Dependabot déclenche une demande de tirage qui met également à jour la dépendance parente s’il s’agit de la seule façon de corriger la dépendance transitive.

Par exemple, un projet avec une dépendance envers la version ~2.0.0 de A qui a une dépendance transitive envers la version ~1.0.0 de B qui a été résolue en 1.0.1.

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

Si une vulnérabilité de sécurité est publiée pour les versions <2.0.0 de B et qu’un correctif est disponible pour 2.0.0, Dependabot tente de mettre à jour B mais détecte que c’est impossible en raison de la restriction en mise place par A, qui autorise uniquement les versions vulnérables inférieures. Pour corriger la vulnérabilité, Dependabot recherche les mises à jour de la dépendance A qui autorisent l’utilisation de la version corrigée de B.

Dependabot génère automatiquement une demande de tirage qui met à niveau les dépendances transitives parentes et enfants verrouillées.

Dependabot ne parvient pas à fermer une demande de tirage ouverte pour une mise à jour qui a déjà été appliquée sur la branche par défaut

Dependabot ferme les demandes de tirage pour les mises à jour des dépendances, une fois qu’il détecte que ces mises à jour ont été validées sur la branche par défaut. Toutefois, dans de rares cas, la demande de tirage peut rester ouverte. Si vous remarquez que vous avez validé manuellement une mise à jour vers une dépendance et que la demande de tirage pour cette même mise à jour est toujours ouverte, vous pouvez utiliser l’une des commandes suivantes dans un commentaire sur la demande de tirage :

  • @dependabot recreate ou
  • @dependabot rebase.

Les commentaires déclenchent Dependabot pour vérifier si la dépendance ne peut plus être mise à jour ou si elle n’est plus vulnérable. Si Dependabot détecte que la demande de tirage n’est plus nécessaire, il ferme la demande de tirage dans ce cas particulier.

Pour plus d’informations sur les commandes de commentaire Dependabot, consultez « Gestion des demandes de tirage (pull request) pour les mises à jour des dépendances ».

Dependabot ne peut pas effectuer une mise à jour vers la version requise, car il existe déjà une demande de tirage ouverte pour la dernière version

Mises à jour de sécurité uniquement. Dependabot ne crée pas de demande de tirage pour mettre à jour la dépendance vulnérable vers une version sécurisée, car il existe déjà une demande de tirage ouverte pour mettre à jour cette dépendance. Cette erreur s’affiche quand une vulnérabilité est détectée dans une seule dépendance et qu’il existe déjà une demande de tirage ouverte pour mettre à jour la dépendance vers la dernière version.

Il existe deux options : vous pouvez passer en revue la demande de tirage ouverte et la fusionner dès que vous êtes sûr que la modification est sécurisée ou fermer cette demande de tirage et déclencher une nouvelle demande de tirage de mise à jour de sécurité. Pour plus d’informations, consultez « Déclenchement manuel d’une demande de tirage Dependabot ».

Aucune mise à jour de sécurité n’est nécessaire, car la DÉPENDANCE n’est plus vulnérable

Correctifs de sécurité uniquement. Dependabot ne peut pas fermer une demande de tirage pour mettre à jour une dépendance qui n’est pas, ou n’est plus, vulnérable. Cette erreur peut s’afficher lorsque graphe des dépendances données sont obsolètes ou lorsque les données graphe des dépendances et Dependabot ne sont pas d’accord si une version particulière d’une dépendance est vulnérable.

Pour déboguer le problème, nous vous recommandons d’examiner d’abord les graphe des dépendances de votre référentiel, de passer en revue la version détectée pour la dépendance et de case activée si la version identifiée correspond à ce qui est utilisé dans votre référentiel.

Si vous pensez que vos données graphe des dépendances sont obsolètes, vous devrez peut-être mettre à jour manuellement les graphe des dépendances de votre référentiel ou examiner vos informations de dépendance plus loin. Pour plus d’informations, consultez « Résolution des problèmes liés au graphe de dépendances ».

Si vous êtes en mesure de confirmer que la version de dépendance n’est plus vulnérable, vous pouvez fermer les Dependabot demande de tirage.

Dependabot a expiré pendant sa mise à jour

Dependabot a pris plus de temps que le temps maximal autorisé pour évaluer la mise à jour requise et préparer une demande de tirage. Cette erreur n’est généralement observée que pour les grands dépôts avec de nombreux fichiers manifestes, par exemple, les projets monodépôts npm ou yarn avec des centaines de fichiers package.json. L’évaluation des mises à jour apportées à l’écosystème Composer peut également prendre plus de temps, avec le risque que les mises à jour expirent.

Cette erreur est difficile à résoudre. Si une mise à jour de version expire, vous pouvez spécifier les dépendances les plus importantes à mettre à jour en utilisant le paramètre allow ou, sinon, utiliser le paramètre ignore pour exclure certaines dépendances des mises à jour. La mise à jour de votre configuration peut autoriser Dependabot à passer en revue la mise à jour de version et à générer la demande de tirage dans le temps disponible.

Si une mise à jour de sécurité expire, vous pouvez réduire les risques que cela se reproduise en maintenant les dépendances à jour, par exemple en activant les mises à jour de version. Pour plus d’informations, consultez « Configuration de mises à jour de version Dependabot ».

Dependabot ne peut pas ouvrir plus de demandes de tirage

Le nombre de demandes de tirage ouvertes générées par Dependabot est limité. Quand cette limite est atteinte, aucune nouvelle demande de tirage n’est ouverte et cette erreur est signalée. La meilleure façon de résoudre cette erreur consiste à passer en revue et à fusionner certaines des demandes de tirage ouvertes.

Il existe des limites distinctes pour les demandes de tirage de mise à jour de sécurité et de mise à jour de version, afin que les demandes de tirage de mise à jour de version ouvertes ne puissent pas empêcher la création d’une demande de tirage de mise à jour de sécurité. La limite pour les demandes de tirage de mise à jour de sécurité est 10. Par défaut, la limite des mises à jour de version est 5, mais vous pouvez la changer avec le paramètre open-pull-requests-limit dans le fichier de configuration. Pour plus d’informations, consultez « Options de configuration pour le fichier dependabot.yml ».

La meilleure façon de résoudre cette erreur consiste à fusionner ou fermer certaines des demandes de tirage existantes et à déclencher une nouvelle demande de tirage manuellement. Pour plus d’informations, consultez « Déclenchement manuel d’une demande de tirage Dependabot ».

Dependabot ne peut pas résoudre vos dépendances ou y accéder

Si Dependabot tente de vérifier si des références de dépendance doivent être mises à jour dans un dépôt, mais qu’il ne peut pas accéder à un ou plusieurs des fichiers référencés, l’opération échoue avec le message d’erreur indiquant que Dependabot ne peut pas résoudre vos fichiers de dépendance dans le langage concerné. Le type d’erreur de l’API est git_dependencies_not_reachable.

De même, si Dependabot ne peut pas accéder à un registre de package privé dans lequel se trouve une dépendance, l’une des erreurs suivantes est générée :

  • « Dependabot ne peut pas atteindre une dépendance dans un registre de package privé »
    (Type d’erreur de l’API : private_source_not_reachable)
  • « Dependabot ne peut pas s’authentifier auprès d’un registre de package privé »
    (Type d’erreur de l’API : private_source_authentication_failure)
  • « Dependabot a expiré en attendant un registre de package privé »
    (Type d’erreur de l’API : private_source_timed_out)
  • « Dependabot n’a pas pu valider le certificat pour un registre de package privé »
    (Type d’erreur de l’API : private_source_certificate_failure)

Pour autoriser Dependabot à mettre à jour les références de dépendances correctement, assurez-vous que toutes les dépendances référencées sont hébergées à des emplacements accessibles.

Mises à jour de version uniquement. Lors de l’exécution de mises à jour de sécurité ou de version, certains écosystèmes doivent être capables de résoudre toutes les dépendances de leur source pour vérifier que les mises à jour ont réussi. Si vos fichiers manifeste ou de verrouillage contiennent des dépendances privées, Dependabot doit être capable d’accéder à l’emplacement auquel ces dépendances sont hébergées. Les propriétaires de l’organisation peuvent octroyer à Dependabot un accès aux dépôts privés contenant des dépendances pour un projet au sein de cette même organisation. Pour plus d’informations, consultez « Gestion des paramètres de sécurité et d'analyse pour votre organisation ». Vous pouvez configurer un accès aux registres privés dans le fichier de configuration dependabot.yml d’un dépôt. Pour plus d’informations, consultez « Options de configuration pour le fichier dependabot.yml ».En outre, Dependabot ne prend pas en charge les dépendances GitHub privées pour tous les gestionnaires de package. Pour plus d’informations, consultez « À propos des mises à jour de version Dependabot ».

Dependabot ne parvient pas à regrouper un ensemble de dépendances en une demande de tirage unique pour les Dependabot version updates

Les paramètres de configuration groups du fichier dependabot.yml peuvent s’appliquer aux mises à jour de version et aux correctifs de sécurité. Utilisez la clé applies-to pour spécifier où (mises à jour de version ou correctifs de sécurité) un ensemble de règles de regroupement est appliqué.

Vous ne pouvez pas appliquer un seul ensemble de règles de regroupement aux mises à jour de version et aux correctifs de sécurité. Au lieu de cela, si vous souhaitez regrouper à la fois les mises à jour de version et les correctifs de sécurité à l’aide des mêmes critères, vous devez définir deux ensembles de règles, nommés séparément, groupant des ensembles de règles.

Lorsque vous configurez des mises à jour de version groupées, vous devez configurer des groupes par écosystème de packages. Pour déboguer le problème, nous vous recommandons d’examiner les journaux d’activité. Pour plus d’informations sur l’accès aux journaux d’activité d’un manifeste, consultez la section « Examen des erreurs avec Dependabot version updates » ci-dessus.

Vous avez peut-être créé involontairement des groupes vides. Cela se produit, par exemple, lorsque vous définissez un dependency-type dans la clé allow pour la tâche globale.

allow:
  dependency-type: production
  # this restricts the entire job to production dependencies
  groups:
      development-dependencies:
        dependency-type: "development"
        # this group will always be empty

Dans cet exemple, Dependabot :

  1. Examinez votre liste de dépendances et limitez le travail aux dépendances utilisées uniquement dans production.
  2. Essayez de créer un groupe appelé development-dependencies qui est un sous-ensemble de cette liste réduite.
  3. Indiquez que le groupe development-dependencies est vide, car toutes les development dépendances ont été supprimées à l’étape 1.
  4. Mettez à jour de manière individuelle toutes les dépendances qui ne se trouvent pas dans le groupe. Étant donné que le groupe pour les dépendances en production est vide, Dependabot ignore le groupe et crée une demande de tirage distincte pour chaque dépendance.

Vous devez vous assurer que les paramètres de configuration ne s’annulent pas les uns les autres et les mettre à jour de manière appropriée dans votre fichier de configuration.

Pour plus d’informations sur comment configurer des groupes Dependabot version updates, consultez « Options de configuration pour le fichier dependabot.yml ».

Dependabot ne parvient pas à regrouper un ensemble de dépendances en une demande de tirage unique pour les Dependabot security updates

Les paramètres de configuration groups du fichier dependabot.yml peuvent s’appliquer aux mises à jour de version et aux correctifs de sécurité. Utilisez la clé applies-to pour spécifier où (mises à jour de version ou correctifs de sécurité) un ensemble de règles de regroupement est appliqué. Vérifiez que le regroupement est configuré pour s’appliquer aux correctifs de sécurité. Si la clé applies-to est absente d’un ensemble de règles de regroupement dans votre configuration, par défaut, toutes les règles de groupe s’appliquent uniquement aux mises à jour de version.

Vous ne pouvez pas appliquer un seul ensemble de règles de regroupement aux mises à jour de version et aux correctifs de sécurité. Au lieu de cela, si vous souhaitez regrouper à la fois les mises à jour de version et les correctifs de sécurité à l’aide des mêmes critères, vous devez définir deux ensembles de règles, nommés séparément, groupant des ensembles de règles.

Pour les correctifs de sécurité groupés, Dependabot utilise les recommandations suivantes pour créer des demandes de tirage groupées.

  • Dependabot regroupe les dépendances d’un même écosystème de packages qui se trouvent dans différents répertoires. Le regroupement entre les annuaires se produit uniquement pour les annuaires non configurés dans le fichier dependabot.yml.
  • Dependabot applique d’autres options de personnalisation pertinentes du fichier dependabot.yml aux demandes de tirage pour les correctifs de sécurité groupés. Les règles de groupe configurées dans un fichier dependabot.yml remplacent les paramètres d’interface utilisateur pour activer ou désactiver les correctifs de sécurité groupés au niveau de l’organisation ou du référentiel.
  • Dependabot ne regroupe pas les dépendances de différents écosystèmes de packages.
  • Dependabot ne regroupe pas les correctifs de sécurité avec les mises à jour de version.

Pour plus d’informations, consultez « Personnalisation des mises à jour des dépendances » et « À propos des mises à jour de sécurité Dependabot ».

Dependabot ne parvient pas à mettre à jour l’une des dépendances d’une demande de tirage groupée

Vous pouvez utiliser différentes techniques de résolution des problèmes pour les mises à jour de version et les correctifs de sécurité ayant échoué.

Gestion des échecs des mises à jour de version groupées

Mises à jour de version uniquement. Dependabot affiche l’échec de la mise à jour dans vos journaux, ainsi que dans le résumé du travail à la fin de vos journaux. Vous devez utiliser le commentaire @dependabot recreate sur la demande de tirage pour générer à nouveau le groupe. Pour plus d’informations, consultez « Gestion des demandes de tirage (pull request) pour les mises à jour des dépendances ».

Si la dépendance ne parvient toujours pas à se mettre à jour, vous devez utiliser la configuration exclude-patterns afin que la dépendance soit exclue du groupe. Dependabot déclenche automatiquement une demande de tirage pour mettre à jour la dépendance.

Si la dépendance ne parvient toujours pas à se mettre à jour, il peut y avoir un problème avec la dépendance elle-même ou avec Dependabot pour cet écosystème spécifique.

Si vous souhaitez ignorer les mises à jour pour la dépendance, vous devez effectuer l’une des opérations suivantes.

Gestion des échecs des correctifs de sécurité groupés

Correctifs de sécurité uniquement. Si une demande de tirage groupée pour des correctifs de sécurité échoue ou ne peut pas être fusionnée, nous vous recommandons d’ouvrir manuellement les demandes de tirage pour augmenter les versions des changements cassants. Lorsque vous mettez à jour manuellement un package inclus dans une demande de tirage groupée, Dependabot rebase la demande de tirage afin qu’elle n’inclue pas le package mis à jour manuellement.

Si vous souhaitez ignorer les mises à jour pour la dépendance, vous devez effectuer l’une des opérations suivantes.

Échec de l’intégration continue (CI) sur ma demande de tirage groupée

Mises à jour de version uniquement. Si la défaillance est due à une dépendance unique, vous devez utiliser la configuration exclude-patterns afin que la dépendance soit exclue du groupe. Dependabot déclenche automatiquement une demande de tirage pour mettre à jour la dépendance.

Si vous souhaitez ignorer les mises à jour pour la dépendance, vous devez effectuer l’une des opérations suivantes.

Si vous continuez à voir des échecs d’intégration continue, vous devez supprimer la configuration du groupe afin que Dependabot se rétablissent pour déclencher des demandes de tirage individuelles pour chaque dépendance. Ensuite, vous devez vérifier et confirmer que la mise à jour fonctionne correctement pour chaque demande de tirage individuelle.

Déclenchement manuel d’une demande de tirage Dependabot

Si vous débloquez Dependabot, vous pouvez déclencher manuellement une nouvelle tentative de création d’une demande de tirage.

  • Mises à jour de sécurité : affichez l’alerte Dependabot qui montre l’erreur que vous avez corrigée et cliquez sur Créer une mise à jour de sécurité Dependabot .
  • Mises à jour de version : sous l’onglet Insights du dépôt, cliquez sur Graphe de dépendances, puis cliquez sur l’onglet Dependabot. Cliquez sur Dernière vérification il y a TEMPS pour afficher le fichier journal que Dependabot a généré lors de la dernière vérification des mises à jour de version. Cliquez sur Rechercher les mises à jour.

Pour aller plus loin