Skip to main content

Руководство по настройке частных реестров для Dependabot

В этой статье содержатся подробные сведения о настройке частных реестров, а также команды, которые можно выполнить из командной строки, чтобы настроить диспетчеры пакетов локально.

О настройке частных реестров для 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-baseAutoTITLE".

Примечания.

Зависимости, полученные непосредственно от репозитория 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-registryAutoTITLE".

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 в соответствии с инструкциями по диспетчеру пакетов уровня "Стандартный".

  1. Определите конфигурацию частного dependabot.yml реестра в файле.

  2. Затем можно выполнить следующие действия:

    • Вручную задайте для файла частный реестр .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 в соответствии со стандартными инструкциями диспетчера пакетов.

  1. Определите конфигурацию частного dependabot.yml реестра в файле.

  2. Затем можно выполнить следующие действия:

    • Вручную задайте для файла частный реестр .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 .