Примечание: Возможность использования REST API для отправки зависимостей в настоящее время находится в общедоступной бета-версии и может быть изменена.
Сведения об API отправки зависимостей
Для отправки зависимостей для проекта можно использовать REST API. Так вы сможете добавлять зависимости, например разрешаемые при компиляции или сборке программного обеспечения, в функцию графа зависимостей GitHub, чтобы создать более полную картину всех зависимостей проекта.
На графе зависимостей отображаются все зависимости, которые вы отправили через этот API, а также те, которые определены в файлах манифеста или блокировки, размещенных в репозитории (например, файл package-lock.json в проекте JavaScript). Дополнительные сведения о просмотре графа зависимостей см. в статье Изучение зависимостей репозитория.
Отправленные зависимости будут получать Dependabot alerts и Dependabot security updates по всем известным уязвимостям. Вы будете получать Dependabot alerts только для тех зависимостей, которые относятся к одной из поддерживаемых экосистем GitHub Advisory Database. Отправленные зависимости не будут отображаться при проверке зависимостей или в аналитических сведениях о зависимостях в вашей организации.
Зависимости отправляются в API отправки зависимостей в виде моментального снимка. Моментальный снимок — это набор зависимостей, связанных с SHA фиксации и другими метаданными, которые отражают текущее состояние репозитория для фиксации. Дополнительные сведения об API отправки зависимостей см. в документации по REST API отправки зависимостей.
Отправка зависимостей во время сборки
API отправки зависимостей можно использовать в рабочем процессе GitHub Actions для отправки зависимостей для проекта при создании проекта.
Использование готовых действий
Самый простой способ использовать API отправки зависимостей — добавить в репозиторий готовое действие, которое будет собирать и преобразовывать список зависимостей в требуемый формат моментальных снимков и отправлять список в API. Действия, которые выполняют эти шаги для различных экосистем, доступны на GitHub Marketplace. В бета-версии и последующих версиях будет создано больше действий. Ссылки на доступные в настоящее время действия можно найти в таблице ниже:
| Экосистема | Действие |
|---|---|
| Go | Отправка зависимостей Go |
Например, следующий рабочий процесс отправки зависимостей 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
# Envionment 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@v3
- uses: actions/setup-go@v3
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
Создание собственного действия
Кроме того, можно написать собственное действие для отправки зависимостей для проекта во время сборки. Рабочий процесс должен делать следующее:
- Создать список зависимостей для проекта.
- Преобразовать список зависимостей в формат моментального снимка, принятый API отправки зависимостей. Дополнительные сведения о формате см. в основных параметрах операции API "Создание моментального снимка репозитория" в документации по REST API отправки зависимостей.
- Отправьте форматированный список зависимостей в API отправки зависимостей.
GitHub поддерживает набор средств отправки зависимостей, библиотеку TypeScript, помогающую создавать собственные действия GitHub Actions для отправки зависимостей в API отправки зависимостей. Дополнительные сведения о написании действия см. в разделе Создание действий.