Informationen zu Updates für mehrere Ökosysteme
Mithilfe von Updates für mehrere Ökosysteme kannst du Gruppen erstellen, die sich über mehrere Paketökosysteme erstrecken und einen einzelnen Dependabot-Pull Request mit Updates für alle unterstützten Ökosysteme erhalten. Dieser Ansatz trägt dazu bei, die Anzahl der Dependabot-Pull Requests zu reduzieren, die du erhältst, und optimiert deinen Abhängigkeitsupdateworkflow.
Updates für mehrere Ökosysteme sind besonders nützlich für:
- Infrastrukturprojekte, die mehrere Technologien (Docker, Terraform, Python-Skripts) verwenden.
- Full-Stack-Anwendungen mit Front-End- und Back-End-Abhängigkeiten, die zusammen aktualisiert werden sollen.
- Plattformübergreifende Bibliotheken, die synchronisierte Protokollversionen in verschiedenen Sprachen benötigen.
Erste Schritte
Befolge diese Anweisungen, um deine erste Gruppe für mehrere Ökosysteme einzurichten.
1. Der .github/dependabot.yml
-Datei multi-ecosystem-groups
hinzufügen
Definiere zunächst eine Gruppe mit einem Zeitplan im Abschnitt multi-ecosystem-groups
der obersten Ebene:
version: 2 multi-ecosystem-groups: infrastructure: schedule: interval: "weekly" updates: # Your existing package ecosystems will go here
version: 2
multi-ecosystem-groups:
infrastructure:
schedule:
interval: "weekly"
updates:
# Your existing package ecosystems will go here
2. Zuweisen von Ökosystemen zu Gruppen mit Mustern
- Füge die Taste
multi-ecosystem-group
hinzu. - Füge
patterns
deinen Paketökosystemkonfigurationen hinzu.
version: 2 multi-ecosystem-groups: infrastructure: schedule: interval: "weekly" updates: - package-ecosystem: "docker" directory: "/" patterns: ["nginx", "redis", "postgres"] multi-ecosystem-group: "infrastructure" - package-ecosystem: "terraform" directory: "/" patterns: ["aws", "terraform-*"] multi-ecosystem-group: "infrastructure"
version: 2
multi-ecosystem-groups:
infrastructure:
schedule:
interval: "weekly"
updates:
- package-ecosystem: "docker"
directory: "/"
patterns: ["nginx", "redis", "postgres"]
multi-ecosystem-group: "infrastructure"
- package-ecosystem: "terraform"
directory: "/"
patterns: ["aws", "terraform-*"]
multi-ecosystem-group: "infrastructure"
Wichtig
Der Schlüssel patterns
ist bei Verwendung von multi-ecosystem-group
erforderlich. Du kannst für Abhängigkeitsmuster angeben, dass sie nur bestimmte Abhängigkeiten in der Gruppe enthalten sollen, oder ["*"]
verwenden, um alle Abhängigkeiten einzuschließen.
3. Commit und Überwachung für konsolidierte Pull Requests
Sobald du die Änderungen an deiner dependabot.yml
-Datei übernimmst, wird Dependabot:
- Nach Updates entsprechend dem Zeitplan der Gruppe suchen
- Such nach Updates entsprechend dem Zeitplan der Gruppe.
- Erstelle einen einzelnen Pull Request, der Updates für alle Ökosysteme enthält, die in der Gruppe angegeben sind.
- Verwende den Gruppenbezeichner im Verzweigungsnamen und den Titel des Pull Requests.
4. Anpassen mit zusätzlichen Tasten (optional)
Füge assignees
, labels
und andere Einstellungen zu deinen Gruppen hinzu:
multi-ecosystem-groups: infrastructure: schedule: interval: "weekly" assignees: ["@platform-team"] labels: ["infrastructure", "dependencies"] updates: - package-ecosystem: "docker" directory: "/" patterns: ["nginx", "redis", "postgres"] multi-ecosystem-group: "infrastructure" - package-ecosystem: "terraform" directory: "/" patterns: ["aws", "terraform-*"] multi-ecosystem-group: "infrastructure"
multi-ecosystem-groups:
infrastructure:
schedule:
interval: "weekly"
assignees: ["@platform-team"]
labels: ["infrastructure", "dependencies"]
updates:
- package-ecosystem: "docker"
directory: "/"
patterns: ["nginx", "redis", "postgres"]
multi-ecosystem-group: "infrastructure"
- package-ecosystem: "terraform"
directory: "/"
patterns: ["aws", "terraform-*"]
multi-ecosystem-group: "infrastructure"
Spezifische Konfiguration für mehrere Ökosysteme
Updates für mehrere Ökosysteme verwenden eine zweistufige Konfigurationsstruktur, um Flexibilität und Kontrolle darüber zu bieten, wie Updates gruppiert und verwaltet werden:
- Gruppenebene (
multi-ecosystem-groups
): Hier definierst du das allgemeine Gruppenverhalten, die Planung und die freigegebenen Einstellungen, die für alle Paketökosysteme in der Gruppe gelten. - Ökosystemebene (
updates
): Konfiguriere einzelne Paket-Manager innerhalb der Gruppe, einschließlich der einzubeziehenden Abhängigkeiten und der ökosystemspezifischen Einstellungen.
Mit dieser Struktur kannst du einheitliche Richtlinien auf Gruppenebene festlegen und gleichzeitig eine detaillierte Kontrolle über einzelne Paketökosysteme beibehalten.
multi-ecosystem-groups
Definiere Gruppen, die sich über mehrere Paketökosysteme erstrecken. Jede Gruppe erfordert Folgendes:
- Gruppenbezeichner: Wird in Verzweigungsnamen und Pull Request-Titeln verwendet.
- Zeitplan: Häufigkeit der Suche nach Updates. Alle verfügbaren Optionen findest du unter Zeitplan.
multi-ecosystem-group
Weise Sie einer Gruppe mit mehreren Ökosystemen ein Paketökosystem zu. Erfordert den patterns
-Schlüssel, um anzugeben, welche Abhängigkeiten einbezogen werden sollen.
Weitere Informationen über patterns
findest du unter patterns
und exclude-patterns
.
Zusätzliche Konfigurationsoptionen
Alle standardmäßigen Dependabot-Konfigurationsoptionen können mit Gruppen mit mehreren Ökosystemen verwendet werden. Siehe package-ecosystem
, directory
, allow
, ignore
und registries
in Referenz zu Dependabot-Optionen.
Schlüsselkonfiguration
Bei der Verwendung von Gruppen mit mehreren Ökosystemen werden Schlüssel auf zwei Ebenen konfiguriert. Hier ist eine vollständige Aufschlüsselung, welche Schlüssel wo verwendet werden können:
Gruppenebene (multi-ecosystem-groups
)
In der folgenden Tabelle sind die auf Gruppenebene verfügbaren Konfigurationsschlüssel zusammen mit ihren Verhaltenstypen aufgeführt. Weitere Informationen findest du unter Konfigurationsverhalten.
Schlüssel | Erforderlich | Behavior |
---|---|---|
schedule | Nicht zutreffend | |
labels | Additiv | |
milestone | Nur Gruppe | |
assignees | Additiv | |
target-branch | Nur Gruppe | |
commit-message | Nur Gruppe | |
pull-request-branch-name | Nur Gruppe |
Ökosystemebene (updates
)
In der folgenden Tabelle sind die auf Ökosystemebene verfügbaren Konfigurationsschlüssel zusammen mit ihren Verhaltenstypen aufgeführt. Weitere Informationen findest du unter Konfigurationsverhalten.
Schlüssel | Erforderlich | Behavior |
---|---|---|
package-ecosystem | Nicht zutreffend | |
directory / directories | Nicht zutreffend | |
patterns | Nicht zutreffend | |
allow | Nicht zutreffend | |
ignore | Nicht zutreffend | |
registries | Nicht zutreffend | |
vendor | Nicht zutreffend | |
versioning-strategy | Nicht zutreffend | |
update-types | Nicht zutreffend | |
labels | Additiv | |
assignees | Additiv |
Konfigurationsverhalten
Zusätzliche Tasten
Zusätzliche Schlüssel verbinden Werte von der Gruppenebene und von der individuellen Ökosystemebene, statt andere außer Kraft zu setzen. Auf diese Weise kannst du konsistente teamweite Konfigurationen auf Gruppenebene festlegen und gleichzeitig bestimmte Ökosystemkompetenzen auf individueller Ebene hinzufügen.
assignees
– Alle Bearbeiter von Gruppen- und Ökosystemebenen werden zugewiesenlabels
– Alle Bezeichnungen von Gruppen- und Ökosystemebenen werden angewendet
In dieser Tabelle wird gezeigt, wie Dependabot Werte aus Gruppen- und Ökosystemebene für Docker-Pull Requests im folgenden Beispiel kombiniert:
Option | Wert auf Gruppenebene | Wert auf Ökosystemebene | Ergebnis |
---|---|---|---|
assignees | @platform-team , @security-lead | @docker-admin | @platform-team , @security-lead , @docker-admin |
labels | infrastructure , dependencies | docker , containers | infrastructure , dependencies , docker , containers |
multi-ecosystem-groups: infrastructure: assignees: ["@platform-team", "@security-lead"] labels: ["infrastructure", "dependencies"] updates: - package-ecosystem: "docker" assignees: ["@docker-admin"] labels: ["docker", "containers"] multi-ecosystem-group: "infrastructure"
multi-ecosystem-groups:
infrastructure:
assignees: ["@platform-team", "@security-lead"]
labels: ["infrastructure", "dependencies"]
updates:
- package-ecosystem: "docker"
assignees: ["@docker-admin"]
labels: ["docker", "containers"]
multi-ecosystem-group: "infrastructure"
Reine Gruppenschlüssel
milestone
– Ganzzahlige Meilensteinnummercommit-message
– Commit-Nachrichtenvorlagentarget-branch
– Zielbranch für Pull Requestspull-request-branch-name
– Konfiguration der Branchbenennung
Warnung
Wenn du versuchst, reine Gruppenschlüssel auf Ökosystemebene (in updates
Einträgen) festzulegen, löst Dependabot einen Konfigurationsfehler aus und kann deine dependabot.yml
-Datei nicht verarbeiten. Diese Schlüssel dürfen nur im Abschnitt multi-ecosystem-groups
angegeben werden.
Beispiel:
In dieser Tabelle wird gezeigt, wie Dependabot Werte aus Gruppen- und Ökosystemebene für Docker-Pull Requests im folgenden Beispiel kombiniert:
Option | Wert auf Gruppenebene | Wert auf Ökosystemebene | Ergebnis |
---|---|---|---|
assignees | @platform-team | @docker-admin | @platform-team , @docker-admin |
labels | infrastructure | docker , containers | infrastructure , docker , containers |
multi-ecosystem-groups: infrastructure: assignees: ["@platform-team"] labels: ["infrastructure"] updates: - package-ecosystem: "docker" assignees: ["@docker-admin"] labels: ["docker", "containers"] multi-ecosystem-group: "infrastructure"
multi-ecosystem-groups:
infrastructure:
assignees: ["@platform-team"]
labels: ["infrastructure"]
updates:
- package-ecosystem: "docker"
assignees: ["@docker-admin"]
labels: ["docker", "containers"]
multi-ecosystem-group: "infrastructure"
Anwendungsfälle und Beispiele
Updates für mehrere Ökosysteme sind besonders nützlich für Projekte, die mehrere Paket-Manager verwenden und Updates übergreifend koordinieren möchten. Im Folgenden sind allgemeine Szenarien aufgeführt:
Infrastrukturprojekte
Szenario: Dein Infrastrukturcode verwendet mehrere Technologien – Docker-Container, Terraform für Cloudressourcen und Python-Skripts für die Automatisierung. Du möchtest, dass alle infrastrukturbezogenen Updates für eine einfachere Koordination von Überprüfung und Bereitstellung gruppiert werden.
Warum diese zusammen gruppiert werden: Infrastrukturänderungen müssen häufig gemeinsam bereitgestellt werden. Durch separate PRs für jede Technologie entsteht ein Koordinationsaufwand.
multi-ecosystem-groups: infrastructure: schedule: interval: "weekly" # Weekly updates to avoid disruption updates: - package-ecosystem: "docker" directory: "/" patterns: ["nginx", "redis", "postgres"] multi-ecosystem-group: "infrastructure" - package-ecosystem: "terraform" directory: "/" patterns: ["aws", "terraform-*"] multi-ecosystem-group: "infrastructure" - package-ecosystem: "pip" directory: "/" patterns: ["boto3", "requests", "pyyaml"] multi-ecosystem-group: "infrastructure"
multi-ecosystem-groups:
infrastructure:
schedule:
interval: "weekly" # Weekly updates to avoid disruption
updates:
- package-ecosystem: "docker"
directory: "/"
patterns: ["nginx", "redis", "postgres"]
multi-ecosystem-group: "infrastructure"
- package-ecosystem: "terraform"
directory: "/"
patterns: ["aws", "terraform-*"]
multi-ecosystem-group: "infrastructure"
- package-ecosystem: "pip"
directory: "/"
patterns: ["boto3", "requests", "pyyaml"]
multi-ecosystem-group: "infrastructure"
Ergebnis: Ein wöchentlicher Pull Request, der Updates für Docker-Images, Terraform-Anbieter und Python-Abhängigkeiten enthält, die in der Infrastrukturautomatisierung verwendet werden.
Vollständige Anwendungen
Szenario: Du verfügst über eine Webanwendung mit einem React-Front-End und Rails-Back-End. Du möchtest Front-End- und Back-End-Abhängigkeiten zusammen aktualisieren, um Kompatibilität zu gewährleisten und Tests zu optimieren.
Warum diese zusammen gruppiert werden: Front-End und Back-End hängen häufig voneinander ab und stellen sicher, dass du den vollständigen Anwendungsstapel in einem Durchgang testen kannst.
multi-ecosystem-groups: app-dependencies: schedule: interval: "daily" # More frequent updates for application code updates: - package-ecosystem: "npm" directory: "/frontend" patterns: ["react", "lodash", "@types/*"] # Core frontend libraries and TypeScript types multi-ecosystem-group: "app-dependencies" - package-ecosystem: "bundler" directory: "/backend" patterns: ["rails", "pg", "sidekiq"] # Core backend framework and database multi-ecosystem-group: "app-dependencies"
multi-ecosystem-groups:
app-dependencies:
schedule:
interval: "daily" # More frequent updates for application code
updates:
- package-ecosystem: "npm"
directory: "/frontend"
patterns: ["react", "lodash", "@types/*"] # Core frontend libraries and TypeScript types
multi-ecosystem-group: "app-dependencies"
- package-ecosystem: "bundler"
directory: "/backend"
patterns: ["rails", "pg", "sidekiq"] # Core backend framework and database
multi-ecosystem-group: "app-dependencies"
Ergebnis: Tägliche PRs, die sowohl Front-End-JavaScript-/TypeScript-Updates als auch Back-End Ruby Gem-Updates enthalten, sodass du die vollständige Anwendung testen kannst.
Plattformübergreifende Bibliotheken
Szenario: Du erstellst eine Bibliothek oder einen Dienst, die/der dieselben Protokolle in verschiedenen Sprachen verwendet (wie gRPC und Protokollpuffer). Du möchtest die Bibliotheksversionen über alle Implementierungen hinweg synchronisieren.
Warum diese zusammen gruppiert werden: Protokollbibliotheken müssen in verschiedenen Sprachimplementierungen kompatibel bleiben, sodass durch die gemeinsame Aktualisierung Versionskonflikte verhindert werden.
multi-ecosystem-groups: grpc-and-protobuf: schedule: interval: "daily" updates: - package-ecosystem: "bundler" directory: "/grpc-proto-test/" patterns: ["grpc", "google-protobuf"] multi-ecosystem-group: "grpc-and-protobuf" - package-ecosystem: "npm" directory: "/grpc-proto-test/" patterns: ["@grpc/grpc-js", "google-protobuf"] multi-ecosystem-group: "grpc-and-protobuf"
multi-ecosystem-groups:
grpc-and-protobuf:
schedule:
interval: "daily"
updates:
- package-ecosystem: "bundler"
directory: "/grpc-proto-test/"
patterns: ["grpc", "google-protobuf"]
multi-ecosystem-group: "grpc-and-protobuf"
- package-ecosystem: "npm"
directory: "/grpc-proto-test/"
patterns: ["@grpc/grpc-js", "google-protobuf"]
multi-ecosystem-group: "grpc-and-protobuf"
Ergebnis: Tägliche PRs stellen sicher, dass Ruby- und Node.js-gRPC-Bibliotheken synchronisiert bleiben und Protokollkompatibilitätsprobleme verhindern.
Beispiel für erweiterte Konfiguration
Dieses umfassende Beispiel zeigt, wie ein komplexes Projekt mehrere Gruppen mit unterschiedlichen Updatestrategien und Schlüsselzusammenführung verwenden kann:
version: 2 multi-ecosystem-groups: infrastructure: schedule: interval: "weekly" assignees: ["@platform-team"] # assign platform team labels: ["infrastructure", "dependencies"] milestone: 10 # Track in milestone commit-message: prefix: "infra" include: "scope" # Application code updates - daily, with development team full-stack: schedule: interval: "daily" assignees: ["@full-stack-team"] # assign to full-stack team labels: ["full-stack"] updates: # Docker images - infrastructure group with additional docker expertise - package-ecosystem: "docker" directory: "/" patterns: ["nginx", "redis", "postgres"] assignees: ["@docker-admin"] # adds to @platform-team (additive) labels: ["docker"] # adds to infrastructure, dependencies (additive) multi-ecosystem-group: "infrastructure" # Terraform - infrastructure group with terraform specialists - package-ecosystem: "terraform" directory: "/" patterns: ["aws", "terraform-*"] multi-ecosystem-group: "infrastructure" # Frontend - full-stack group with frontend focus - package-ecosystem: "npm" directory: "/frontend" patterns: ["react", "lodash", "@types/*"] labels: ["frontend"] # adds to full-stack (additive) multi-ecosystem-group: "full-stack" # Backend - full-stack group with backend specialist - package-ecosystem: "bundler" directory: "/backend" patterns: ["rails", "pg", "sidekiq"] assignees: ["@backend-dev"] # adds to @full-stack-team (additive) multi-ecosystem-group: "full-stack"
version: 2
multi-ecosystem-groups:
infrastructure:
schedule:
interval: "weekly"
assignees: ["@platform-team"] # assign platform team
labels: ["infrastructure", "dependencies"]
milestone: 10 # Track in milestone
commit-message:
prefix: "infra"
include: "scope"
# Application code updates - daily, with development team
full-stack:
schedule:
interval: "daily"
assignees: ["@full-stack-team"] # assign to full-stack team
labels: ["full-stack"]
updates:
# Docker images - infrastructure group with additional docker expertise
- package-ecosystem: "docker"
directory: "/"
patterns: ["nginx", "redis", "postgres"]
assignees: ["@docker-admin"] # adds to @platform-team (additive)
labels: ["docker"] # adds to infrastructure, dependencies (additive)
multi-ecosystem-group: "infrastructure"
# Terraform - infrastructure group with terraform specialists
- package-ecosystem: "terraform"
directory: "/"
patterns: ["aws", "terraform-*"]
multi-ecosystem-group: "infrastructure"
# Frontend - full-stack group with frontend focus
- package-ecosystem: "npm"
directory: "/frontend"
patterns: ["react", "lodash", "@types/*"]
labels: ["frontend"] # adds to full-stack (additive)
multi-ecosystem-group: "full-stack"
# Backend - full-stack group with backend specialist
- package-ecosystem: "bundler"
directory: "/backend"
patterns: ["rails", "pg", "sidekiq"]
assignees: ["@backend-dev"] # adds to @full-stack-team (additive)
multi-ecosystem-group: "full-stack"
Funktionsweise dieser Konfiguration
Infrastruktur-PR
schedule: weekly
Option | Wert auf Gruppenebene | Wert auf Ökosystemebene | Ergebnis |
---|---|---|---|
assignees | @platform-team | @docker-admin (Docker), @terraform-experts (Terraform) | Alle kombiniert |
labels | infrastructure , dependencies | docker (Docker) | Alle kombiniert |
schedule | weekly | Keine | Wöchentliche Updates |
milestone | 10 | Keine | Nachverfolgt in Meilenstein 10 |
Vollständige PR
schedule: daily
Option | Wert auf Gruppenebene | Wert auf Ökosystemebene | Ergebnis |
---|---|---|---|
assignees | @full-stack-team | @backend-dev (Back-End) | Alle kombiniert |
labels | full-stack | frontend (Front-End) | Alle kombiniert |
schedule | daily | Keine | Häufigere Updates |
Dieser Ansatz stellt sicher, dass die richtigen Personen für jeden Updatetyp beteiligt sind und gleichzeitig einheitliche Richtlinien für verwandte Technologien beibehalten werden.
Bewährte Methoden
- Gruppenbezogene Abhängigkeiten: Nur Gruppenökosysteme, die logisch zusammengehören.
- Beschreibende Bezeichner verwenden: Wähle Gruppennamen aus, die eindeutig den Zweck der Gruppe angeben.