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.
# `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
Gruppieren verwandter Abhängigkeiten
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:
patternsundexclude-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-dependenciesundrubocop - Verwendet
patternsunddependency-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, dierubocop*entsprechen, 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-updatesverwendet 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-dependencieskonsolidiert, abgesehen von - Abhängigkeiten, die mit
gc_ruboconfigundgocardless-*ü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-dependencieswerden 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 Gruppen einzubeziehen. - Wendet die Gruppierung nur auf Versionsupdates an, da
applies-to: version-updatesverwendet 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
angularundminor-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.