О настройке частных реестров для Dependabot
В этой статье содержатся рекомендации и рекомендации по настройке Dependabot для доступа к частному реестру, а также:
- Подробные
dependabot.yml
фрагменты файла конфигурации для каждого диспетчера пакетов. - Важные ограничения или предостережения.
- Действия, объясняющие, как проверить, работает ли конфигурация.
- Дополнительные параметры конфигурации, где угодно (например, npm имеет файл конфигурации, который необходимо задать).
- Советы по настройке узлов реестра.
Вы найдете подробные рекомендации по настройке следующих диспетчеров пакетов:
Вы также найдете рекомендации по настройке следующих узлов реестра:
Настройка диспетчеров пакетов
Средство увязки программ в пакеты
Поддерживается Artifactory, Artifacts, GitHub Packages реестра, Nexus и ProGet.
Вы можете пройти проверку подлинности с помощью имени пользователя и пароля или маркера. Дополнительные сведения см. в разделе ruby-gems
"Параметры конфигурации для файла dependabot.yml".
dependabot.yml
Фрагмент файла с использованием имени пользователя и пароля.
registries:
ruby-example:
type: rubygems-server
url: https://rubygems.example.com
username: octocat@example.com
password: ${{secrets.MY_RUBYGEMS_PASSWORD}}
В приведенном dependabot.yml
ниже фрагменте файла используется маркер. Для этого типа реестра с помощью реестра GitHub Packages (xyz.pkg.github.com
), маркер фактически является GitHub personal access token (PAT).
registries:
ruby-github:
type: rubygems-server
url: https://rubygems.pkg.github.com/octocat/github_api
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
Примечания.
Зависимости, полученные непосредственно от репозитория GitHub предоставляют доступ Dependabot к репозиторию через пользовательский интерфейс GitHub. Сведения о том, как разрешить Dependabot получить доступ к частным зависимостям GitHub см. в разделе "Разрешение Dependabot доступ к частным зависимостям".
Docker
Docker поддерживает использование имени пользователя и пароля для реестров. Дополнительные сведения см. в разделе docker-registry
"Параметры конфигурации для файла dependabot.yml".
Фрагмент dependabot.yml
файла с использованием имени пользователя и пароля.
registries:
dockerhub:
type: docker-registry
url: https://registry.hub.docker.com
username: octocat
password: ${{secrets.MY_DOCKERHUB_PASSWORD}}
docker-registry
также можно использовать для извлечения из частного ECR Amazon с помощью статических учетных данных AWS.
registries:
ecr-docker:
type: docker-registry
url: https://1234567890.dkr.ecr.us-east-1.amazonaws.com
username: ${{secrets.ECR_AWS_ACCESS_KEY_ID}}
password: ${{secrets.ECR_AWS_SECRET_ACCESS_KEY}}
Примечания.
Dependabot работает с любыми реестрами контейнеров, реализующими спецификацию распространения Open Container Initiative (OCI). Дополнительные сведения см. в разделе https://github.com/opencontainers/distribution-spec/blob/main/spec.md.
Dependabot поддерживает проверку подлинности в частных реестрах через центральную службу маркеров или обычную проверку подлинности HTTP. Дополнительные сведения см . в описании спецификации проверки подлинности токенов в документации По Docker и проверке подлинности "Базовый доступ" в Википедии.
Ограничения и методы обхода
- Имена изображений не всегда могут быть обнаружены в файлах Containerfiles, Helm или yaml-файлах.
- Dockerfiles может получать только обновление версии до первой
FROM
директивы. - Dockerfiles не получают обновления для образов, указанных в директиве
ARG
. Существует обходное решение для директивыCOPY
. Дополнительные сведения см. в разделе "Dependabot игнорирует ссылки на изображения в инструкции COPY Dockerfile в репозиторииdependabot/dependabot-core
. - Dependabot не поддерживает многоэтапные сборки Docker. Дополнительные сведения см. в разделе "Поддержка многоэтапных сборок Docker" в репозитории
dependabot/dependabot-core
.
Gradle
Dependabot не запускает Gradle, но поддерживает обновления для определенных файлов Gradle. Дополнительные сведения см. в разделе "Gradle" в разделе "AUTOTITLE".
Gradle поддерживает maven-repository
тип реестра. Дополнительные сведения см. в разделе maven-repository
"Параметры конфигурации для файла dependabot.yml".
Тип maven-repository
поддерживает имя пользователя и пароль. Если учетная запись является учетной записью GitHub, вместо пароля можно использовать GitHub personal access token вместо пароля.
registries:
gradle-artifactory:
type: maven-repository
url: https://acme.jfrog.io/artifactory/my-gradle-registry
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
updates:
- package-ecosystem: "gradle"
directory: "/"
registries:
- gradle-artifactory
schedule:
interval: "monthly"
Примечания.
Вы можете не видеть все зависимости, представленные в граф зависимостей, особенно если некоторые зависимости являются зависимостями во время сборки. Вы можете использовать API отправки зависимостей для информирования GitHub о других зависимостях и получения обновлений системы безопасности для них. Дополнительные сведения см. в разделе Использование API отправки зависимостей.
Maven
Maven поддерживает проверку подлинности имени пользователя и пароля. Дополнительные сведения см. в разделе maven-repository
"Параметры конфигурации для файла dependabot.yml".
registries:
maven-artifactory:
type: maven-repository
url: https://acme.jfrog.io/artifactory/my-maven-registry
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
Если учетная запись является учетной записью GitHub, вместо пароля можно использовать GitHub personal access token вместо пароля.
version: 2
registries:
maven-github:
type: maven-repository
url: https://maven.pkg.github.com/octocat
username: octocat
password: ${{secrets.OCTOCAT_GITHUB_PAT}}
updates:
- package-ecosystem: "maven"
directory: "/"
registries:
- maven-github
schedule:
interval: "monthly"
Примечания.
Вы можете не видеть все зависимости, представленные в граф зависимостей, особенно если некоторые зависимости являются зависимостями во время сборки. Вы можете использовать API отправки зависимостей для информирования GitHub о других зависимостях и получения обновлений системы безопасности для них. Дополнительные сведения см. в разделе Использование API отправки зависимостей.
npm
Конфигурацию в dependabot.yml
файле можно определить с помощью npm-registry
типа или настроить Dependabot для отправки всех запросов реестра по указанному базовому URL-адресу.
npm-registry
Использование типа в файле конфигурации
Вы можете определить конфигурацию частного dependabot.yml
реестра в файле с помощью npm-registry
типа. Дополнительные сведения см. в разделе Параметры конфигурации для файла dependabot.yml.
В приведенном ниже фрагменте dependabot.yml
файла используется маркер. Для этого типа реестра с помощью реестра GitHub Packages (xyz.pkg.github.com
), маркер фактически является GitHub personal access token (PAT).
registries:
npm-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
Экосистема npm требует, чтобы файл с URL-адресом .npmrc
частного реестра был проверен в репозитории.
Пример содержимого .npmrc
файла:
registry=https://<private-registry-url>
Кроме того, можно добавить URL-адрес частного реестра в существующий .npmrc
файл с помощью следующей команды.
npm config set registry <url>
Дополнительные сведения см. в реестре в документации npm.
Вы также можете ограничить конфигурацию только одной зависимостью или организацией, в этом случае маркер будет допустимым только для организации, а разные маркеры можно использовать для разных организаций для одного репозитория.
npm config set @<org-name>:registry <url>
Это приведет к созданию реестра npmrc:
@<org-name>:registry=https://<private-registry-url>
npm можно настроить для использования URL-адреса частного реестра в файлах блокировки.replace-registry-host
Дополнительные сведения см. в документации по npm.
npm config set replace-registry-host "never"
При использовании replace-registry-host
необходимо выполнить локально, npm install
чтобы повторно создать файл блокировки для использования URL-адреса частного реестра. Dependabot будет использовать тот же URL-адрес при предоставлении обновлений.
После настройки реестра можно также выполнить npm login
проверку правильности и допустимости конфигурации. Файл блокировки также можно повторно создать для использования нового частного реестра, выполнив повторное выполнение npm install
.
Необходимо убедиться, что .npmrc
файл проверяется в том же каталоге, что и проект package.json
, и что файл не включает переменные среды или секреты.
Если используется monorepo, .npmrc
файл должен находиться в корневом каталоге проекта.
Настройка Dependabot для отправки запросов реестра по указанному базовому URL-адресу
Можно настроить Dependabot для отправки всех запросов реестра по указанному базовому URL-адресу. Чтобы Dependabot получить доступ к общедоступной зависимости, реестр должен иметь клонированную копию зависимости с запрошенной версией или разрешить трафик получать из общедоступного реестра, если зависимость недоступна.
Если в файле отсутствует глобальный .npmrc
реестр, его можно задать replaces-base
true
в dependabot.yml
файле. Дополнительные сведения см. в разделе "replaces-base
AutoTITLE".
Примечания.
Зависимости, полученные непосредственно от репозитория GitHub предоставляют доступ Dependabot к репозиторию через пользовательский интерфейс GitHub. Сведения о том, как разрешить Dependabot получить доступ к частным зависимостям GitHub см. в разделе "Разрешение Dependabot доступ к частным зависимостям".
Для зависимостей в области (@my-org/my-dep
), Dependabot требует, чтобы частный реестр был определен в проекте .npmrc file
. Чтобы определить частные реестры для отдельных областей, используйте @myscope:registry=https://private_registry_url
.
Реестры должны быть настроены с помощью https
протокола.
Nuget
Поддерживается Artifactory, Artifacts, GitHub Packages реестра, Nexus и ProGet.
Тип nuget-feed
поддерживает имя пользователя и пароль или маркер безопасности. Дополнительные сведения см. в разделе nuget-feed
"Параметры конфигурации для файла dependabot.yml".
registries:
nuget-example:
type: nuget-feed
url: https://nuget.example.com/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_NUGET_PASSWORD}}
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
Примечания.
Вы также можете использовать маркер в dependabot.yml
файле. Для этого типа реестра с помощью реестра GitHub Packages (xyz.pkg.github.com
), маркер фактически является GitHub personal access token (PAT).
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
token: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
Python
Поддерживается Artifactory, Артефакты Azure, Nexus и ProGet. Реестр GitHub Packages не поддерживается.
Тип python-index
поддерживает имя пользователя и пароль или маркер безопасности. Дополнительные сведения см. в разделе python-index
"Параметры конфигурации для файла dependabot.yml".
registries:
python-example:
type: python-index
url: https://example.com/_packaging/my-feed/pypi/example
username: octocat
password: ${{secrets.MY_BASIC_AUTH_PASSWORD}}
registries:
python-azure:
type: python-index
url: https://pkgs.dev.azure.com/octocat/_packaging/my-feed/pypi/example
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
registries:
python-gemfury:
type: python-index
url: https://pypi.fury.io/my_org
token: ${{secrets.MY_GEMFURY_TOKEN}}
Примечания.
Зависимости, полученные непосредственно от репозитория GitHub предоставляют доступ Dependabot к репозиторию через пользовательский интерфейс GitHub. Сведения о том, как разрешить Dependabot получить доступ к частным зависимостям GitHub см. в разделе "Разрешение Dependabot доступ к частным зависимостям".
url
должен содержать URL-адрес, организацию и "веб-канал" или репозиторий.
Yarn
Реестр Yarn использует конфигурацию, аналогичную конфигурации реестра npm. Дополнительные сведения см. в разделе "npm-registry
AutoTITLE".
registries:
yarn-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
- Для частных реестров необходимо проверить
.yarnrc.yml
файл (для Yarn 3) или.yarnrc
файл (для Yarn Classic). - Файлы конфигурации yarn не должны содержать переменные среды.
- Следует настроить частные реестры, перечисленные
dependabot.yml
в файле, с помощьюhttps
.
Yarn Classic
Вы можете указать конфигурацию частного реестра в dependabot.yml
файле или настроить Yarn Classic в соответствии со стандартными инструкциями диспетчера пакетов.
Определение конфигурации частного реестра в dependabot.yml
файле
Вы можете определить конфигурацию частного реестра в dependabot.yml
файле. Дополнительные сведения см. в разделе "Параметры конфигурации для частных реестров" в разделеПараметры конфигурации для файла dependabot.yml".
Чтобы закрытый реестр был указан в качестве источника зависимостей в файле проекта yarn.lock
, необходимо запустить yarn install
на компьютере с частным доступом к реестру. Yarn должен обновить разрешенное поле, чтобы включить URL-адрес частного реестра.
encoding@^0.1.11:
version "0.1.13"
resolved "https://private_registry_url/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
dependencies:
iconv-lite "^0.6.2"
Следуя стандартным инструкциям диспетчера пакетов
yarn.lock
Если файл не перечисляет частный реестр в качестве источника зависимостей, можно настроить Yarn Classic в соответствии с инструкциями по диспетчеру пакетов уровня "Стандартный".
-
Определите конфигурацию частного
dependabot.yml
реестра в файле. -
Затем можно выполнить следующие действия:
- Вручную задайте для файла частный реестр
.yarnrc
, добавив реестр.yarnrc.yml
в файл в корневой каталог проекта с реестром разделов или - Выполните то же действие, выполнив в
yarn config set registry <private registry URL>
терминале.
.yarnrc
Пример с определенным частным реестром:registry https://nexus.example.com/repository/yarn-all
- Вручную задайте для файла частный реестр
Yarn Berry (v3)
Сведения о конфигурации см. в разделе "Параметры" (.yarnrc.yml) в документации Yarn.
Как и в случае с Yarn Classic, можно указать конфигурацию частного dependabot.yml
реестра в файле или настроить Yarn Berry в соответствии с инструкциями диспетчера пакетов.
Определение конфигурации частного реестра в dependabot.yml
файле
Вы можете определить конфигурацию частного реестра в dependabot.yml
файле. Дополнительные сведения см. в разделе "Параметры конфигурации для частных реестров" в разделеПараметры конфигурации для файла dependabot.yml".
Чтобы частный реестр был указан в качестве источника зависимостей в файле проекта yarn.lock
, запустите yarn install
на компьютере с закрытым доступом к реестру. Yarn должен обновить разрешенное поле, чтобы включить URL-адрес частного реестра.
encoding@^0.1.11:
version "0.1.13"
resolved "https://private_registry_url/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
dependencies:
iconv-lite "^0.6.2"
Вы также можете настроить частные реестры с npmAuthIdent
помощью или npmAuthToken
. Дополнительные сведения см. в разделе "npmAuthIdent" и npmAuthToken в документации Yarn.
yarn config set registry <url>
Вы можете ограничить конфигурацию только одной зависимостью или организацией.
yarn config set @<SCOPE>:registry <url>
Наконец, мы рекомендуем выполнить запуск yarn login
, чтобы убедиться, что конфигурация правильна и действительна. Файл блокировки также можно повторно создать для использования нового частного реестра, выполнив повторное выполнение yarn install
.
Следуя стандартным инструкциям диспетчера пакетов
yarn.lock
Если файл не перечисляет частный реестр в качестве источника зависимостей, можно настроить Yarn Berry в соответствии со стандартными инструкциями диспетчера пакетов.
-
Определите конфигурацию частного
dependabot.yml
реестра в файле. -
Затем можно выполнить следующие действия:
- Вручную задайте для файла частный реестр
.yarnrc
, добавив реестр.yarnrc.yml
в файл в корневой каталог проекта с ключомnpmRegistryServer
или - Выполните то же действие, выполнив в
yarn config set npmRegistryServer <private registry URL>
терминале.
.yarnrc.yml
Пример файла с настроенным частным реестром:npmRegistryServer: "https://nexus.example.com/repository/yarn-all"
Дополнительные сведения см. в документации по Yarn в npmRegistryServer .
- Вручную задайте для файла частный реестр
Примечания.
Зависимости, полученные непосредственно от репозитория GitHub предоставляют доступ Dependabot к репозиторию через пользовательский интерфейс GitHub. Сведения о том, как разрешить Dependabot получить доступ к частным зависимостям GitHub см. в разделе "Разрешение Dependabot доступ к частным зависимостям".
Для зависимостей в области (@my-org/my-dep
), Dependabot требует, чтобы частный реестр был определен в проекте .yarnrc file
. Чтобы определить частные реестры для отдельных областей, используйте @myscope:registry" "https://private_registry_url"
.
Настройка узлов частного реестра
Artifactory
Сведения о настройке Artifactory см . в документации по JFrog Artifactory .
Удаленные репозитории
Удаленные репозитории служат кэшем для артефактов сборки и зависимостей. Вместо того чтобы обратиться к глобальному репозиторию зависимостей, средство сборки может использовать кэш artifactory, который ускорит время сборки. Дополнительные сведения см. в документации по JFrog Artifactory.
Если вы используете replace-base
этот параметр, необходимо также настроить удаленный репозиторий для Artifactory, если требуется Dependabot для доступа к другому реестру, когда зависимость не найдена в частном реестре.
Виртуальный реестр
Виртуальный реестр можно использовать для группировки всех частных и общедоступных зависимостей в одном домене. Дополнительные сведения см . в разделе реестра npm в документации по JFrog Artifactory.
Ограничения и методы обхода
Параметр target branch
не работает с Dependabot security updates
в Artifactory. Если вы получаете ошибку проверки подлинности 401, необходимо удалить target-branch
свойство из dependabot.yml
файла. Дополнительные сведения см. в статье ARTIFACTORY: Почему обновления безопасности GitHub Dependabot завершаются ошибкой проверки подлинности 401, когда она инициирует подключение к частному реестру artifactory npm для обновлений системы безопасности в документации по JFrog Artifactory.
Azure Artifacts
Сведения о артефактах Azure и инструкциях по настройке Dependabot для работы с Azure Artifacts см . в документации по Azure DevOps и использовании Dependabot в GitHub с артефактами Azure соответственно.
Пример реестра артефактов Azure:
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/my_org/_packaging/public/nuget/v3/index.json
token: ${{secrets.AZURE_DEVOPS_TOKEN}}
Пароль Azure Artifacts должен быть незакодированный маркер и должен содержать :
после маркера. Кроме того, пароль не может быть закодирован в кодировке Base64.
Вы можете проверить успешность доступа к частному реестру, просмотрев журналы Dependabot .
Реестр GitHub Packages
Сведения о реестрах GitHub Packages см. в разделе "Работа с реестром GitHub Packages". Из этой статьи вы можете получить доступ к страницам, описывающим настройку следующих реестров.
- Упаковщик (rubygems)
- Docker (контейнеры)
- GitHub Actions
- Gradle
- Maven
- Npm
- NuGet
- Yarn
registries:
github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{ secrets.<token> }}
Примечания.
Реестр контейнеров Python отсутствует.
Для частных реестров, которые относятся к определенной организации, Dependabot ожидает, что URL-адрес будет включать имя организации в dependabot.yml
файл.
Связь
Сведения о настройке Nexus см . в документации по Диспетчеру репозитория 3 .
Примечания.
С помощью Nexus Repository Pro можно включить маркеры пользователей. Дополнительные сведения см. в документации по Sonatype.
Пример реестра Nexus:
registries:
npm-nexus:
type: npm-registry
url: https://registry.example.com/repository/npm-internal/
token: ${{secrets.NEXUS_NPM_TOKEN}}
Если вы используете Nexus за обратным прокси-сервером, необходимо убедиться, что сервер доступен с помощью маркера проверки подлинности.curl -v -H 'Authorization: Bearer <token>' 'https://<nexus-repo-url>/repository/<repo-name>/@<scope>%2<package>'
Дополнительные сведения см. в разделе "Запуск за обратным прокси-сервером " в документации по Sonatype.
Если вы ограничиваете доступ к узлу Nexus, необходимо добавить ip-адреса Dependabot в список разрешений.
- IP-адреса Dependabot используются для доступа к реестру в конечной точке мета API под ключом зависимостей. Дополнительные сведения см. в разделе Конечные точки REST API для метаданных.
- Это текущие IP-адреса:
- "18.213.123.130/32"
- "3.217.79.163/32"
- "3.217.93.44/32" Дополнительные сведения см. в разделе "Защита диспетчера репозитория Nexus" в документации по Sonatype.
Реестры можно связаться с общедоступным реестром, если зависимость недоступна в частном реестре. Однако может потребоваться, чтобы Dependabot доступ только к частному реестру и не доступ к общедоступному реестру вообще. Дополнительные сведения см. в разделе "Краткое руководство по началу работы с прокси-сервером Maven и NPM" в документации по Sonatype иУдаление доступа Dependabot к общедоступным реестрам.
ProGet
Сведения о ProGet и инструкции по настройке Dependabot для работы с веб-каналами в ProGet см . в документации по ProGet.
Пример конфигурации реестра ProGet для веб-канала NuGet:
registries:
proget-nuget-feed:
type: nuget-feed
url: https://proget.corp.local/nuget/MyNuGetFeed/v3/index.json
token: ${{secrets.PROGET_APK_KEY}}
Пример конфигурации реестра ProGet для bundler (rubygems):
registries:
proget-gems-feed:
type: rubygems-server
url: https://proget.corp.local/rubygems/MyRubygemsFeed
token: ${{secrets.PROGET_APK_KEY}}
Пример конфигурации реестра ProGet для Python (PyPI):
registries:
proget-python-feed:
type: python-index
url: https://proget.corp.local/pypi/MyPythonFeed
token: ${{secrets.PROGET_APK_KEY}}
Примечания.
Ключ token
API должен быть ключом API с доступом к просмотру пакетов. Дополнительные сведения см. в разделе "Доступ к API" и "Ключи API" в документации по ProGet.
Вы можете проверить успешность доступа к частному реестру, просмотрев журналы Dependabot .