Abhängigkeits-Updates mit Mergify und Snyk optimieren
23. August 2023
0 Min. LesezeitDie Verwaltung der Abhängigkeiten eines Projekts erfordert kontinuierlichen Einsatz und Aufmerksamkeit. Sicher haben Sie sich bei der Projektpflege schon mit einer der folgenden Fragen beschäftigt:
Für eine Abhängigkeit sind neue Versionen mit einem Feature oder Bugfix erschienen.
Eine Abhängigkeit weist Sicherheitslücken auf, für die neuere Versionen Korrekturen enthalten.
Abhängigkeitsversionen aktuell halten, damit Ihr Code nicht veraltet.
Zum Glück konnten wir mit GitHub-Bots und Lösungen wie Dependabot und GreenKeeper die Abhängigkeitsverwaltung teilweise automatisieren.
Diese Bots automatisieren jedoch meist nur das Erstellen eines neuen Code-Pull-Requests, der die vorgeschlagenen Änderungen enthält. Das Zusammenführen jedes einzelnen Requests ist weiterhin ein manueller Prozess, bei dem Sie genau darauf achten müssen, keinen Pull-Request zusammenzuführen, der die CI unterbricht.
Was ist besser als automatisierte Abhängigkeits-Updates? Automatisiertes Zusammenführen.
Was ist Mergify?
Mergify ist ein leistungsstarkes, innovatives Tool zur Automatisierung Ihrer GitHub-Workflows. So können Sie sich stärker auf die Entwicklung hervorragender Software und weniger auf umständliche Verwaltungsaufgaben konzentrieren. Im Kern ist Mergify ein Dienst zur Automatisierung von Pull-Requests, mit dem Sie benutzerdefinierte Workflows auf Grundlage von Bedingungen erstellen, die Sie festlegen. Dazu gehören unter anderem das automatische Zusammenführen, Schließen, Kommentieren, Reviewen, Labeln, Weiterleiten, Zurückportieren und Rebasen von Pull-Requests.
Nach der Einrichtung übernimmt Mergify einige der mühsameren Aufgaben bei Code-Reviews und der Projektverwaltung. Das Tool hilft Ihnen, Ihr Repository sauber zu halten, sorgt dafür, dass Ihr Master-Branch stabil bleibt, und reduziert den Zeitaufwand für manuelle Prozesse, die sich automatisieren lassen.
Im nächsten Abschnitt zeigen wir Ihnen, wie Sie Mergify nutzen können, um Abhängigkeits-Updates weniger zum Albtraum und mehr zum Kinderspiel zu machen.
Snyk-Pull-Requests für Abhängigkeits-Upgrades
Sie möchten bei Sicherheitskorrekturen auf dem neuesten Stand bleiben und veraltete Abhängigkeiten vermeiden? Hier kommt Snyk ins Spiel.
Snyk ist eine entwicklerfreundliche Sicherheitsplattform, mit der Entwickler die Sicherheit ihrer Anwendungen selbst verantworten können. Snyk ist vor allem für seine Funktionen zum Scannen auf Sicherheitslücken bekannt und bietet auch eine nahtlose Verwaltung von Abhängigkeits-Updates – insbesondere über automatisierte Pull-Requests.
Wie funktionieren die Pull-Requests für Abhängigkeits-Upgrades von Snyk? Snyk prüft regelmäßig automatisch alle Abhängigkeiten Ihres Projekts auf verfügbare Updates. Wird eine neuere Version gefunden, erstellt Snyk direkt in Ihrem GitHub-Repository einen Pull-Request mit den erforderlichen Änderungen. Dieser enthält umfassende Informationen zum Upgrade, etwa den zeitlichen Verlauf der Änderungen an der Abhängigkeit und das Datum der letzten Veröffentlichung. So können Sie die Änderungen gründlich prüfen, bevor Sie sie zusammenführen.

Erste Schritte
Mit ein paar einfachen Schritten können Sie loslegen:
Wählen Sie eines Ihrer GitHub-Code-Repositories aus, um den automatisierten Workflow für Abhängigkeits-Upgrades und das Zusammenführen zu installieren.
Erstellen Sie ein Mergify-Konto und laden Sie die Mergify-GitHub-App in Ihr Repository ein.
Erstellen Sie ein Snyk-Konto und verbinden Sie Ihr GitHub-Repository damit.
Automatische Abhängigkeits-Upgrades mit Snyk aktivieren
Öffnen Sie die Snyk-App, schließen Sie bei Bedarf die Registrierung ab und verbinden Sie das Repository, dessen Automatisierung Sie einrichten möchten, indem Sie ein GitHub-Repository importieren. Rufen Sie in der Snyk-Benutzeroberfläche die Seite „Projects“ auf, wählen Sie Add projects, anschließend die Code-Repositories aus, die Sie in Snyk importieren möchten, und klicken Sie auf Add selected repositories.

Nachdem das Projekt erfolgreich importiert wurde, aktivieren Sie die Pull-Requests für Abhängigkeits-Upgrades in Snyk. Wählen Sie dazu Settings, dann Integrations und anschließend GitHub aus:

Scrollen Sie dann nach unten zum Konfigurationsbereich Automatic dependency upgrade PRs und aktivieren Sie die Funktion:

Nachdem der Snyk-Bot nun automatisch Upgrade-Pull-Requests für Projektabhängigkeiten erstellt, rufen wir die Mergify-Konfiguration auf, um das Zusammenführen dieser Pull-Requests zu automatisieren.
Eine Auto-Merge-Richtlinie in Mergify erstellen
Verbinden Sie Mergify wie bei Snyk mit Ihrem GitHub-Konto. Als Nächstes fügen wir die Repositories hinzu, die Sie mit Mergify verwalten möchten.
Um die Git-Repositories zu bearbeiten, die Sie mit Mergify verwalten möchten, werden Sie zur Seite der GitHub-Anwendungen weitergeleitet. Dort können Sie die gewünschten Repositories aus dem Dropdown-Menü auswählen:

Wenn Sie alle Repositories ausgewählt haben, für die Sie Mergify hinzufügen möchten, klicken Sie auf die Schaltfläche Save.
Als Nächstes konfigurieren wir die Merge-Richtlinie für unser Projekt. Dazu verwenden wir die Datei .mergify.yml im Stammverzeichnis des Repositorys. Tipp: Sie können die Datei auch im Verzeichnis .github/ ablegen, damit sie zusammen mit anderen CI-bezogenen Workflows und Konfigurationen gespeichert ist.
Die YAML-Konfigurationsdatei von Mergify besteht aus folgenden Bausteinen:
Merge-Warteschlangen – Eine Warteschlange, in die Pull-Requests eingestellt werden, bis sie nacheinander in Ihren Main-Branch übernommen werden können – ohne Merge-Konflikte oder Breaking Changes.
Pull-Request-Regeln – Wie der Name schon sagt, handelt es sich um eine Reihe von Bedingungen, anhand derer Pull-Requests geprüft und anschließend Aktionen ausgeführt werden, etwa das Verschieben in eine Merge-Warteschlange.
Hier sehen Sie ein einfaches Beispiel:
Mit der obigen Konfiguration wird der Pull-Request zusammengeführt, wenn mindestens ein Reviewer ihn freigegeben hat.
Ohne Mergify könnte ein Reviewer die Änderungen in einem Pull-Request sehr schnell freigeben. Dennoch müsste er warten, bis alle CI-Prüfungen erfolgreich abgeschlossen sind – oder bis die Person, die den Pull-Request erstellt hat, bestätigt, dass die freigegebenen Änderungen zum Zusammenführen bereit sind. Das Zusammenführen erfolgt manuell.
Mit den obigen Bedingungen und Mergify wird der Pull-Request nach einer Freigabe automatisch in den Main-Branch übernommen.
Snyk-Pull-Requests für Upgrades automatisch zusammenführen
Fügen wir dieselbe Automatisierung für Snyk-Pull-Requests hinzu, mit denen Abhängigkeiten aktualisiert werden. Unsere Mergify-Konfiguration sieht dann so aus:
Sehen wir uns die einzelnen Schritte genauer an:
Es wird eine neue Merge-Warteschlange mit dem Namen
Snyk PRs Queueerstellt. Pull-Requests werden nur dann zusammengeführt, wenn alle CI-Statusprüfungen erfolgreich abgeschlossen sind. Dadurch stellen wir sicher, dass unsere Tests und andere Automatisierungen in der CI erfolgreich durchlaufen und die aktualisierten Abhängigkeitsversionen keine Breaking Changes verursachen – soweit unsere Tests das feststellen können.Damit Pull-Requests in die Snyk PRs Queue aufgenommen werden, müssen sie folgende Bedingungen erfüllen:
Der Titel des Pull-Requests beginnt mit
[Snyk].Der Name des Head-Branches des Pull-Requests beginnt mit
snyk-fix.Der Name des Base-Branches, in den der Pull-Request übernommen wird, lautet
main.
Sind die obigen Bedingungen erfüllt, versehen wir den Pull-Request mit dem GitHub-Label „auto-merge“ und stellen ihn in die Snyk PRs Queue.
Committen Sie die neue Mergify-Konfigurationsdatei in das Repository und beobachten Sie, wie die Automatisierung wirkt, sobald Snyk einen neuen Pull-Request erstellt:

Tipp: Mit Richtlinien für Snyk-Abhängigkeits-Upgrades die Anzahl der Benachrichtigungen reduzieren
Die Automatisierung von Abhängigkeits-Pull-Requests kann Ihr Team schnell mit einer großen Menge an Requests überfordern. Entscheidend ist, ein Gleichgewicht zu finden, bei dem Updates den Workflow Ihres Teams nicht behindern. Dabei helfen Ihnen die Richtlinien für Snyk-Abhängigkeits-Upgrades.
1. Begrenzen Sie die Anzahl gleichzeitig offener Upgrade-Pull-Requests: Mit Snyk können Sie die Anzahl automatisierter Upgrade-Pull-Requests begrenzen, die gleichzeitig offen sein dürfen. So wird Ihr Team nicht von Upgrade-Anfragen überflutet und kann sich auf wichtige Entwicklungsaufgaben in der Pipeline konzentrieren.
2. Legen Sie fest, welche Pakete nicht aktualisiert werden sollen: Nicht alle Pakete müssen oder sollten häufig aktualisiert werden. Ein ständiges Upgrade auf die neueste Version kann mitunter Ihren Code beschädigen oder instabil machen. In solchen Fällen können Sie bestimmte Pakete von den automatisierten Updates durch Snyk ausschließen. So behalten Sie die Kontrolle über den Zeitplan für Abhängigkeits-Updates und konzentrieren sich auf die Pakete, die für Ihr Projekt am wichtigsten sind.
3. Begrenzen Sie den Umfang der Änderungen, indem Sie nur Minor- und Patch-Versionen aktualisieren: Upgrades auf Major-Versionen können mitunter mehr Probleme verursachen, als sie lösen, da Breaking Changes oft zusätzliche Codeänderungen erfordern. Mit Snyk können Sie festlegen, dass automatisch nur Minor- und Patch-Versionen aktualisiert werden. So bleibt Ihre Anwendung stabil und profitiert trotzdem von Verbesserungen ohne Breaking Changes und von Sicherheitspatches.
Mit diesen drei Richtlinien reduzieren Sie die Menge der Benachrichtigungen zu Abhängigkeits-Upgrades. So kann Ihr Entwicklerteam wichtige Updates leichter im Blick behalten und das Risiko von Chaos in der Codebasis senken. Denken Sie daran: Automatisierte Updates sollen den Aufwand manueller Updates reduzieren – nicht an anderer Stelle verursachen. Nutzen Sie die leistungsstarken Funktionen von Snyk für einen reibungslosen, gut organisierten CI-Workflow ohne unnötige Ablenkungen.
Automatisieren und entspannen
Das automatische Zusammenführen von Abhängigkeits-Upgrades kann die Geschwindigkeit und Produktivität Ihres Teams steigern und ist eine hervorragende Möglichkeit zur Automatisierung.
Mit den Pull-Requests für Abhängigkeits-Upgrades von Snyk müssen Sie nicht länger manuell nach Updates suchen und diese nachverfolgen. Verabschieden Sie sich von einer Flut an Abhängigkeits-Updates und begrüßen Sie einen optimierten, sicheren und unkomplizierten Aktualisierungsprozess. Gemeinsam können Mergify und Snyk Ihren Workflow auf ein neues Niveau bringen.
Starten Sie mit Capture-the-Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Challenges lösen.
