Skip to main content

Comment le graphique de dépendances reconnaît les dépendances

Le graphique de dépendance analyse automatiquement les fichiers manifestes. Vous pouvez envoyer des données pour les dépendances qui ne peuvent pas être détectées automatiquement.

Qui peut utiliser cette fonctionnalité ?

Le graphe des dépendances est disponible pour les types de référentiels suivants :

  • Référentiels publics (activés par défaut)
  • Référentiels privés
  • Fourches

Le graphique de dépendances peut identifier les dépendances de votre projet à l’aide des méthodes suivantes.

MéthodeFonctionnement
Analyse statiqueAnalyse le manifeste et verrouille les fichiers dans votre référentiel
**
          Dependabot Tâches de graphe** | Utilise un DependabotGitHub Actions flux de travail pour générer des instantanés de dépendance |

| | | | | Soumission automatique | Exécute un workflow intégré GitHub Actions pour résoudre les dépendances au moment de la génération | | | API de soumission de dépendances | Accepte les données de dépendance que vous soumettez par programmation |

Une fois que les dépendances se trouvent dans le graphique, vous pouvez recevoir Dependabot alerts et Dependabot security updates pour toutes les vulnérabilités connues.

Analyse statique

Lorsque vous activez le graphique de dépendances, GitHub analyse votre référentiel pour rechercher les fichiers manifeste pris en charge et analyse le nom et la version de chaque package. Le graphique est mis à jour lorsque vous modifiez un manifeste ou un fichier de verrouillage pris en charge sur votre branche par défaut, ou lorsqu’une dépendance change dans son propre référentiel.

L’analyse statique peut identifier :

  • Dépendances directes explicitement définies dans un manifeste ou un fichier de verrouillage
  • Dépendances indirectes : dépendances de ces dépendances directes, également appelées « dépendances transitives », mais uniquement si elles sont définies dans un manifeste ou un fichier de verrouillage, et non si elles sont résolues au moment de la génération

Pour le graphique le plus fiable, vous devez utiliser des fichiers de verrouillage (ou leur équivalent), car ils définissent exactement les versions des dépendances directes et indirectes que vous utilisez actuellement. Les fichiers de verrouillage garantissent également que tous les contributeurs au référentiel utilisent les mêmes versions, ce qui facilite le test et le débogage du code. En outre, les dépendances indirectes déduites des fichiers manifestes (au lieu de verrouiller les fichiers) sont exclues des vérifications des vulnérabilités.

Envoi automatique des dépendances

Certains écosystèmes résolvent les dépendances indirectes au moment de la génération, de sorte que l’analyse statique ne peut pas voir l’arborescence complète des dépendances. Lorsque vous activez la soumission automatique de dépendances pour un référentiel, GitHub identifie automatiquement les dépendances transitives dans le référentiel pour les écosystèmes pris en charge. Consultez « Écosystèmes de packages pris en charge par le graphe des dépendances ».

En arrière-plan, l’envoi automatique de dépendances exécute un GitHub Actions flux de travail qui génère l’arborescence complète et la télécharge à l’aide du fichier API de soumission de dépendances. La soumission automatique de dépendances s’exécute sur GitHubles exécuteurs hébergés par défaut et compte pour vos GitHub Actions minutes. Si vous le souhaitez, vous pouvez choisir de l’exécuter sur des exécuteurs auto-hébergés ou exécuteurs plus grands.

Pour activer la soumission automatique de dépendances, consultez Configuration de l’envoi automatique des dépendances pour votre dépôt.

          Dependabot Tâches de graphes

          Dependabot Les travaux de graphe utilisent un type spécial de Dependabot travail pour générer un instantané de dépendance et le charger dans l’API de soumission de dépendances. 
          Dependabot Les tâches de graphe sont actuellement prises en charge pour les dépendances **Go** et **Python**.

Pour les écosystèmes pris en charge, Dependabot les tâches de traitement de graphe fournissent :

  • Une couverture complète des dépendances transitives signifie que Dependabot peut vous avertir des vulnérabilités dans les dépendances indirectes que l’analyse statique peut manquer.
  • Accès au Registre privé via Dependabot secrets configurés au niveau de l’organisation ou du référentiel. Pour plus d’informations, consultez « Configuration de l’accès aux registres privés pour Dependabot ».
  • Les packages privés qui ne sont pas accessibles par le biais de secrets configurés Dependabot sont omis correctement à partir du graphique de dépendances sans provoquer de défaillance.

Cette approche est similaire à la soumission automatique de dépendances, mais sans frais pendant GitHub Actions minutes. Il peut également accéder aux configurations à l’échelle de l’organisation pour les registres privés que vous avez configurés pour Dependabot.

Remarque

Dependabot Les travaux de graphe ont priorité sur la soumission automatique de dépendances. Par exemple, si votre référentiel Python a précédemment utilisé la soumission automatique de dépendances, ces travaux ne s’exécuteront plus une fois Dependabot que les travaux de graphe sont actifs. La seule exigence est que le graphique de dépendances est activé pour votre référentiel.

Le API de soumission de dépendances.

Vous pouvez appeler le API de soumission de dépendances dans votre propre script ou workflow. Cela est utile si :

  • Vous devez envoyer des dépendances transitives qui ne peuvent pas être détectées à partir de fichiers de verrouillage.
  • Vous devez créer une logique personnalisée ou utiliser un système CI/CD externe.

Les dépendances sont soumises sous forme d’un instantané à la API de soumission de dépendances. Il s’agit d’une liste de dépendances associées à un SHA de commit ainsi qu’à d’autres métadonnées, reflétant l’état actuel de votre référentiel.

Si vous appelez l’API dans un GitHub Actions flux de travail, vous pouvez utiliser une action prédéfinie pour votre écosystème qui collecte automatiquement les dépendances et les envoie à l’API. Sinon, vous pouvez écrire votre propre action ou appeler l’API à partir d’un système externe.

Les dépendances soumises seront affichées dans la revue des dépendances, mais ne sont pas disponibles dans les insights de dépendance de votre organisation.

Remarque

L’API de révision de dépendance et l’API API de soumission de dépendances fonctionnent ensemble. Cela signifie que l’API de révision de dépendance inclut les dépendances soumises via l’API API de soumission de dépendances.

Pour plus d’informations, consultez « Utilisation de l’API de soumission de dépendances ».

Hiérarchisation

Un référentiel peut utiliser plusieurs méthodes pour la soumission de dépendances, ce qui peut entraîner l’analyse du même manifeste de package plusieurs fois, potentiellement avec des sorties différentes de chaque analyse. Le graphe des dépendances utilise une logique de déduplication pour analyser les sorties, en donnant la priorité aux informations les plus précises pour chaque fichier manifeste.

Le graphe des dépendances affiche uniquement une instance de chaque fichier manifeste à l’aide des règles de priorité suivantes.

  1.        **Les soumissions des utilisateurs** ont la priorité absolue, car elles sont généralement créées lors de la génération des artefacts et contiennent donc les informations les plus complètes.
    
    • S’il existe plusieurs instantanés manuels provenant de différents détecteurs, ils sont classés par ordre alphabétique selon le corrélateur et le premier est utilisé.
    • S’il existe deux corrélateurs avec le même détecteur, les dépendances résolues sont fusionnées. Pour plus d’informations sur les corrélateurs et les détecteurs, consultez Points de terminaison d’API REST pour la soumission de dépendances.
  2.        **
           Dependabot Les travaux de graphe** ont la deuxième priorité la plus élevée. Pour les écosystèmes où Dependabot les travaux de graphe sont disponibles (actuellement Go et Python), ils sont prioritaires par rapport à la soumission automatique de dépendances.
    
  3.        **Les soumissions automatiques** ont la priorité suivante, car elles sont également créées pendant les builds d’artefacts, mais ne sont pas soumises par les utilisateurs.
    
  4.        **Les résultats de l’analyse statique** sont utilisés lorsqu’aucune autre donnée n’est disponible.