Standardmäßig öffnet Dependabot einen neuen 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 dein Projekt über viele Abhängigkeiten verfügt, stellst du möglicherweise fest, dass eine sehr große Anzahl von Dependabot-Pull-Requests überprüft und gemergt werden müssen, was aufwändig zu verwalten sein kann.
Es gibt eine Reihe von Anpassungsoptionen, die du implementieren kannst, um Dependabot-Pull-Requests für Updates zu optimieren, um sie an deine Prozesse anzupassen, z. B.:
- Steuern der Häufigkeit, mit der Dependabot mit
schedule
nach neueren Versionen deiner Abhängigkeiten sucht - Priorisieren wichtiger Updates mit
groups
Steuern der Häufigkeit und Zeiten von Abhängigkeitsupdates
Dependabot führt die Überprüfung auf Versionsupdates mit einer Häufigkeit aus, die du in der Konfigurationsdatei festgelegt hast (wobei das erforderliche Feld, schedule.interval
, auf daily
, weekly
oder monthly
festgelegt werden muss).
Standardmäßig gleicht Dependabot die Workload aus, indem eine zufällige Zeit für die Überprüfung und Erstellung von Pull Requests für Abhängigkeitsupdates 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. Beispielsweise kann es ratsam sein, Dependabot wöchentlich auszuführen, anstatt täglich nach Updates zu suchen, und das zu einem Zeitpunkt, zu dem Pull Requests vor der Triagesitzung deines Teams erstellt werden.
Du kannst schedule
mit einer Kombination der Optionen verwenden, um die Häufigkeit und die Zeiten zu ändern, wann Dependabot nach Versionsupdates sucht.
Die Beispieldatei dependabot.yml
unten ändert die npm-Konfiguration, um anzugeben, dass Dependabot jeden Tag um 02:00 Japan Standard Time (UTC +09:00) nach Versionsupdates für npm-Abhängigkeiten suchen soll.
# `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"
# `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
undexclude-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
undrubocop
- Verwendet
patterns
unddependency-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 derdevelopment-dependencies
-Gruppe ausgeschlossen. - Stattdessen werden Entwicklungsabhängigkeiten, die mit
rubocop*
übereinstimmen, in dierubocop
-Gruppe aufgenommen. Aufgrund der Sortierung werden Produktionsabhängigkeiten, die mitrubocop*
übereinstimmen, in dieproduction-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
undgocardless-*
ü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 nurminor
- oderpatch
-Updates in die Gruppe einzuschließen - 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
undminor-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 nurminor
- oderpatch
-Updates für beide Gruppen einzuschließen - Verwendet eine
ignore
-Bedingung, um Updates fürmajor
-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.