Skip to main content

Настройка обновлений версий Dependabot

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

Кто может использовать эту функцию?

Users with write access

Note

Администратор сайта должен настроить Dependabot updates для ваш экземпляр GitHub Enterprise Server, прежде чем использовать эту функцию. Дополнительные сведения см. в разделе «Включение Dependabot для предприятия».

Возможно, вы не сможете включить или отключить Dependabot updates , если владелец предприятия установил политику на уровне предприятия. Дополнительные сведения см. в разделе «Применение политик безопасности кода и анализа для вашего предприятия».

Сведения об обновлениях версий для зависимостей

Вы включите Dependabot version updates путем проверки dependabot.yml файла конфигурации в каталоге репозитория .github . Затем Dependabot создает запросы на вытягивание, чтобы обеспечить актуальность зависимостей. Для зависимостей диспетчера пакетов, которые требуется обновить, необходимо указать расположение файлов манифеста пакета и частоту проверки обновлений зависимостей, указанных в этих файлах. Сведения о включении обновлений системы безопасности см. в разделе Настройка обновлений для системы безопасности Dependabot.

При первом включении обновлений версий может присутствовать много устаревших зависимостей, а некоторые из них могут быть устаревшими на много версий по сравнению с последней. Dependabot проверяет наличие устаревших зависимостей сразу после включения. Новые запросы на вытягивание обновлений версий могут отобразиться в течение нескольких минут после добавления файла конфигурации в зависимости от количества файлов манифеста, для которых настроены обновления. Dependabot также запустит обновление последующих изменений в файле конфигурации.

Dependabot также может создавать запросы на вытягивание при изменении файла манифеста после сбоя обновления. Это связано с тем, что изменения манифеста, такие как удаление зависимости, которая вызвала сбой обновления, может привести к успешному запуску обновления.

Для обеспечения управляемости запросов на вытягивание и упрощения их проверки Dependabot создает не более пяти запросов на вытягивание, чтобы приступить к обновлению зависимостей до последней версии. В случае слияния некоторых из этих первых запросов на вытягивание до следующего запланированного обновления оставшиеся запросы на вытягивание откроются в том же максимальном количестве при следующем обновлении. Вы можете изменить максимальное количество открытых запросов на вытягивание, задав параметр конфигурацииopen-pull-requests-limit.

Чтобы уменьшить количество запросов на вытягивание, которые вы видите, можно использовать groups параметр конфигурации для группирования наборов зависимостей вместе (на экосистему пакетов). Затем Dependabot создает один запрос на вытягивание, чтобы обновить столько зависимостей в группе до последних версий одновременно. Дополнительные сведения см. в разделе Автоматическое обновление зависимостей с помощью обновлений версий Dependabot.

Иногда из-за неправильной настройки или несовместимой версии может возникнуть сбой запуска Dependabot . После 30 сбой выполнения, Dependabot version updates пропустит последующие запланированные запуски, пока вы вручную не активируете проверка для обновлений из граф зависимостейили обновляете файл манифеста. Dependabot security updates по-прежнему будет работать как обычно.

По умолчанию только прямые зависимости, которые явно определены в манифесте, сохраняются в актуальном состоянии Dependabot version updates. Вы можете получать обновления для непрямых зависимостей, определенных в файлах блокировки. Дополнительные сведения см. в разделе Dependabot options reference.

При обновлении системы безопасности или версий некоторые экосистемы должны иметь возможность разрешить все зависимости от источника, чтобы убедиться, что обновления успешно выполнены. Если файлы манифеста или блокировки содержат какие-либо частные зависимости, Dependabot должен иметь доступ к расположению, в котором размещаются эти зависимости. Владельцы организации могут предоставлять Dependabot доступ к частным репозиториям, содержащим зависимости для проекта, в той же организации. Дополнительные сведения см. в разделе Управление параметрами безопасности и анализа для организации. Вы можете настроить доступ к частным реестрам в файле конфигурации репозитория dependabot.yml . Дополнительные сведения см. в разделе Dependabot options reference. Кроме того, Dependabot не поддерживает частные зависимости GitHub для всех менеджеров пакетов. Дополнительные сведения см. в разделе [AUTOTITLE и Поддерживаемые экосистемы и репозитории Dependabot](/get-started/learning-about-github/github-language-support).

Включение Dependabot version updates

Вы включите Dependabot version updates путем фиксации dependabot.yml файла конфигурации в репозитории.

  1. dependabot.yml Создайте файл конфигурации в каталоге .github репозитория. Приведенный ниже фрагмент можно использовать в качестве отправной точки. For information about the options you can use to customize how Dependabot maintains your repositories, see Dependabot options reference.

    YAML
    # To get started with Dependabot version updates, you'll need to specify which
    # package ecosystems to update and where the package manifests are located.
    
    version: 2
    updates:
    - package-ecosystem: "" # See documentation for possible values
      directory: "/" # Location of package manifests
      schedule:
        interval: "weekly"
    
  2. Добавьте version. Этот ключ является обязательным. Файл должен начинаться с version: 2.

  3. При необходимости, если у вас есть зависимости в частном реестре, добавьте раздел registries, содержащий сведения о проверке подлинности. Дополнительные сведения см. в разделе registries "Параметры конфигурации для dependabot.yml файла".

  4. Добавьте раздел updates с записью для каждого диспетчера пакетов, который должен отслеживаться Dependabot. Этот ключ является обязательным. Он используется для настройки того, как Dependabot обновляет версии или зависимости проекта. Каждая запись настраивает параметры обновления для определенного диспетчера пакетов.

  5. Для каждого диспетчера пакетов используйте следующие параметры:

    • package-ecosystem, чтобы указать диспетчер пакетов. Дополнительные сведения о поддерживаемых диспетчерах пакетов см. в разделе package-ecosystem "Параметры конфигурации для dependabot.yml файла".

    • directory, чтобы указать расположение файла манифеста или других файлов определений. Дополнительные сведения см. в разделе directory "Параметры конфигурации для dependabot.yml файла".

    • schedule.interval, чтобы указать частоту проверки наличия новых версий. Дополнительные сведения см. в разделе schedule.interval "Параметры конфигурации для dependabot.yml файла".

  6. Проверьте файл конфигурации dependabot.yml в каталоге .github репозитория.

Пример файла dependabot.yml

Приведенный ниже пример dependabot.yml файла настраивает обновления версий для двух диспетчеров пакетов: npm и Docker. При отправке этого файла Dependabot проверяет файлы манифеста в ветви по умолчанию на наличие устаревших зависимостей. При обнаружении устаревших зависимостей в ветвь по умолчанию будут отправлены запросы на вытягивание для обновления зависимостей.

# Basic `dependabot.yml` file with
# minimum configuration for two package managers

version: 2
updates:
  # Enable version updates for npm
  - package-ecosystem: "npm"
    # Look for `package.json` and `lock` files in the `root` directory
    directory: "/"
    # Check the npm registry for updates every day (weekdays)
    schedule:
      interval: "daily"

  # Enable version updates for Docker
  - package-ecosystem: "docker"
    # Look for a `Dockerfile` in the `root` directory
    directory: "/"
    # Check for updates once a week
    schedule:
      interval: "weekly"

В приведенном выше примере, если зависимости Docker сильно устарели, может потребоваться начать с расписания daily и применять его до тех пор, пока зависимости не будут обновлены, а затем вернуться к еженедельному расписанию.

Включение обновлений версий для вилок

Если вы хотите включить обновления версий для вилок, необходимо выполнить дополнительный шаг. Обновления версий не включены автоматически при наличии файла конфигурации.dependabot.yml Это гарантирует, что владельцы вилок непреднамеренно включают обновления версий при извлечении изменений, включая dependabot.yml файл конфигурации из исходного репозитория.

В вилке также необходимо явным образом включить Dependabot.

  1. На GitHubперейдите на главную страницу репозитория.

  2. Под именем репозитория щелкните Settings. Если вкладка "Параметры" не отображается, выберите раскрывающееся меню и нажмите кнопку "Параметры".

    Снимок экрана: заголовок репозитория с вкладками. Вкладка "Параметры" выделена темно-оранжевым контуром.

  3. В разделе "Безопасность" боковой панели щелкните Code securityCode security and analysis.

  4. В разделе "Code security and analysis", справа от "Dependabot version updates" нажмите кнопку "Разрешить Dependabot для запуска обновлений версий.

Проверка состояния обновлений версий

После включения обновлений версий на вкладке Dependabot в графе зависимостей для репозитория появляются сведения. На этой вкладке отображается информация о том, какие диспетчеры пакетов Dependabot отслеживаются и когда в последний раз была выполнена проверка новых версий Dependabot.

Снимок экрана: страница графа зависимостей. Вкладка с названием "Dependabot" выделена оранжевым контуром.

Дополнительные сведения см. в разделе Listing dependencies configured for version updates.

Отключение Dependabot version updates

Вы можете полностью отключить обновления версий, удалив dependabot.yml файл из репозитория. Обычно требуется отключить обновления временно для одной или нескольких зависимостей или для одного или нескольких диспетчеров пакетов.

  • Для диспетчеров пакетов: отключите их, задав значение параметра open-pull-requests-limit: 0 или закомментировав соответствующий раздел package-ecosystem в файле конфигурации.
  • Для конкретных зависимостей: отключите их, добавив атрибуты ignore для пакетов или приложений, которые требуется исключить из обновлений.

При отключении зависимостей можно использовать подстановочные знаки для сопоставления с набором связанных библиотек. Можно также указать, какие версии следует исключить. Это особенно удобно, если необходимо заблокировать обновления библиотеки, ожидая поддержки критических изменений в API библиотеки, но при этом требуется получать все исправления безопасности для используемой версии.

Пример отключения обновлений версий для некоторых зависимостей

Приведенный ниже пример dependabot.yml файла содержит примеры различных способов отключения обновлений для некоторых зависимостей, позволяя другим обновлениям продолжаться.

# `dependabot.yml` file with updates
# disabled for Docker and limited for npm

version: 2
updates:
  # Configuration for Dockerfile
  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "weekly"
      # Disable all pull requests for Docker dependencies
    open-pull-requests-limit: 0

  # Configuration for npm
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    ignore:
      # Ignore updates to packages that start with 'aws'
      # Wildcards match zero or more arbitrary characters
      - dependency-name: "aws*"
      # Ignore some updates to the 'express' package
      - dependency-name: "express"
        # Ignore only new versions for 4.x and 5.x
        versions: ["4.x", "5.x"]
      # For all packages, ignore all patch updates
      - dependency-name: "*"
        update-types: ["version-update:semver-patch"]

Дополнительные сведения о проверке существующих параметров пропуска см. в разделе Dependabot options reference.