Skip to main content

Utilisation de l’API de soumission de dépendances

Vous pouvez utiliser l’API API de soumission de dépendances pour soumettre des dépendances pour des projets, telles que celles résolues lors de la génération ou la compilation d’un projet.

Remarque : La possibilité d’utiliser l’API REST pour la soumission de dépendances est actuellement en version bêta publique et est susceptible d’être modifiée.

À propos de l’API API de soumission de dépendances

Vous pouvez utiliser l’API REST pour envoyer des dépendances pour un projet. Cela vous permet d’ajouter des dépendances, comme celles résolues quand le logiciel est compilé ou généré, au graphique de dépendance GitHub, pour une vue d’ensemble plus complète de l’ensemble des dépendances de votre projet.

Le graphique de dépendances affiche les dépendances que vous envoyez à l’aide de l’API, en plus des dépendances identifiées à partir de fichiers manifeste ou de verrouillage dans le référentiel (par exemple un fichier package-lock.json dans un projet JavaScript). Pour plus d’informations sur l’affichage du graphe des dépendances, consultez « Exploration des dépendances d’un dépôt ».

Les dépendances envoyées reçoivent des Dependabot alerts et Dependabot security updates pour toutes les vulnérabilités connues. Vous ne recevrez des Dependabot alerts que pour les dépendances provenant de l’un des écosystèmes pris en charge pour la GitHub Advisory Database. Pour plus d'informations sur ces écosystèmes, voir « À propos de la base de données GitHub Advisory ». Pour les dépendances transitives soumises via l’API API de soumission de dépendances, Dependabot ouvre automatiquement les demandes de tirage (pull requests) pour mettre à jour la dépendance parente, si une mise à jour est disponible.

Les dépendances envoyées sont affichées dans dependency review, mais ne sont pas disponibles dans les dependency insights 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. Cette fonctionnalité est actuellement en version bêta publique et sujette à modification.

Les dépendances sont soumises à l’API API de soumission de dépendances sous la forme d’un instantané. Une capture instantanée est un ensemble de dépendances associées à un SHA de commit et à d’autres métadonnées, qui reflète l’état actuel de votre dépôt pour un commit. Les captures instantanées peuvent être générées à partir de vos dépendances détectées au moment de la génération ou à partir d’une nomenclature logicielle (SBOM, software bill of materials). Il existe des GitHub Actions qui prennent en charge l’un de ces cas d’usage. Pour plus d’informations sur l’API API de soumission de dépendances, consultez « Points de terminaison d’API REST pour la soumission de dépendances ».

Envoi de dépendances au moment de la génération

Vous pouvez utiliser 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é.

Utilisation d’actions prédéfinies

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. Les actions qui effectuent ces étapes pour différents écosystèmes sont disponibles sur GitHub Marketplace. Certaines de ces actions sont fournies par des tiers. Vous trouverez des liens vers les actions actuellement disponibles dans le tableau ci-dessous.

ÉcosystèmeActionTenue à jour par GitHub
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@v4
        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

Création de votre propre action

Vous pouvez également écrire votre propre action pour envoyer des dépendances pour votre projet au moment de la génération. Votre workflow doit :

  1. Générer une liste de dépendances pour votre projet.
  2. Convertir la liste des dépendances au format d’instantané accepté par l’API API de soumission de dépendances. Pour plus d’informations sur le format, consultez les paramètres du corps pour le point de terminaison d’API « Créer une capture instantanée de dépôt » dans « Points de terminaison d’API REST pour la soumission de dépendances ».
  3. Soumettre la liste des dépendances au format approprié à l’API API de soumission de dépendances.

GitHub Enterprise Cloud gère le Kit de ressources de soumission de dépendances, une bibliothèque TypeScript pour vous aider à créer votre propre action GitHub et soumettre des dépendances à l’API API de soumission de dépendances. Pour plus d’informations sur l’écriture d’une action, consultez « Création d’actions ».

Génération et soumission d’une nomenclature logicielle (SBOM)

Un SBOM est un inventaire formel, lisible par la machine, des dépendances d’un projet et des informations associées (par exemple, versions, identificateurs de package et licences). Les fichiers SBOM aident à réduire les risques de la chaîne logistique, car :

  • ils fournissent une transparence sur les dépendances utilisées par votre dépôt
  • ils permettent d’identifier les vulnérabilités au début du processus
  • ils fournissent des insights sur les problèmes de conformité, de sécurité ou de qualité des licences pouvant exister dans votre codebase
  • ils vous permettent de mieux respecter divers standards de protection des données

Pour générer une nomenclature SBOM, vous pouvez utiliser :

ActionDétailsTenue à jour par GitHub
SBOM-generator-actionUtilise les informations de votre graphe des dépendances pour générer une nomenclature SBOM SPDX
Action SBOM AnchoreUtilise Syft pour créer des nomenclatures SBOM compatibles SPDX 2.2 avec des écosystèmes pris en charge
sbom-tool by MicrosoftAnalyse vos dépendances et crée une nomenclature SBOM compatible SPDX

Vous pouvez ensuite charger et envoyer la nomenclature SBOM à l’API API de soumission de dépendances avec l’une des actions suivantes afin de pouvoir recevoir des Dependabot alerts sur toutes les dépendances présentant des vulnérabilités connues. Les actions qui apparaissent dans les deux tableaux peuvent être configurées pour générer et envoyer une nomenclature SBOM.

ActionDétailsTenue à jour par GitHub
SPDX Dependency Submission ActionUtilise l’outil SBOM de Microsoft pour créer des nomenclatures SBOM compatibles SPDX 2.2 avec des écosystèmes pris en charge
Action SBOM AnchoreUtilise Syft pour créer des nomenclatures SBOM compatibles SPDX 2.2 avec des écosystèmes pris en charge
SBOM Dependency Submission ActionCharge une nomenclature SBOM CycloneDX sur l’API API de soumission de dépendances

Par exemple, le workflow de SPDX Dependency Submission Action suivant calcule les dépendances pour un référentiel, génère une nomenclature SBOM exportable au format SPDX 2.2 et la soumet à l’API API de soumission de dépendances.


name: SBOM upload

on:
  workflow_dispatch:
  push:
    branches: ["main"]

jobs:
  SBOM-upload:

    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: write

    steps:
    - uses: actions/checkout@v4
    - name: Generate SBOM
      # generation command documentation: https://github.com/microsoft/sbom-tool#sbom-generation
      run: |
        curl -Lo $RUNNER_TEMP/sbom-tool https://github.com/microsoft/sbom-tool/releases/latest/download/sbom-tool-linux-x64
        chmod +x $RUNNER_TEMP/sbom-tool
        $RUNNER_TEMP/sbom-tool generate -b . -bc . -pn $ -pv 1.0.0 -ps OwnerName -nsb https://sbom.mycompany.com -V Verbose
    - uses: actions/upload-artifact@v4
      with:
        name: sbom
        path: _manifest/spdx_2.2
    - name: SBOM upload
      uses: advanced-security/spdx-dependency-submission-action@v0.0.1
      with:
        filePath: "_manifest/spdx_2.2/"