Le graphique de dépendances peut identifier les dépendances de votre projet à l’aide des méthodes suivantes.
| Méthode | Fonctionnement |
|---|---|
| Analyse statique | Analyse le manifeste et verrouille les fichiers dans votre référentiel |
| Dependabot tâches de graphe | Utilise un flux de travail Dependabot GitHub Actions pour générer des instantanés des dépendances |
| Soumission automatique | Exécute un workflow GitHub Actions intégré afin de résoudre les dépendances de compilation. |
| 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 l’envoi 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, la soumission automatique des dépendances déclenche un workflow GitHub Actions qui génère l’arborescence complète et la transmet à l’aide de API de soumission de dépendances. Par défaut, la soumission automatique des dépendances s’exécute sur des runners hébergés par GitHub et est décomptée de vos minutes GitHub Actions. Vous pouvez également décider de l’exécuter sur des runners auto-hébergés ou sur 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 graphiques
Cette approche utilise un type spécifique de tâche Dependabot qui crée un instantané des dépendances puis le transmet à l’API de soumission des dépendances. Cela n’est actuellement pris en charge que pour les dépendances Go .
Cette approche est similaire à la soumission automatique de dépendances, mais n’entraîne pas de frais pour GitHub Actions minutes. Elle peut également accéder aux configurations définies à l’échelle de l’organisation pour les registres privés que vous avez configurés pour Dependabot.
La API de soumission de dépendances
Vous pouvez invoquer API de soumission de dépendances depuis 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 à l’API API de soumission de dépendances sous la forme d’un instantané. 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 flux de travail GitHub Actions , 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.
-
**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.
-
**Les soumissions automatiques** ont la deuxième priorité la plus élevée, car elles sont également créées lors de la génération des artefacts, mais ne sont pas soumises par les utilisateurs. -
**Les résultats de l’analyse statique** sont utilisés lorsqu’aucune autre donnée n’est disponible.