GitHub Dependabot - Automatisierte Updateüberprüfung für Abhängigkeiten
Libraries machen das Leben von Entwicklern einfacher, denn man muss nicht alles selber schreiben und kann sich auf die eigentlichen Features einer Anwendung konzentrieren. Allerdings gibt man auch Kontrolle und Übersicht ab und entsprechend kann man sich Probleme einhandeln.
Um externe Abhängigkeiten automatisch auf dem neusten Stand zu halten gibt es Dependabot. Früher war Dependabot eine eigenständige Firma, mittlerweile ist man bei GitHub untergekommen, was die dortige Integration natürlich noch einfacher macht. Außerdem ist der Dienst nun komplett kostenlos.
Vor allem auf Sicherheitsupdates weißt Dependabot hin, denn häufig integriert man Abhängigkeiten, aktualisiert selbige aber nicht solange alles läuft. Dabei gehen Sicherheitsprobleme in den Abhängigkeiten natürlich unter. Im Fall eines erkannten Updates wir einfach ein Pull Request erstellt und alles folgt dem gewohnten Flow.
Unterstützt werden unter anderem Ruby, JavaScript, Python, Java (Gradle / Maven), .NET und Docker. Leider ist Dart und somit auch Flutter aktuell noch nicht mit von der Partie und soweit ich es erkennen kann ist derzeit auch nicht geplant das sich dies ändert. Das ist zwar sehr schade, aber durch die pub.dev open_in_new Plattform und das Tooling drum herum, kann man den Prozess der Überprüfung auf Updates hier zumindest teilautomatisiert umsetzen.
Zur Integration von Dependabot in euer GitHub Repository ist lediglich das Erstellen einen simplen Action nötig. Legt dafür einfach im euren Projekt eine .github/dependabot.yml
Datei an und füllt sie z.B. wie folgt.
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
Mit dieser Konfiguration wird täglich im Root-Verzeichnis eures Projekts nach Updates gesucht. Weitere Konfigurationsmöglichkeiten könnt ihr der offiziellen Dokumentation entnehmen.
Meiner Meinung nach ist der Ansatz von Dependabot extrem gut, denn man automatisiert Abläufe die sonst untergehen, nimmt dem Entwickler aber nicht die Kontrolle. Denn wie erwähnt werden Pull Requests erstellt, welche final vom Entwickler verwaltet werden. Sofern die jeweilige Plattform und Sprache unterstützt wird, werde ich Dependabot wohl in allen meinen kommenden GitHub Projekten nutzen. Was sagt ihr zur Idee und Umsetzung von Dependabot?