Skip to main content

Konfigurieren von Updates für mehrere Ökosysteme für Dependabot

Erfahre, wie du Dependabot so konfigurierst, dass Updates in verschiedenen Ökosystemen gruppiert werden, sodass du einen einzelnen, konsolidierten Pull Request pro Gruppe anstelle eines Pull Requests für jedes Ökosystem erhältst.

Wer kann dieses Feature verwenden?

Users with write access

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:

YAML
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

  1. Füge die Taste multi-ecosystem-group hinzu.
  2. Füge patterns deinen Paketökosystemkonfigurationen hinzu.
YAML
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:

YAML
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üsselErforderlichBehavior
scheduleNicht zutreffend
labelsAdditiv
milestoneNur Gruppe
assigneesAdditiv
target-branchNur Gruppe
commit-messageNur Gruppe
pull-request-branch-nameNur 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üsselErforderlichBehavior
package-ecosystemNicht zutreffend
directory / directoriesNicht zutreffend
patternsNicht zutreffend
allowNicht zutreffend
ignoreNicht zutreffend
registriesNicht zutreffend
vendorNicht zutreffend
versioning-strategyNicht zutreffend
update-typesNicht zutreffend
labelsAdditiv
assigneesAdditiv

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 zugewiesen
  • labels – 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:

OptionWert auf GruppenebeneWert auf ÖkosystemebeneErgebnis
assignees@platform-team, @security-lead@docker-admin@platform-team, @security-lead, @docker-admin
labelsinfrastructure, dependenciesdocker, containersinfrastructure, dependencies, docker, containers
YAML
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 Meilensteinnummer
  • commit-message – Commit-Nachrichtenvorlagen
  • target-branch – Zielbranch für Pull Requests
  • pull-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:

OptionWert auf GruppenebeneWert auf ÖkosystemebeneErgebnis
assignees@platform-team@docker-admin@platform-team, @docker-admin
labelsinfrastructuredocker, containersinfrastructure, docker, containers
YAML
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.

YAML
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.

YAML
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.

YAML
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:

YAML
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
OptionWert auf GruppenebeneWert auf ÖkosystemebeneErgebnis
assignees@platform-team@docker-admin (Docker), @terraform-experts (Terraform)Alle kombiniert
labelsinfrastructure, dependenciesdocker (Docker)Alle kombiniert
scheduleweeklyKeineWöchentliche Updates
milestone10KeineNachverfolgt in Meilenstein 10

Vollständige PR

  • schedule: daily
OptionWert auf GruppenebeneWert auf ÖkosystemebeneErgebnis
assignees@full-stack-team@backend-dev (Back-End)Alle kombiniert
labelsfull-stackfrontend (Front-End)Alle kombiniert
scheduledailyKeineHä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.

Weiterführende Themen