Skip to main content

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

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

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

Users with write access

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

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

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

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

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 так, чтобы игнорировать эти зависимости при открытии pull request-запросов на обновления версий и безопасности. Это можно сделать с помощью одного из следующих методов.

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

Ниже приведены некоторые примеры, показывающие, как 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 файла или повторно открыть запрос на вытягивание.

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

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

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

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

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

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

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

Совет

          Dependabot проверяет все **разрешённые** зависимости, затем фильтрует **игнорируемые** зависимости. Если зависимость сопоставлена с **оператором разрешения** и **игнорируем** , то она игнорируется.
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"]
    

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

Вы можете задать один или несколько уровней семантического версионирования (SemVer) для игнорирования с помощью update-types``ignore.

Дополнительные сведения см 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 pip
  # only when required
  versioning-strategy: increase-if-necessary

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

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

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

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

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

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