Skip to main content

Écosystèmes de packages pris en charge pour le graphe des dépendances

Le graphe des dépendances prend en charge un large éventail d’écosystèmes.

À propos du graphe des dépendances

Le graphe des dépendances est un résumé des fichiers manifest et des fichiers de verrouillage dans un dépôt. Il contient également toutes les dépendances soumises pour le dépôt à l'aide de l'interface API de soumission de dépendances. Pour chaque dépôt, il affiche les dépendances, c’est-à-dire les écosystèmes et les packages dont il dépend.

Pour chaque dépendance, vous pouvez voir la gravité de la vulnérabilité. Vous pouvez également rechercher une dépendance spécifique à partir de la barre de recherche. Les dépendances sont triées automatiquement par gravité de vulnérabilité.

GitHub Enterprise Server ne récupère pas les informations de licence pour les dépendances, et ne calcule pas les informations sur les dépendants, les dépôts et les packages qui dépendent d’un dépôt. Pour plus d’informations, consultez « À propos du graphe de dépendances ».

Dans cet article, vous pouvez voir ce que sont les écosystèmes pris en charge.

Écosystèmes de packages pris en charge

Les formats recommandés définissent explicitement les versions utilisées pour toutes les dépendances directes et indirectes. Si vous utilisez ces formats, votre graphe des dépendances est plus précis. Cela reflète également la configuration actuelle de la build et permet au graphe de dépendances de signaler les vulnérabilités dans les dépendances directes et indirectes.

Gestionnaire de packageLangagesFormats recommandésTous les formats pris en charge
CargoRustCargo.lockCargo.toml, Cargo.lock
ComposerPHPcomposer.lockcomposer.json, composer.lock
NuGetLangages .NET (C#, F#, VB), C++.csproj, .vbproj, .nuspec, .vcxproj, .fsproj.csproj, .vbproj, .nuspec, .vcxproj, .fsproj, packages.config
Workflows GitHub ActionsYAML.yml, .yaml.yml, .yaml
Modules GoGogo.modgo.mod
MavenJava, Scalapom.xmlpom.xml
npmJavaScriptpackage-lock.jsonpackage-lock.json, package.json
pipPythonrequirements.txt, pipfile.lockrequirements.txt, pipfile, pipfile.lock, setup.py
pnpmJavaScriptpnpm-lock.yamlpackage.json, pnpm-lock.yaml
pubDartpubspec.lockpubspec.yaml, pubspec.lock
Python PoetryPythonpoetry.lockpoetry.lock, pyproject.toml
RubyGemsRubyGemfile.lockGemfile.lock, Gemfile, *.gemspec
Gestionnaire de package SwiftSwiftPackage.resolvedPackage.resolved
YarnJavaScriptyarn.lockpackage.json, yarn.lock

Remarques :

  • Si vous listez vos dépendances Python dans un fichier setup.py, il est possible que nous ne soyons pas en mesure d’analyser et de lister chaque dépendance dans votre projet.

  • Les workflows GitHub Actions doivent se trouver dans le répertoire .github/workflows/ d’un dépôt pour être reconnus en tant que manifestes. Toutes les actions ou workflows référencés avec la syntaxe jobs[*].steps[*].uses ou jobs.<job_id>.uses sont analysés en tant que dépendances. Pour plus d’informations, consultez « Workflow syntax for GitHub Actions ».

  • Dependabot ne créera Dependabot alerts que pour les GitHub Actions vulnérables qui utilisent le contrôle de version sémantique. Vous ne recevrez pas d'alertes pour une action vulnérable qui utilise le contrôle de version SHA. Si vous utilisez GitHub Actions avec le contrôle de version SHA, nous vous recommandons d'activer Dependabot version updates pour votre référentiel ou votre organisation afin que les actions que vous utilisez soient mises à jour avec les dernières versions. Pour en savoir plus, reportez-vous à « À propos des alertes Dependabot » et « À propos des mises à jour de version Dependabot ».

Écosystèmes de package pris en charge via les actions de soumission de dépendances

Vous pouvez utiliser API de soumission de dépendances pour ajouter des dépendances au moment du build à votre graphe des dépendances, ou ajouter des dépendances du gestionnaire de package ou de l’écosystème de votre choix au graphe des dépendances, même si l’écosystème ne figure pas dans la liste des écosystèmes pris en charge ci-dessus. Les informations de dépendance de ces dépendances envoyées circulent à leur tour dans des Dependabot updates et Dependabot alerts.

Les dépendances soumises à un projet avec l’API API de soumission de dépendances indiquent le détecteur qui a été utilisé pour leur soumission et quand elles ont été soumises. Pour plus d'informations sur les API de soumission de dépendances, consultez « Utilisation de l’API de soumission de dépendances. »

Vous utilisez généralement l’API API de soumission de dépendances dans un workflow GitHub Actions pour soumettre des dépendances pour votre projet lorsque celui-ci est généré. La façon la plus simple d’utiliser l’API API de soumission de dépendances consiste à ajouter une action prédéfinie à votre référentiel pour collecter et convertir la liste des dépendances au format d’instantané requis, puis soumettre la liste à l’API. Vous trouverez des liens vers les actions actuellement disponibles dans le tableau ci-dessous.

ÉcosystèmeAction
GoSoumission de dépendance Go
GradleSoumission de dépendances Gradle
MavenSoumission de dépendances Maven Dependency Tree
FraiseuseSoumission de dépendances Mill
ScalaSoumission de dépendances Sbt
NuGet et autresAction de soumission de dépendances pour la détection de composant

Remarque : Pour l’action de soumission de dépendance pour la détection de composants, les autres écosystèmes pris en charge incluent Vcpkg, Conan, Conda, Crates, ainsi que NuGet.

Par exemple, le workflow Soumission de dépendance Go suivant calcule les dépendances d’une cible de génération Go (fichier Go avec une fonction main) et soumet la liste à l’API API de soumission de dépendances.

name: Go Dependency Submission
on:
  push:
    branches:
      - main

# The API requires write permission on the repository to submit dependencies
permissions:
  contents: write

# Environment variables to configure Go and Go modules. Customize as necessary
env:
  GOPROXY: '' # A Go Proxy server to be used
  GOPRIVATE: '' # A list of modules are considered private and not requested from GOPROXY
jobs:
  go-action-detection:
    runs-on: ubuntu-latest
    steps:
      - name: 'Checkout Repository'
        uses: actions/checkout@v4

      - uses: actions/setup-go@v5
        with:
          go-version: ">=1.18.0"

      - name: Run snapshot action
        uses: actions/go-dependency-submission@v1
        with:
            # Required: Define the repo path to the go.mod file used by the
            # build target
            go-mod-path: go-example/go.mod
            #
            # Optional. Define the repo path of a build target,
            # a file with a `main()` function.
            # If undefined, this action will collect all dependencies
            # used by all build targets for the module. This may
            # include Go dependencies used by tests and tooling.
            go-build-target: go-example/cmd/octocat.go

Vous pouvez également créer votre propre action. Pour plus d’informations, consultez « Utilisation de l’API de soumission de dépendances ».