Skip to main content

Enterprise Server 3.20 в настоящее время доступен в качестве кандидата на выпуск.

Использование API отправки зависимостей

Можно использовать API отправки зависимостей для отправки зависимостей для проектов, например зависимостей, разрешенных при создании или компиляции проекта.

API отправки зависимостей — это метод подачи данных в граф зависимостей. Он позволяет подавать зависимости, которые не учитываются статическим анализом. Дополнительные сведения см. в разделе Как граф зависимостей распознаёт зависимости.

Отправка зависимостей во время сборки

Вы можете использовать API отправки зависимостей в рабочем процессе GitHub Actions для отправки зависимостей для проекта при создании проекта.

Использование готовых действий

Самый простой способ использования API отправки зависимостей заключается в добавлении предварительно созданного действия в репозиторий, которое собирает и преобразует список зависимостей в требуемый формат моментального снимка и отправляет список в API.

ЭкосистемаДействие
GoОтправка зависимостей Go
GradleОтправка зависимостей Gradle
MavenОтправка зависимостей дерева зависимостей Maven
МельницаОтправка зависимостей Милли
Mix (Elixir)Отправка зависимостей смешивания
ScalaОтправка зависимостей Sbt
NuGet и другиеДействие отправки зависимостей обнаружения компонентов

Примечание.

Для действия отправки зависимостей обнаружения компонентов другие поддерживаемые экосистемы включают Vcpkg, Conan, Conda, Crates, а также NuGet.

Например, следующий рабочий процесс отправки зависимостей Go вычисляет зависимости для целевого объекта сборки Go (файл Go с main функцией) и отправляет список в API отправки зависимостей.

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@v5

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

      - name: Run snapshot action
        uses: actions/go-dependency-submission@v2
        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

Дополнительные сведения об этих действиях см. в разделе Поддерживаемые экосистемы пакетов графа зависимостей.

Создание собственного действия

Кроме того, можно написать собственное действие для отправки зависимостей для проекта во время сборки. Рабочий процесс должен делать следующее:

  1. Создать список зависимостей для проекта.
  2. Преобразуйте список зависимостей в формат моментального снимка, принятый API отправки зависимостей. Дополнительные сведения о формате см. в параметрах текста конечной точки API "Создание моментального снимка репозитория" в Конечные точки REST API для отправки зависимостей.
  3. Отправьте форматированный список зависимостей в API отправки зависимостей.

поддерживает Dependency Submission Toolkit — библиотеку TypeScript, которая помогает вам создать собственное GitHub действие для отправки зависимостей в API отправки зависимостей. Дополнительные сведения о написании действия см. в разделе Повторное выполнение автоматизации.

Отправка SBOM в виде моментальных снимков

Если у вас есть внешние средства, которые создают или управляют счетами по программному обеспечению материалов (SBOMs), вы также можете отправить эти SBOM в API отправки зависимостей. Формат данных моментальных снимков очень похож на стандартные форматы SPDX и циклонеDX SBOM, и есть несколько средств, которые могут создавать или преобразовывать форматы для использования в качестве моментальных снимков.

Совет

Действие отправки зависимостей SPDX и действие привязки SBOM можно использовать для создания SBOM и отправки его в API отправки зависимостей.

Например, следующий рабочий процесс действия отправки зависимостей SPDX вычисляет зависимости для репозитория, создает экспортируемый SBOM в формате SPDX 2.2 и отправляет его в API отправки зависимостей.

# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
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@v5
    - 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@v3
      with:
        name: sbom
        path: _manifest/spdx_2.2
    - name: SBOM upload
      uses: advanced-security/spdx-dependency-submission-action@5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e
      with:
        filePath: "_manifest/spdx_2.2/"