Automatisierte Updates mit Renovate. Weniger Risiko, mehr Fokus auf Features

Die Verwaltung von Abhängigkeiten in modernen Softwareprojekten ist eine Herausforderung.
Bibliotheken müssen regelmässig aktualisiert werden, um Sicherheitslücken zu schliessen, neue Features zu nutzen und Kompatibilität zu wahren. Doch manuelle Updates sind zeitaufwändig, fehleranfällig und oft nicht priorisiert – bis es zu spät ist.

Renovate löst dieses Problem durch Automatisierung. Der Dienst überwacht Abhängigkeiten kontinuierlich und erstellt automatisch Pull Requests für Aktualisierungen. In diesem Beitrag zeigen wir, wie Renovate den Entwicklungsprozess vereinfacht und wie das Fünfstern-Team Renovate in der Praxis nutzt.

Was ist Renovate?

Renovate ist ein kostenloser Open-Source-Dienst, der Abhängigkeiten in verschiedenen Programmiersprachen und Paketmanagern automatisiert verwaltet.

  • Unterstützte Sprachen: JavaScript, TypeScript, Python, Go, Rust, .NET, Java und weitere
  • Paketmanager: npm, Yarn, Maven, pip, NuGet, Composer und mehr
  • Versionskontrollsysteme: GitHub, GitLab, Gitea, Bitbucket

Renovate scannt regelmässig die Abhängigkeitsdateien eines Projekts (z.B. package.json, .csproj, pom.xml) und vergleicht installierte Versionen mit den neuesten verfügbaren. Bei Updates erstellt es automatisch Pull Requests oder Merge Requests mit den Aktualisierungen.

Vorteile für den Entwicklungsprozess

1. Zeitersparnis

Statt manuell nach Updates zu suchen und diese einzupflegen, übernimmt Renovate diese Aufgabe. So bleibt mehr Zeit für Feature-Entwicklung.

2. Schnellere Sicherheitsupdates

Renovate kann so konfiguriert werden, dass kritische Sicherheitsupdates sofort erstellt und zur Überprüfung vorgelegt werden. Das verringert das Risiko erheblich.

3. Kleine, häufige Updates statt grosser Sprünge

Renovate zerlegt Updates in kleinere Pakete und erstellt separate Pull Requests für verschiedene Abhängigkeiten. Das macht Tests und Reviews einfacher und sicherer.

4. Konfigurierbare Update-Strategien

Regeln lassen sich individuell definieren, zum Beispiel:

  • Automatische Zusammenfassung von Patch-Updates (1.2.3 → 1.2.4)
  • Manuelles Review von Minor-Updates (1.2.3 → 1.3.0)
  • Blockierung von Major-Versionen (1.2.3 → 2.0.0)
  • Ignorieren bestimmter Abhängigkeiten bei Bedarf

5. Integration mit CI/CD-Pipelines

Renovate-Merge Requests durchlaufen automatisierte Tests. So wird sofort sichtbar, ob ein Update Probleme verursacht.

6. Reduzierte technische Schulden

Durch regelmässige Updates bleiben Abhängigkeiten aktuell. Das verhindert aufwändige Nachholaktionen später.

Praxisbeispiel: Renovate im Fünfstern-Projekt

Das Fünfstern-Projekt hat Renovate nach einem konservativen Ansatz integriert. Die Konfiguration wurde bewusst restriktiv gestaltet, um Stabilität zu gewährleisten.

Schritt 1: Die Renovate-Konfiguration (renovate.json)

Besonderheiten dieser Konfiguration:

  • baseBranchPatterns: ["develop"] – Renovate arbeitet nur auf dem develop-Branch
  • prConcurrentLimit: 3 – Maximal 3 gleichzeitige Merge Requests, um nicht zu viele auf einmal zu haben
  • automerge: false – Manuelle Überprüfung ist erforderlich, keine automatischen Merges
  • semanticCommits: enabled – Commits folgen dem Semantic Versioning Standard (chore(deps))
  • Separate Regeln für Frontend und Backend – npm und NuGet haben unterschiedliche Update-Strategien
  • Major-Updates sind deaktiviert – Verhindert grosse Breaking Changes ohne explizite Planung
  • Nur npm-Patch-Updates – Minimale Risiken im Frontend
  • .NET Minor-Updates erlaubt – Im Backend sind grössere Schritte erlaubt

Schritt 2: GitLab CI/CD Integration

Was passiert hier:

  • stage: .pre – Der Job läuft vor allen anderen Stages
  • only: schedules – Nur wenn ein GitLab-Schedule den Job auslöst
  • RENOVATE_PLATFORM: gitlab – Renovate arbeitet mit GitLab, nicht GitHub
  • RENOVATE_TOKEN – Authentifizierung mit GitLab-API
  • RENOVATE_AUTODISCOVER: "false" – Nutzt die explizite Konfiguration

Schritt 3: Merge Request in der Praxis

Wenn Renovate ein Update findet, erstellt es einen MR wie diesen im Fünfstern-Projekt:

Schritt 4: Code Review und Merge-Prozess

Der typische Workflow:

  1. MR wird erstellt – Renovate hat eine neue Version gefunden
  2. Pipeline läuft – Tests und Builds werden automatisch durchgeführt
  3. Code Review – Ein Entwickler überprüft den MR
  4. Tests überprüfen – Sicherstellen, dass alles noch funktioniert
  5. Merge – MR wird in den develop-Branch gemergt

Da automerge: false aktiviert ist, bleibt die Kontrolle stets beim Team.
✅ No security vulnerabilities detected

Warum ein konservativer Ansatz?

Das Fünfstern-Projekt setzt bewusst auf Stabilität.

  • Patch-Updates sind sicherer – sie beheben Fehler ohne neue Features.
  • Minor-Updates werden manuell überprüft, um Risiken zu vermeiden.
  • Major-Updates werden nur geplant durchgeführt.

Frontend und Backend werden getrennt behandelt:

  • npm (Frontend): nur Patch-Updates
  • NuGet (.NET): Patch und Minor erlaubt

Ausserdem werden maximal drei Merge Requests gleichzeitig erstellt, um Übersicht und Stabilität zu wahren.

Praktische Tipps für den Alltag

  1. Renovate-MRs regelmässig prüfen
    Am besten wöchentlich Zeit einplanen, um offene MRs zu bearbeiten.
  2. Release Notes lesen
    Oft enthalten sie wichtige Hinweise zu Sicherheit, Performance oder Breaking Changes.
  3. Test-Resultate beachten
    GitLab zeigt klar, ob Tests bestanden haben:

    ✅ Build: SUCCESS
    ✅ Unit Tests: PASSED
    ✅ Linting: OK
    ✅ Security Scan: NO ISSUES

    Wenn alle grün sind, ist ein Merge sicher.
  4. Schwierige Updates eskalieren
    Kommentieren, Issues verlinken oder als Cannot Merge markieren.
  5. Bestimmte Updates bewusst ignorieren

    Beispiel:

Häufig gestellte Fragen

Warum keine Minor-Updates für npm?
Minor-Updates können Breaking Changes enthalten. Im Fullstack-Setup ist das Frontend besonders sensibel, daher erfolgt hier eine manuelle Kontrolle.

Wann sollten Major-Updates durchgeführt werden?
Geplant im Sprint oder separaten Branch, mit gründlichen Tests.

Was tun, wenn Renovate zu viele MRs erstellt?
Das Limit kann reduziert werden, z. B.:

Wie können bestimmte Packages ignoriert werden?
Mit:

Fazit

Renovate revolutioniert das Dependency Management in modernen Softwareprojekten. Automatisierung spart Zeit, reduziert Sicherheitsrisiken und hält Abhängigkeiten aktuell.

Das Fünfstern-Projekt zeigt, dass ein konservativer Ansatz Stabilität und Aktualität ideal verbindet.

Die wichtigsten Erkenntnisse:

  • Automatisierung schafft Zeit – Weniger manuelle Arbeit, mehr Fokus auf Features
  • Konfigurierbarkeit ist der Schlüssel – Passen Sie Renovate an Ihre Anforderungen an
  • Konservativ ist nicht schlecht – Stabilität ist wichtiger als die neueste Version
  • Frontend und Backend unterscheiden sich – Sie brauchen unterschiedliche Strategien
  • Regelmässige Reviews halten Sie sicher – Wöchentliche Überprüfung ist ideal

Renovate läuft im Hintergrund, während Sie sich auf die Weiterentwicklung Ihrer Software konzentrieren können.

Weiterführende Ressourcen

Glossar

Patch-Update: Kleine Fehlerbehebungen (1.2.3 → 1.2.4)
Minor-Update: Neue Features, abwärtskompatibel (1.2.3 → 1.3.0)
Major-Update: Grosse Versionssprünge mit Breaking Changes (1.2.3 → 2.0.0)
Merge Request (MR): GitLab-Äquivalent zu Pull Requests
Automerge: Automatisches Mergen von MRs ohne Review
Semantic Commits: Einheitliches Commit-Format (z. B. chore(deps))