Настройка доступа к сети для самостоятельных раннеров
Если ваши самостоятельные раннеры работают за межсетевым экраном с ограниченным выходящим доступом в интернет, необходимо добавить определённые URL в список разрешений для автоматической отправки зависимостей. Требуемые URL-адреса зависят от экосистем, которые используют ваши репозитории.
Обязательные URL-адреса для всех экосистем
Эти URL-адреса необходимы для всех рабочих процессов автоматической отправки зависимостей:
https://github.com—Требуется для доступа GitHub и загрузки действий.https://api.github.com—Требуется для GitHub доступа к API.https://*.githubusercontent.com—Требуется для скачивания исходного кода действия и релизов (включаяraw.githubusercontent.com,github-releases.githubusercontent.com, иobjects.githubusercontent.com).
Специфичные для экосистемы URL
В зависимости от используемых вами экосистем, возможно, потребуется добавить дополнительные URL-адреса.
Вперед
https://go.dev—Для скачивания инструментария Go.https://golang.org— Альтернативный домен для загрузок с Go.https://proxy.golang.org—Официальный прокси модуля Go для загрузки модулей Go во время обнаружения зависимостей.
Примечание.
Доступ к actions/go-versions репозиторию осуществляется через https://raw.githubusercontent.com, что уже предусмотрено общими требованиями.
Java (Maven и Gradle)
https://repo.maven.apache.org—Репозиторий Maven Central для загрузки зависимостей.https://api.adoptium.net— Для скачивания дистрибутивов Adoptium/Temurin JDK (дистрибутив по умолчанию используется ).actions/setup-java
Для проектов Gradle также требуется доступ к порталу подключаемого модуля Gradle, где действие автосубмиссии скачивает github-dependency-graph-gradle-plugin по умолчанию:
https://plugins.gradle.org— служит маркером подключаемого модуля иmaven-metadata.xml.https://plugins-artifacts.gradle.org— обслуживает POM подключаемого модуля, метаданные модуля и JAR-файл. Портал подключаемого модуля Gradle перенаправляет скачиваемые артефакты на этот узел, поэтому разрешенный список разрешает толькоplugins.gradle.orgметаданные, а затем завершается ошибкой при скачивании артефакта подключаемого модуля.
Если средства выполнения не могут достичь портала подключаемого модуля Gradle или вы хотите избежать в зависимости от узлов, которые могут изменяться с течением времени, устраните подключаемый модуль из внутреннего репозитория, который вы управляете. Дополнительные сведения см. в проектах Gradle.
Если вы используете другой дистрибутив JDK, вам также может понадобиться:
https://aka.msиhttps://download.microsoft.com—Для Microsoft Build of OpenJDK (примечание:aka.msтакже используется для .NET загрузок).https://download.oracle.com—Для Oracle JDK.https://api.azul.com—для Azul Zulu OpenJDK.
.NET (C#, F#, Visual Basic)
https://aka.ms— Microsoft укорачивающий URL, который перенаправляет на .NET места загрузки.https://builds.dotnet.microsoft.com— Основная лента для загрузок SDK .NET и во время выполнения.https://ci.dot.net— Вторичный корм для .NET билдов.
Примечание.
Инструмент microsoft/component-detection, используемый при .NET автоподаче, скачивается из релизов GitHub, которые уже включены в общие требования (https://github.com и https://*.githubusercontent.com).
Python
https://python.org— Для загрузки Python интерпретаторов.
Примечание.
Репозиторий и релизы доступны через URL, actions/python-versions уже указанные в общих требованиях (microsoft/component-detection и https://*.githubusercontent.com).https://github.com
Используйте GitHub-hosted более крупные бегуны для автоматической подачи зависимостей
GitHub Team Или GitHub Enterprise Cloud пользователи могут запускать более крупные бегуны автоматические задания по отправке зависимостей.
- Подготовьте более крупного бегуна на уровне организации с именем
dependency-submission. Для получения дополнительной информации см. раздел «Добавление крупное средство выполнения a в организацию». - Предоставьте репозиторию доступ к средству выполнения. Для получения дополнительной информации см . раздел Разрешение репозиториям для доступа более крупные бегунык .
- В разделе "Граф зависимостей" щелкните раскрывающееся меню рядом с параметром "Автоматическая отправка зависимостей", а затем выберите "Включено" для помеченных средств выполнения.
Устранение неполадок при автоматической подаче зависимостей
Автоматическая отправка зависимостей позволяет лучше всего кэшировать скачивание пакетов между запусками с помощью действия кэша для ускорения рабочих процессов. Для локальных средств выполнения может потребоваться управлять этим кэшем в собственной инфраструктуре. Для этого можно отключить встроенный кэширование, задав для переменной GH_DEPENDENCY_SUBMISSION_SKIP_CACHE среды значение true. Дополнительные сведения см. в разделе Хранение сведений в переменных.
Дедупликация манифеста
Репозиторий может использовать несколько методов подачи зависимостей, что может привести к многократному сканированию одного и того же манифеста пакета, потенциально с разными выходами каждого скана. Граф зависимостей использует логику дедупликации для анализа выходных данных, приоритетизируя наиболее точные сведения для каждого файла манифеста.
Граф зависимостей отображает только один экземпляр каждого файла манифеста, используя следующие правила приоритета.
- Отправки пользователей имеют наивысший приоритет, так как они обычно создаются во время сборки артефактов, у них есть самая полная информация.
- Если есть несколько моментальных снимков вручную из разных детекторов, они сортируются по алфавиту по коррелятору и первому используемому.
- Если есть два коррелятора с одинаковым детектором, разрешенные зависимости объединяются. Для получения дополнительной информации о корреляторах и детекторах см. Конечные точки REST API для отправки зависимостей.
- ** Dependabot Графовые задания** имеют второй по значимости приоритет. Для экосистем, где Dependabot доступны графовые задания (сейчас Go и Python), они имеют приоритет над автоматической подачей зависимости.
- Автоматические публикации имеют следующий приоритет, так как они также создаются во время сборки артефактов, но не отправляются пользователями.
- Результаты статического анализа используются, если другие данные недоступны.
Сведения о экосистеме пакетов
Проекты Maven
Для проектов Maven автоматическая отправка зависимостей запускается как открытый код форк Maven Dependency Tree Dependency Submission. Форк позволяет GitHub синхронизироваться с восходящим репозиторием и сохранять некоторые изменения, применимые только к автоматической отправке. Источник вилки доступен в режиме advanced-security/maven-dependency-submission-action.
Если зависимости репозитория выглядят неточными, убедитесь, что метка времени последнего граф зависимостей сборки соответствует последнему изменению pom.xml файла. Временная метка видна в таблице оповещений во вкладке репозитория Dependabot . Отправка коммита, который обновляется pom.xml , запускает новый запуск действия Submission Tree Dependency и заставляет перестроить граф зависимостей репозитория.
Проекты Gradle
Для проектов Gradle автоматическая отправка зависимостей выполняет форк действий открытый код Gradle из gradle/actions. Вилку можно использовать при действиях или действиях gradle-build-tools-actions. Результаты действия автоматической отправки можно просмотреть на вкладке "Действия** репозитория**". Каждый запуск будет помечен как "Автоматическая отправка зависимостей (Gradle)" и его выходные данные будут содержать полезные данные JSON, которые действие отправляется в API.
Разрешение подключаемого модуля отправки из внутреннего репозитория
По умолчанию действие загружается github-dependency-graph-gradle-plugin с портала подключаемого модуля Gradle (https://plugins.gradle.org). Для локальных runners в ограниченной сети, размещая подключаемый модуль во внутреннем репозитории, который вы управляете, например частный экземпляр Artifactory или Nexus, является более надежным, чем разрешить списки порталов, узлы и сети CDN могут меняться с течением времени. Вы можете указать действие во внутреннем репозитории с помощью следующих переменных среды:
GRADLE_PLUGIN_REPOSITORY_URL— URL-адрес внутреннего репозитория для разрешения подключаемого модуля.GRADLE_PLUGIN_REPOSITORY_USERNAMEиGRADLE_PLUGIN_REPOSITORY_PASSWORD— Учетные данные, если репозиторию требуется проверка подлинности.
Автоматическая отправка зависимостей запускает рабочий процесс, который управляет, а не один, который GitHub вы создаете в репозитории, поэтому вы не можете добавить env: в него блок. Эти переменные можно задать в средстве выполнения, но каждое задание, запланированное на этом средстве выполнения, не только автоматические задания отправки зависимостей, наследует их.
Если внутренний репозиторий разрешает анонимный доступ на чтение, необходимо задать GRADLE_PLUGIN_REPOSITORY_URL только и полностью опустить переменные учетных данных, избегая этой проблемы. Если репозиторию требуется проверка подлинности, используйте учетные данные только для чтения и выделенный модуль выполнения. Для запуска на уровне организации или предприятия также ограничивает доступ к группам runner только репозиториям, которым требуются эти учетные данные. См . раздел AUTOTITLE.
Разрешение подключаемого модуля из внутреннего репозитория отличается от настройки разрешения собственных зависимостей сборки, например init.gradle файла, указывающего на внутренний реестр. Эти переменные управляют только тем, из которого скачан подключаемый модуль отправки зависимостей.
Последние сведения о конфигурации см. в документации по действиям и действиям gradle-build-tools-actions .
.NET-проекты
Действие auto submission .NET использует проект открытый код component-detection в качестве движка для обнаружения зависимостей. Поддерживает .NET 8.x, 9.x и 10.x. .NET автоотправка выполняется, если dependabot.yml репозитория определяет nuget как package-ecosystem или когда поддерживаемый файл манифеста находится в корневом каталоге репозитория. Поддерживаемые файлы манифеста включают .sln, , .csproj, packages.config``.vbproj, .vcxprojи .fsproj.
Python-проекты
Репозитории Python с включённым графом зависимостей используют Dependabot задания графов для создания графов зависимостей. Dependabot Графовые задания имеют приоритет над автоматическими отправками зависимостей, и описанный ниже рабочий процесс автоотправки больше не будет выполняться для проектов на Python. Дополнительные сведения см. в разделе Как граф зависимостей распознаёт зависимости.
Автоматическое сдаче зависимостей для Python использует проект обнаружения компонентов с открытым исходным кодом в качестве базового движка генерации графов. Действие автоотправки выполняется только если в корневой директории репозитория есть requirements.txt файл. Python автоотправка в настоящее время не поддерживает приватные пакеты; пакеты, упомянутые в requirements.txt, которые не являются публично доступными, приведут к провалу действия автоотправки.
Примечание.
Это действие использует actions/setup-python для установки Python. Вы должны включить . Файл python-version в вашем репозитории, чтобы указать версию Python для установки.