Skip to main content

Управление обновлениями зависимостей с помощью Dependabot

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

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

Users with write access

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

В этой статье можно найти полезные параметры настройки.

Определение нескольких расположений для файлов манифеста

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

YAML
# Specify the locations of the manifest files to update for each package manager
# using both `directories` and `directory`

version: 2
updates:
  - package-ecosystem: "bundler"
    # Update manifest files stored in these directories weekly
    directories:
      - "/frontend"
      - "/backend"
      - "/admin"
    schedule:
      interval: "weekly"
  - package-ecosystem: "bundler"
    # Update manifest files stored in the root directory daily
    directory: "/"
    schedule:
      interval: "daily"
  • Указание диапазона каталогов с помощью шаблона

    YAML
    # Specify the root directory and directories that start with "lib-",
    # using globbing, for locations of manifest files
    
    version: 2
    updates:
      - package-ecosystem: "composer"
        directories:
          - "/"
          - "/lib-*"
        schedule:
          interval: "weekly"
    
  • Указание манифестов в текущем каталоге и рекурсивных подкаталогах

    YAML
    # Specify all directories from the current layer and below recursively,
    # using globstar, for locations of manifest files
    
    version: 2
    updates:
      - package-ecosystem: "composer"
        directories:
          - "**/*"
        schedule:
          interval: "weekly"
    

Игнорируние определенных зависимостей

Если вы не готовы принять изменения из определенных зависимостей в проекте, можно настроить Dependabot для пропуска этих зависимостей при открытии запросов на вытягивание обновлений версий и обновлений системы безопасности. Это можно сделать с помощью одного из следующих методов.

  • ignore Настройте параметр зависимости в dependabot.yml файле.
    • Это можно использовать для пропуска обновлений для определенных зависимостей, версий и типов обновлений.
    • Дополнительные сведения см ignore . в autoTITLE.
  • Используйте @dependabot ignore команды комментариев для запроса на вытягивание Dependabot для обновлений версий и обновлений безопасности.

Ниже приведены некоторые примеры, показывающие, как ignore можно использовать для настройки зависимостей.

  • Пропуск обновлений за пределами определенной версии

    YAML
    ignore:
      - dependency-name: "lodash:*"
        # Ignore versions of Lodash that are equal to or greater than 1.0.0
        versions: [ ">=1.0.0" ]
    
    YAML
    ignore:
      - dependency-name: "sphinx"
        versions: [ "[1.1,)" ]
    
  • Пропуск обновлений исправлений

    YAML
    ignore:
      - dependency-name: "@types/node"
        # Ignore patch updates for Node
        update-types: ["version-update:semver-patch"]
    
  • Чтобы игнорировать определенные версии или диапазоны версий, см . раздел "Игнорировать определенные версии" или "Диапазоны версий".

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

Для запросов на вытягивание для группированных updates, можно также использовать @dependabot unignore команды комментариев. Команды @dependabot unignore комментариев позволяют выполнять следующие действия, закомментируя запрос на вытягивание Dependabot:

  • Отмена пропуска определенного условия пропуска
  • Отмена пропуска определенной зависимости
  • Отмена пропуска всех условий для всех зависимостей в запросе на вытягивание Dependabot

Дополнительные сведения см. в разделе Управление запросами на вытягивание для обновлений зависимостей.

Разрешение обновления определенных зависимостей

Можно использовать для allow того, чтобы сообщить Dependabot о зависимостях, которые требуется поддерживать. allow обычно используется в сочетании с ignore.

Дополнительные сведения см allow . в autoTITLE.

По умолчанию Dependabot создает запросы на обновление версии только для зависимостей, которые явно определены в манифесте (direct зависимости). Эта конфигурация используется allow для того, чтобы сообщить Dependabot о том, что он будет поддерживать all типы зависимостей. То есть как зависимости, так direct и их зависимости (также известные как косвенные зависимости, подзависимости или временные зависимости). Кроме того, конфигурация сообщает Dependabot игнорировать все зависимости с именем, соответствующим шаблону org.xwiki.* , так как у нас есть другой процесс их обслуживания.

Tip

Dependabot проверяет наличие всех разрешенных зависимостей, а затем отфильтровывает все игнорируемые зависимости. Если зависимость сопоставляется с разрешением** и оператором **ignore, он игнорируется.

YAML
version: 2
registries:
  # Helps find updates for non Maven Central dependencies
  maven-xwiki-public:
    type: maven-repository
    url: https://nexus.xwiki.org/nexus/content/groups/public/
    username: ""
    password: ""
  # Required to resolve xwiki-common SNAPSHOT parent pom
  maven-xwiki-snapshots:
    type: maven-repository
    url: https://maven.xwiki.org/snapshots
    username: ""
    password: ""
updates:
  - package-ecosystem: "maven"
    directory: "/"
    registries:
      - maven-xwiki-public
      - maven-xwiki-snapshots
    schedule:
      interval: "weekly"
    allow:
      # Allow both direct and indirect updates for all packages.
      - dependency-type: "all"
    ignore:
      # Ignore XWiki dependencies. We have a separate process for updating them
      - dependency-name: "org.xwiki.*"
    open-pull-requests-limit: 15

Игнорируние определенных версий или диапазонов версий

Вы можете использовать versions в сочетании с ignore тем, чтобы игнорировать определенные версии или диапазоны версий.

Дополнительные сведения см versions . в autoTITLE.

  • Игнорировать определенную версию

    YAML
    ignore:
      - dependency-name: "django*"
        # Ignore version 11
        versions: [ "11" ]
    
  • Игнорировать диапазон версий

    YAML
        ignore:
          - dependency-name: "@types/node"
            versions: ["15.x", "14.x", "13.x"]
          - dependency-name: "xdg-basedir"
            # 5.0.0 has breaking changes as they switch to named exports
            # and convert the module to ESM
            # We can't use it until we switch to ESM across the project
            versions: ["5.x"]
          - dependency-name: "limiter"
            # 2.0.0 has breaking changes
            # so we want to delay updating.
            versions: ["2.x"]
    

Указание уровня семантического управления версиями для пропуска

Чтобы игнорировать использование update-types, можно указать один или несколько уровней семантического управления версиями (SemVer).

Дополнительные сведения см update-types . в autoTITLE.

В этом примере Dependabot игнорирует версии исправлений для Node.

YAML
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    ignore:
      - dependency-name: "express"
        # For Express, ignore all updates for version 4 and 5
        versions: ["4.x", "5.x"]
        # For Lodash, ignore all updates
      - dependency-name: "lodash"
      - dependency-name: "@types/node"
        # For Node types, ignore any patch versions
        update-types: ["version-update:semver-patch"]

Определение стратегии управления версиями

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

Эту стратегию по умолчанию можно изменить. Дополнительные сведения см versioning-strategy . в autoTITLE.

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

YAML
version: 2
updates:
  - package-ecosystem: npm
    directory: "/"
    schedule:
      interval: daily
    # Increase the minimum version for all npm dependencies
    versioning-strategy: increase

В этом примере Dependabot увеличит минимальное требование версии, если исходное ограничение не разрешает новую версию.

YAML
version: 2
updates:
- package-ecosystem: pip
  directory: "/"
  schedule:
    interval: daily
  open-pull-requests-limit: 20
  rebase-strategy: "disabled"
  # Increase the version requirements for npm
  # only when required
  versioning-strategy: increase-if-necessary

Обновление зависимостей поставщиков

Вы можете указать Dependabot конкретным поставщикам при их обновлении.

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

Дополнительные сведения см vendor . в autoTITLE.

В этом примере vendor задано значение true Bundler, что означает, что Dependabot также будет поддерживать зависимости для packager, хранящихся в каталоге поставщика или кэша в репозитории.

YAML
version: 2
updates:
- package-ecosystem: bundler
  directory: "/"
  # Vendoring Bundler
  vendor: true
  schedule:
    interval: weekly
    day: saturday
  open-pull-requests-limit: 10