Граф зависимостей может определить зависимости вашего проекта с помощью следующих методов.
| Метод | Принцип работы |
|---|---|
| Статический анализ | Парсирование манифеста и блокировки файлов в вашем репозитории |
| Dependabot graph jobs | Использует рабочий процесс Dependabot GitHub Actions для генерации снимков зависимостей |
| Автоматическая сдача | Запускает встроенный рабочий процесс GitHub Actions для решения зависимостей во время сборки |
| API отправки зависимостей | Принимает данные зависимостей, которые вы предоставляете программно |
После того как зависимости появляются в графе, вы можете получить Dependabot alerts и Dependabot security updates для любых известных уязвимостей.
Статический анализ
Когда вы включите граф зависимостей, GitHub сканирует ваш репозиторий на наличие поддерживаемых файлов манифеста и анализирует имя и версию каждого пакета. Граф обновляется, когда вы меняете поддерживаемый манифест или файл блокировки на вашей стандартной ветке , либо когда зависимость меняется в собственном репозитории.
Статический анализ может выявить:
- Прямые зависимости , явно определённые в манифесте или файле блокировки
- Косвенные зависимости — зависимости этих прямых зависимостей, также называемые «транзитивными зависимостями» — но только если они определены в манифесте или файле блокировки, а не если разрешены во время сборки
Для самого надёжного графа стоит использовать файлы блокировки (или их аналоги), потому что они точно определяют, какие версии прямых и косвенных зависимостей вы используете сейчас. Файлы блокировки также гарантируют, что все участники репозитория используют одни и те же версии, что облегчит тестирование и отладку кода. Кроме того, косвенные зависимости, выведенные из файлов манифеста (а не из файлов блокировки), исключаются из проверок уязвимости.
Автоматическая отправка зависимостей
Некоторые экосистемы разрешают косвенные зависимости на этапе сборки, поэтому статический анализ не может увидеть полный цвет зависимостей. Когда вы включаете автоматическую отправку зависимостей для репозитория, GitHub автоматически идентифицирует транзитивные зависимости в репозитории поддерживаемых экосистем. См . раздел AUTOTITLE.
В фоне автоматическая отправка зависимостей запускает рабочий процесс GitHub Actions, который генерирует всё дерево и загружает его с помощью API отправки зависимостей. Автоматическая отправка по зависимости работает на минуты. По желанию вы можете выбрать запуск на самостоятельных раннерах или более крупные бегуны.
Чтобы включить автоматическую отправку зависимости, см. AUTOTITLE.
Dependabot graph jobs
Этот метод использует специальный тип задачи Dependabot, которая создаёт snapshot-зависимость и загружает его в API отправки зависимостей. В настоящее время это поддерживается только для зависимостей Go .
Этот подход похож на автоматическую подачу зависимости, но не взимает платы за GitHub Actions минут. Он также может получать доступ к конфигурациям по всей организации для частных реестров, которые вы настроили для Dependabot.
API отправки зависимостей
Вы можете вызвать API отправки зависимостей в своём скрипте или рабочем процессе. Это полезно, если:
- Вам нужно указывать транзитивные зависимости, которые нельзя обнаружить из файлов блокировки.
- Вам нужно создать собственную логику или вы используете внешнюю систему CI/CD.
Зависимости отправляются в API отправки зависимостей в виде моментального снимка. Это список зависимостей, связанных с SHA коммита и другими метаданными, отражающий текущее состояние вашего репозитория.
Если вы вызываете API в рабочем процессе GitHub Actions, вы можете использовать готовое действие для вашей экосистемы, которое автоматически собирает зависимости и отправляет их в API. В противном случае вы можете написать собственное действие или вызвать API из внешней системы.
Отправленные зависимости будут отображаться в проверке зависимостей, но недоступны в аналитике зависимостей вашей организации.
Примечание.
API проверки зависимостей и API отправки зависимостей работают вместе. Это означает, что API проверки зависимостей будет включать зависимости, отправленные через API отправки зависимостей.
Дополнительные сведения см. в разделе AUTOTITLE.