Skip to main content

Configuration de la soumission automatique des dépendances pour votre dépôt

Vous pouvez utiliser la soumission automatique des dépendances pour envoyer des données de dépendance transitives dans votre dépôt. Cela vous permet d’analyser ces dépendances transitives à l’aide du graphe des dépendances.

Qui peut utiliser cette fonctionnalité ?

Propriétaires de référentiels, propriétaire d’organisations, gestionnaires de sécurité et utilisateurs avec le rôle d’administrateur

À propos de la soumission automatique des dépendances

Remarque

La soumission automatique des dépendances ne prend pas en charge tous les écosystèmes de packages. Pour obtenir la liste actuelle des écosystèmes pris en charge, consultez Écosystèmes de packages pris en charge pour le graphe des dépendances.

Le graphe des dépendances analyse les fichiers manifestes et de verrouillage dans un référentiel, afin d’aider les utilisateurs à comprendre les packages en amont dont leur projet logiciel dépend. Toutefois, dans certains écosystèmes, la résolution des dépendances transitives se produit au moment de la génération, et les données GitHub ne peuvent pas détecter automatiquement toutes les dépendances en fonction du contenu du dépôt seul.

Lorsque vous activez la soumission automatique de dépendances pour un dépôt, GitHub identifie automatiquement les dépendances transitives dans le dépôt et envoie ces dépendances à GitHub avec API de soumission de dépendances. Vous pouvez ensuite explorer ces dépendances à l’aide du graphe des dépendances. Dependabot vous informe des mises à jour de sécurité pour ces dépendances en générant Dependabot alerts .

L’utilisation des soumissions de dépendances automatiques compte dans vos minutes GitHub Actions. Pour plus d’informations, consultez « À propos de la facturation de GitHub Actions ».

Si vous le souhaitez, vous pouvez choisir de configurer des exécuteurs auto-hébergés ou des exécuteurs plus grands hébergés par GitHub pour la soumission automatique de dépendances. Pour plus d'informations, voir Utiliser des exécuteurs auto-hébergés pour la soumission automatique de dépendances et Utiliser des exécuteurs plus importants hébergés par GitHub pour la soumission automatique de dépendances.

Prérequis

Le graphe des dépendances doit être activé pour que le dépôt vous permette d’activer la soumission automatique des dépendances.

Vous devez également activer GitHub Actions pour le dépôt afin d’utiliser l’envoi automatique de dépendances. Pour plus d’informations, consultez « Gestion des paramètres de GitHub Actions pour un dépôt ».

Activation de la soumission automatique des dépendances

Les administrateurs de dépôt peuvent activer ou désactiver la soumission automatique des dépendances pour un dépôt en suivant les étapes décrites dans cette procédure.

Les propriétaires d’organisation peuvent activer la soumission automatique des dépendances pour plusieurs dépôts à l’aide d’une configuration de sécurité. Pour plus d’informations, consultez « Création d’une configuration de sécurité personnalisée ».

  1. Sur GitHub, accédez à la page principale du référentiel.

  2. Sous le nom de votre dépôt, cliquez sur Paramètres. Si vous ne voyez pas l’onglet « Paramètres », sélectionnez le menu déroulant , puis cliquez sur Paramètres.

    Capture d’écran d’un en-tête de dépôt montrant les onglets. L’onglet « Paramètres » est mis en évidence avec un encadré orange foncé.

  3. Dans la section « Sécurité » de la barre latérale, cliquez sur Advanced Security.

  4. Sous « Graphe des dépendances », cliquez sur le menu déroulant en regard de « Soumission automatique des dépendances », puis sélectionnez Activé.

Une fois que vous avez activé l’envoi automatique de dépendances pour un dépôt, GitHub effectue les actions suivantes :

  • Surveillez les modifications apportées aux fichiers manifestes à la racine du référentiel sur toutes les branches du référentiel.
  • Exécutez l’action de génération du graphe des dépendances associée à l’écosystème de packages de chaque manifeste modifié.
  • Effectuez une soumission automatique des dépendances avec les résultats.

Vous pouvez afficher des détails sur les flux de travail automatiques exécutés en affichant l’onglet Actions de votre dépôt.

Remarque

Après avoir activé la soumission automatique des dépendances, nous déclencherons automatiquement une exécution de l’action. Une fois activée, elle s’exécutera chaque fois qu’un commit vers la branche par défaut mettra à jour un manifeste.

Utilisation d’exécuteurs auto-hébergés pour la soumission automatique des dépendances

Vous pouvez configurer des exécuteurs auto-hébergés pour exécuter des travaux de soumission de dépendances automatiques, au lieu d’utiliser l’infrastructure GitHub Actions.

  1. Provisionnez un ou plusieurs exécuteurs auto-hébergés au niveau du dépôt ou de l’organisation. Pour plus d’informations, consultez « À propos des exécuteurs auto-hébergés » et « Ajout d’exécuteurs auto-hébergés ». Les exécuteurs auto-hébergés doivent s’exécuter sur Linux ou macOS, et doivent avoir Docker installé.
  2. Attribuez une étiquette dependency-submission à chaque exécuteur que vous souhaitez utiliser pour l’envoi automatique des dépendances. Pour plus d’informations, consultez « Utilisation d’étiquettes avec des exécuteurs auto-hébergés ».
  3. Dans la section « Sécurité » de la barre latérale, cliquez sur Advanced Security.
  4. Sous « Graphe des dépendances », cliquez sur le menu déroulant en regard de « Soumission automatique des dépendances », puis sélectionnez Activé pour les exécuteurs étiquetés.

Une fois activés, les travaux automatiques de soumission des dépendances s’exécutent sur les exécuteurs auto-hébergés, sauf si :

  • Les exécuteurs auto-hébergés ne sont pas disponibles.
  • Aucun groupe d’exécuteurs n’est marqué avec une étiquette dependency-submission.

Remarque

Pour les projets Maven ou Gradle qui utilisent des exécuteurs auto-hébergés avec des registres Maven privés, vous devez modifier le fichier de paramètres du serveur Maven afin d’autoriser les flux de travail de soumission des dépendances à se connecter aux registres. Pour plus d’informations sur le fichier de paramètres du serveur Maven, consultez Paramètres de sécurité et de déploiement dans la documentation Maven.

Utilisation d’exécuteurs plus grands hébergés par GitHub pour la soumission automatique de dépendances

Les utilisateurs de GitHub Team ou GitHub Enterprise Cloud peuvent utiliser des exécuteurs plus grands pour exécuter des travaux de soumissions de dépendances automatiques.

  1. Provisionnez un exécuteur de plus grande taille au niveau de l’organisation avec le nom dependency-submission. Pour plus d’informations, consultez « Ajout d’un exécuteur plus grand à une organisation ».
  2. Donnez à votre dépôt l’accès à l’exécuteur. Pour plus d’informations, consultez « Autoriser des référentiels à accéder à des exécuteurs plus grands ».
  3. Sous « Graphe des dépendances », cliquez sur le menu déroulant en regard de « Soumission automatique des dépendances », puis sélectionnez Activé pour les exécuteurs étiquetés.

Résolution des problèmes liés à la soumission automatique des dépendances

La soumission automatique de dépendances permet de mettre en cache les téléchargements de packages entre les exécutions à l’aide de l’action cache pour accélérer les flux de travail. Pour les runners auto-hébergés, il se peut que vous souhaitiez gérer ce cache au sein de votre propre infrastructure. Pour ce faire, vous pouvez désactiver la mise en cache intégrée en définissant une variable d’environnement de GH_DEPENDENCY_SUBMISSION_SKIP_CACHE sur true. Pour plus d’informations, consultez « Stocker des informations dans des variables ».

Déduplication du manifeste

Le graphe des dépendances peut découvrir les dépendances de trois manières différentes : analyse statique, soumission automatique et soumission manuelle. Un référentiel peut avoir plusieurs méthodes configurées, ce qui peut entraîner l’analyse multiple du même manifeste de package, avec des sorties potentiellement différentes à 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. 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.
  3. Les résultats de l’analyse statique sont utilisés lorsqu’aucune autre donnée n’est disponible.

Projets Maven

Pour les projets Maven, la soumission automatique des dépendances exécute une duplication (fork) open source de la soumission des dépendances de l’arborescence des dépendances Maven. La duplication (fork) permet à GitHub de rester synchronisé avec le référentiel en amont tout en conservant certaines modifications qui s’appliquent uniquement à la soumission automatique. La source de la duplication (fork) est disponible à l’adresse advanced-security/maven-dependency-submission-action.

Si les dépendances de votre référentiel semblent inexactes, vérifiez que l’horodatage du dernier build du graphe des dépendances correspond à la dernière modification de votre fichier pom.xml. L’horodatage est visible dans la table des alertes dans l’onglet Dependabot alerts du référentiel. L’envoi (push) d’un commit qui met à jour pom.xml déclenchera une nouvelle exécution de l’action de Soumission de l’arborescence des dépendances et forcera une régénération du graphe des dépendances de ce référentiel.

Projets Gradle

Pour les projets Gradle, la soumission automatique des dépendances exécute une duplication (fork) des actions Gradle open source à partir de gradle/actions. La duplication (fork) est disponible à l’adresse actions/gradle-build-tools-actions. Vous pouvez afficher les résultats de l’action de soumission automatique sous l’onglet Actions de votre référentiel. Chaque exécution sera étiquetée « Soumission automatique des dépendances (Gradle) » et sa sortie contiendra la charge utile JSON que l’action a soumise à l’API.

Pour aller plus loin