Skip to main content

Steuern der von Dependabot aktualisierten Abhängigkeiten

Hier erfährst du, wie du deine dependabot.yml-Datei so konfigurierst, dass Dependabot die von dir angegebenen Pakete automatisch anhand deiner Definition aktualisiert.

Wer kann dieses Feature verwenden?

Users with write access

Du kannst deine Dependabot-Konfiguration an deine Anforderungen anpassen, indem du deiner dependabot.yml-Datei Optionen hinzufügen. Du kannst beispielsweise sicherstellen, dass Dependabot die richtigen Paketmanifestdateien verwendet und nur die Abhängigkeiten aktualisiert, die du verwalten möchtest.

In diesem Artikel werden Anpassungsoptionen zusammengetragen, die für dich möglicherweise hilfreich sind.

Definieren mehrerer Speicherorte für Manifestdateien

Wenn du Dependabot version updates für Manifestdateien aktivieren möchtest, die an mehreren Speicherorten gespeichert sind, kannst du directories anstelle von directory verwenden. Diese Konfiguration legt beispielsweise zwei verschiedene Updatezeitpläne für Manifestdateien fest, die in verschiedenen Verzeichnissen gespeichert sind.

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"
  • So gibst du mithilfe eines Musters einen Verzeichnisbereich an:

    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"
    
  • So gibst du im aktuellen Verzeichnis und in rekursiven Unterverzeichnissen Manifeste an:

    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"
    

Ignorieren bestimmter Abhängigkeiten

Wenn du nicht bereit bist, die Änderungen bestimmter Abhängigkeiten in deinem Projekt anzunehmen, kannst du Dependabot so konfigurieren, dass diese Abhängigkeiten beim Erstellen von Pull Requests für Versionsupdates und Sicherheitsupdates ignoriert werden. Hierfür kannst du eine der folgenden Methoden verwenden:

  • Konfiguriere die Option ignore für die Abhängigkeit in der Datei dependabot.yml.
    • Hiermit kannst du Updates für bestimmte Abhängigkeiten und Versionen sowie bestimmte Arten von Updates ignorieren.
    • Weitere Informationen findest du im Abschnitt zu ignore unter Referenz zu Dependabot-Optionen.
  • Verwenden Sie @dependabot ignore Kommentarbefehle für einen Dependabot-Pullrequest für Versionsupdates und Sicherheitsupdates.

In den folgenden Beispielen wird veranschaulicht, wie ignore verwendet werden kann, um anzupassen, welche Abhängigkeiten aktualisiert werden.

  • So ignorierst du Updates nach einer bestimmten Version:

    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,)" ]
    
  • So ignorierst du Patchupdates:

    YAML
    ignore:
      - dependency-name: "@types/node"
        # Ignore patch updates for Node
        update-types: ["version-update:semver-patch"]
    
  • Informationen zum Ignorieren bestimmter Versionen oder Versionsbereiche findest du unter Ignorieren bestimmter Versionen oder Versionsbereiche.

Wenn du eine Abhängigkeit oder eine Bedingung ignorieren möchtest, kannst du die Bedingungen zum Ignorieren aus der dependabot.yml-Datei löschen oder den Pull Request erneut erstellen.

Für Pull Requests für gruppierte -updates können Sie auch @dependabot unignore Kommentarbefehle verwenden. Mit den @dependabot unignore-Kommentarbefehlen kannst du Folgendes ausführen, indem du einen Dependabot Pull Request kommentierst:

  • Eine bestimmte Ignorierbedingung aufheben
  • Das Ignorieren einer bestimmten Abhängigkeit aufheben
  • Alle Ignorierbedingungen für alle Abhängigkeiten in einem Dependabot Pull Request aufheben

Weitere Informationen findest du unter Verwalten von Pull Requests für Abhängigkeitsupdates.

Zulassen der Aktualisierung bestimmter Abhängigkeiten

Du kannst allow verwenden, um Dependabot die Abhängigkeiten mitzuteilen, die du verwalten möchtest. allow wird in der Regel in Verbindung mit ignore verwendet.

Weitere Informationen findest du im Abschnitt zu allow unter Referenz zu Dependabot-Optionen.

Standardmäßig erstellt Dependabot Pull Requests für Versionsupdates nur für die Abhängigkeiten, die explizit in einem Manifest definiert sind (direct-Abhängigkeiten). In dieser Konfiguration wird allow verwendet, um Dependabot mitzuteilen, dass die all-Abhängigkeitstypen verwaltet werden sollen. Das schließt die direct-Abhängigkeiten und ihre Abhängigkeiten ein, die auch als indirekte Abhängigkeiten, Unterabhängigkeiten oder vorübergehende Abhängigkeiten bezeichnet. Darüber hinaus weist die Konfiguration Dependabot an, alle Abhängigkeiten mit einem Namen zu ignorieren, der dem Muster org.xwiki.* entspricht, da ein anderer Prozess zum Verwalten dieser Daten verwendet wird.

Tip

Dependabot sucht nach allen zulässigen Abhängigkeiten und filtert daraufhin alle ignorierten Abhängigkeiten aus. Wenn eine Abhängigkeit durch eine Anweisung zum Zulassen und Ignorieren abgeglichen und eine Übereinstimmung festgestellt wird, wird sie ignoriert.

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

Ignorieren bestimmter Versionen oder Versionsbereiche

Du kannst versions in Verbindung mit ignore verwenden, um bestimmte Versionen oder Versionsbereiche zu ignorieren.

Weitere Informationen findest du im Abschnitt zu versions unter Referenz zu Dependabot-Optionen.

  • So ignorierst du eine bestimmte Version:

    YAML
    ignore:
      - dependency-name: "django*"
        # Ignore version 11
        versions: [ "11" ]
    
  • So ignorierst du einen Versionsbereich:

    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"]
    

Angeben des zu ignorierenden Grads der semantischen Versionierung

Du kannst mithilfe von update-types einen oder mehrere zu ignorierende Grade der semantischen Versionierung (SemVer) angeben.

Weitere Informationen findest du im Abschnitt zu update-types unter Referenz zu Dependabot-Optionen.

In diesem Beispiel werden Dependabot-Patchversionen für Node ignoriert.

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"]

Definieren einer Versionsverwaltungsstrategie

Standardmäßig versucht Dependabot, die Mindestversionsanforderung für Abhängigkeiten zu erhöhen, die als Apps identifiziert werden. Zusätzlich erweitert Dependabot die zulässigen Versionsanforderungen so, dass die neuen und alten Versionen für Abhängigkeiten eingeschlossen werden, die als Bibliotheken identifiziert werden.

Du kannst diese Standardstrategie ändern. Weitere Informationen findest du im Abschnitt zu versioning-strategy unter Referenz zu Dependabot-Optionen.

In diesem Beispiel erhöht Dependabot die Mindestversionsanforderung so, dass sie der neuen Version für Apps und Bibliotheken entspricht.

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

In diesem Beispiel erhöht Dependabot die Mindestversionsanforderung nur dann, wenn die neue Version aufgrund der ursprünglichen Einschränkung nicht zulässig ist.

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

Aktualisieren anbieterspezifischer Abhängigkeiten

Du kannst Dependabot anweisen, anbieterspezifische Abhängigkeiten zu aktualisieren.

Dependabot verwaltet automatisch anbieterspezifische Abhängigkeiten für Go-Module, und du kannst Bundler so konfigurieren, dass anbieterspezifische Abhängigkeiten ebenfalls aktualisiert werden.

Weitere Informationen findest du im Abschnitt zu vendor unter Referenz zu Dependabot-Optionen.

In diesem Beispiel ist für Bundler vendor auf true festgelegt. Dadurch verwaltet Dependabot ebenfalls Abhängigkeiten für Bundler, die im Repository im Verzeichnis vendor/cache gespeichert sind.

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