À 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.
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 package | Langages | Formats recommandés | Tous les formats pris en charge |
---|---|---|---|
Cargo | Rust | Cargo.lock | Cargo.toml , Cargo.lock |
Composer | PHP | composer.lock | composer.json , composer.lock |
NuGet | Langages .NET (C#, F#, VB), C++ | .csproj , .vbproj , .nuspec , .vcxproj , .fsproj | .csproj , .vbproj , .nuspec , .vcxproj , .fsproj , packages.config |
Workflows GitHub Actions | YAML | .yml , .yaml | .yml , .yaml |
Modules Go | Go | go.mod | go.mod |
Maven | Java, Scala | pom.xml | pom.xml |
npm | JavaScript | package-lock.json | package-lock.json , package.json |
pip | Python | requirements.txt , pipfile.lock | requirements.txt , pipfile , pipfile.lock , setup.py |
pub | Dart | pubspec.lock | pubspec.yaml , pubspec.lock |
Python Poetry | Python | poetry.lock | poetry.lock , pyproject.toml |
RubyGems | Ruby | Gemfile.lock | Gemfile.lock , Gemfile , *.gemspec |
Gestionnaire de package Swift | Swift | Package.resolved | Package.resolved |
Yarn | JavaScript | yarn.lock | package.json , yarn.lock |
Note
- 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 syntaxejobs[*].steps[*].uses
oujobs.<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.
Le graphe des dépendances affiche les dépendances envoyées regroupées par écosystème, mais séparément des dépendances analysées à partir des fichiers manifeste ou de verrouillage. 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ème | Action |
---|---|
Go | Soumission de dépendance Go |
Gradle | Soumission de dépendances Gradle |
Maven | Soumission de dépendances Maven Dependency Tree |
Fraiseuse | Soumission de dépendances Mill |
Scala | Soumission de dépendances Sbt |
NuGet et autres | Action 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 ».