Skip to main content

Optimieren der Erstellung von Pull Requests für Versionsupdates von Dependabot

Erfahren Sie, wie Sie Ihre Dependabot Pull-Anforderungen optimieren und effizient verwalten können.

Wer kann dieses Feature verwenden?

Users with write access

Standardmäßig öffnet Dependabot eine neue Pull Request, um jede Abhängigkeit zu aktualisieren. Wenn du Sicherheitsupdates aktivierst, werden neue Pull Requests geöffnet, wenn eine anfällige Abhängigkeit gefunden wird. Wenn du Versionsupdates für ein oder mehrere Ökosysteme konfigurierst, werden neue Pull Requests geöffnet, wenn neue Versionen von Abhängigkeiten verfügbar sind, wobei die in der Datei dependabot.yml definierte Häufigkeit verwendet wird.

Wenn Ihr Projekt viele Abhängigkeiten aufweist, stellen Sie möglicherweise fest, dass Sie eine sehr große Anzahl von Dependabot Pullanforderungen zum Überprüfen und Zusammenführen haben, was schnell schwierig zu verwalten ist.

Es gibt eine Reihe von Anpassungsoptionen, die Sie implementieren können, um Aktualisierungs-Pullanforderungen so zu optimieren Dependabot , dass sie an Ihre Prozesse angepasst werden, z. B.: * Steuern der Häufigkeit , mit der Dependabot nach neueren Versionen Ihrer Abhängigkeiten schedulegesucht wird. * Priorisieren wichtiger Updates mit groups

Steuern der Häufigkeit und Zeiten von Abhängigkeitsupdates

          Dependabot führt die Überprüfung auf Versionsupdates in der von Ihnen in der Konfigurationsdatei festgelegten Häufigkeit aus, wobei das erforderliche Feld auf `schedule.interval`, `daily`, `weekly`, `monthly`, `quarterly`, `semiannually`, `yearly` oder `cron` gesetzt werden muss (siehe [`cronjob`](/code-security/dependabot/working-with-dependabot/dependabot-options-reference#cronjob)).

Standardmäßig wird die Arbeitslast durch Dependabot ausgeglichen, indem eine zufällige Zeit zum Prüfen und Erstellen von Pull-Anfragen für Abhängigkeitsaktualisierungen zugewiesen wird.

Um jedoch Ablenkung zu reduzieren oder Zeit und Ressourcen für die Überprüfung und Durchführung von Versionsupdates besser zu organisieren, kann es hilfreich sein, die Häufigkeit und die Zeiten zu ändern. Zum Beispiel möchten Sie möglicherweise lieber Dependabot wöchentlich statt täglich nach Updates suchen, und dabei sicherstellen, dass Pull-Anfragen vor der Triage-Sitzung Ihres Teams ausgelöst werden.

Ändern der Häufigkeit und Zeiten für Abhängigkeitsupdates

Sie können schedule in Verbindung mit mehreren Optionen nutzen, um die Häufigkeit und den Zeitpunkt der Dependabot-Überprüfung auf Versionsupdates zu ändern.

Die folgende Beispieldatei dependabot.yml ändert die npm-Konfiguration, um anzugeben, dass Dependabot jeden Dienstag um 02:00 Uhr japanische Standardzeit (UTC +09:00) nach Versionsupdates für npm-Abhängigkeiten gesucht wird.

YAML
# `dependabot.yml` file with
# customized schedule for version updates

version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    # Check the npm registry every week on Tuesday at 02:00 Japan Standard Time (UTC +09:00)
    schedule:
      interval: "weekly"
      day: "tuesday"
      time: "02:00"
      timezone: "Asia/Tokyo"

Weitere Informationen findest du unter Zeitplan.

Priorisieren wichtiger Updates

Du kannst groups verwenden, um Updates für mehrere Abhängigkeiten in einem einzelnen Pull Request zu konsolidieren. Auf diese Weise kannst du dich auf riskantere Updates konzentrieren und die Zeit für die Überprüfung von Nebenversionsupdates minimieren. Du kannst beispielsweise Updates für Nebenversions- oder Patchupdates für Entwicklungsabhängigkeiten in einem einzigen Pull Request kombinieren und eine dedizierte Gruppe für Sicherheits- oder Versionsupdates erstellen, die sich auf einen wichtigen Bereich deiner Codebasis auswirken.

Du musst Gruppen pro einzelnem Paketökosystem konfigurieren, damit du mehrere Gruppen pro Paketökosystem mithilfe einer Kombination von Kriterien erstellen kannst:

  •         Dependabot Updatetyp: `applies-to`
    
  • Abhängigkeitstyp: dependency-type
  • Abhängigkeitsname: patterns und exclude-patterns
  • Grade der semantischen Versionierung: update-types

Informationen zum Anzeigen aller unterstützten Werte für jedes Kriterium findest du unter groups.

In den folgenden Beispielen werden verschiedene Methoden zum Erstellen von Gruppen von Abhängigkeiten mithilfe der Kriterien gezeigt.

Beispiel 1: Drei Versionsupdategruppen

In diesem Beispiel hat die Datei dependabot.yml folgende Funktion:

  • Erstellt drei Gruppen namens production-dependencies, development-dependencies und rubocop
  • Verwendet patterns und dependency-type, um Abhängigkeiten in die Gruppe einzuschließen
  • Verwendet exclude-patterns, um eine Abhängigkeit (oder mehrere) aus der Gruppe auszuschließen
version: 2
updates:
  # Keep bundler dependencies up to date
  - package-ecosystem: "bundler"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      production-dependencies:
        dependency-type: "production"
      development-dependencies:
        dependency-type: "development"
        exclude-patterns:
          - "rubocop*"
      rubocop:
        patterns:
          - "rubocop*"

Infolgedessen:

  • Versionsupdates werden nach Abhängigkeitstyp gruppiert.
  • Entwicklungsabhängigkeiten, die dem Muster rubocop* entsprechen, werden aus der development-dependencies-Gruppe ausgeschlossen.
  • Stattdessen werden Entwicklungsabhängigkeiten, die mit rubocop* übereinstimmen, in die rubocop-Gruppe aufgenommen. Aufgrund der Sortierung werden Produktionsabhängigkeiten, die rubocop* entsprechen, in die production-dependencies-Gruppe einbezogen.
  • Darüber hinaus werden alle Gruppen standardmäßig nur auf Versionsupdates angewendet, da der applies-to-Schlüssel nicht vorhanden ist.

Beispiel 2: Gruppierte Updates mit ausgeschlossenen Abhängigkeiten

In diesem Beispiel hat die Datei dependabot.yml folgende Funktion:

  • Erstellt eine Gruppe namens „support-dependencies“ als Teil einer angepassten Bundler-Konfiguration
  • Verwendet patterns, die mit dem Namen einer Abhängigkeit (oder mehreren) übereinstimmen, um Abhängigkeiten in die Gruppe einzuschließen
  • Verwendet exclude-patterns, die mit dem Namen einer Abhängigkeit (oder mehreren) übereinstimmen, um Abhängigkeiten aus der Gruppe auszuschließen
  • Wendet die Gruppierung nur auf Versionsupdates an, da applies-to: version-updates verwendet wird.
version: 2
updates:
  # Keep bundler dependencies up to date
  - package-ecosystem: "bundler"
    directories:
      - "/frontend"
      - "/backend"
      - "/admin"

    schedule:
      interval: "weekly"
    # Create a group of dependencies to be updated together in one pull request
    groups:
      # Specify a name for the group, which will be used in pull request titles
      # and branch names
      support-dependencies:
        # Define patterns to include dependencies in the group (based on
        # dependency name)
        applies-to: version-updates # Applies the group rule to version updates
        patterns:
          - "rubocop" # A single dependency name
          - "rspec*"  # A wildcard string that matches multiple dependency names
          - "*"       # A wildcard that matches all dependencies in the package
                      # ecosystem. Note: using "*" may open a large pull request
        # Define patterns to exclude dependencies from the group (based on
        # dependency name)
        exclude-patterns:
          - "gc_ruboconfig"
          - "gocardless-*"

Infolgedessen:

  • Die meisten Abhängigkeiten für Bundler werden aufgrund des Platzhaltermusters ("*") in der Gruppe support-dependencies konsolidiert, abgesehen von
  • Abhängigkeiten, die mit gc_ruboconfig und gocardless-* übereinstimmen, werden aus der Gruppe ausgeschlossen, und Dependabot löst weiterhin einzelne Pull Requests für diese Abhängigkeiten aus. Dies kann hilfreich sein, wenn Updates für diese Abhängigkeiten genauer überprüft werden müssen.
  • Für support-dependencies werden von Dependabot nur Pull Requests für Versionsupdates ausgelöst.

Beispiel 3: Einzelne Pull Requests für Hauptversionsupdates und gruppiert für Nebenversions-/Patchupdates

In diesem Beispiel hat die Datei dependabot.yml folgende Funktion:

  • Erstellt eine Gruppe namens „angular“.
  • Verwendet patterns, die mit dem Namen einer Abhängigkeit übereinstimmen, um Abhängigkeiten in die Gruppe einzuschließen
  • Verwendet update-type, um nur minor- oder patch-Updates in die Gruppen einzubeziehen.
  • Wendet die Gruppierung nur auf Versionsupdates an, da applies-to: version-updates verwendet wird.
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      # Specify a name for the group, which will be used in pull request titles
      # and branch names
      angular:
        applies-to: version-updates
        patterns:
          - "@angular*"
        update-types:
          - "minor"
          - "patch"

Infolgedessen:

  • Dependabot erstellt einen gruppierte Pull Request für alle Angular-Abhängigkeiten, die über ein Nebenversions- oder Patchupdate verfügen.
  • Alle Hauptversionsupdates werden weiterhin als einzelne Pull Requests ausgelöst.

Beispiel 4: Gruppierte Pull Requests für Nebenversions-/Patchupdates und keine Pull Requests für Hauptversionsupdates

In diesem Beispiel hat die Datei dependabot.yml folgende Funktion:

  • Erstellt zwei Gruppen namens angular und minor-and-patch
  • Verwendet applies-to, sodass die erste Gruppe nur für Versionsupdates und die zweite Gruppe nur für Sicherheitsupdates gilt.
  • Verwendet update-type, um nur minor- oder patch-Updates für beide Gruppen einzuschließen
  • Verwendet eine ignore-Bedingung, um Updates für major-Versionen von @angular*-Paketen auszuschließen
version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      angular:
        applies-to: version-updates
        patterns:
          - "@angular*"
        update-types:
          - "minor"
          - "patch"
      minor-and-patch:
        applies-to: security-updates
        patterns:
          - "@angular*"
        update-types:
          - "patch"
          - "minor"
    ignore:
      - dependency-name: "@angular*"
        update-types: ["version-update:semver-major"]

Infolgedessen:

  • Neben- und Patchversionsupdates für Angular-Abhängigkeiten werden in einem einzigen Pull Request gruppiert.
  • Neben- und Patchsicherheitsupdates für Angular-Abhängigkeiten werden ebenfalls in einem einzigen Pull Request gruppiert.
  • Dependabot öffnet keine automatischen Pull Requests für Angular-Hauptversionsupdates.