Abhängigkeiten ohne Schmerzen auf dem neuesten Stand zu halten
Renovieren und Dependabot kann alles aktualisieren. Die Einrichtung, die es ruhig hält.
Renovieren und Dependabot kann alles aktualisieren. Die Einrichtung, die es ruhig hält.

Jedes Projekt beginnt mit neuen Abhängigkeiten. Ein Jahr später sind die Hälfte veraltet. Zwei Jahre später erfordert das Upgrade einer Bibliothek das Upgrade von fünf anderen, dem Framework und der Sprachversion, und plötzlich ist ein "kleines Update" ein dreitägiges Projekt.
Die Lösung sind keine heroischen Upgrade-Sprints. Es sind kleine, konstante, automatisierte Updates. Renovate und Dependabot machen das möglich, wenn man sie so einrichtet, dass sie helfen, anstatt Sie mit Zugwünschen zu überfluten.
Dependabot ist in GitHub eingebaut. Einfach einzuschalten, verarbeitet Sicherheitswarnungen und Versionaktualisierungen für die gängigsten Ökosysteme. Gut genug für viele Projekte.
Erneuern (von Mend, Open Source) ist leistungsfähiger und flexibler:
Für Infrastruktur-schwere Repositories bevorzuge ich Renovate, weil es Bildtags, Diagrammversionen und auch festgegründete Aktions-SHAs aktualisieren kann.
Eine ruhige Startkonfiguration:
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended", ":dependencyDashboard"],
"schedule": ["before 7am on monday"],
"timezone": "Europe/Berlin",
"prConcurrentLimit": 5,
"minimumReleaseAge": "3 days",
"packageRules": [
{
"matchUpdateTypes": ["patch", "minor"],
"matchCurrentVersion": "!/^0/",
"groupName": "non-major dependencies",
"automerge": true
},
{
"matchManagers": ["github-actions"],
"groupName": "github actions",
"pinDigests": true
},
{
"matchDatasources": ["docker"],
"pinDigests": true
}
],
"vulnerabilityAlerts": {
"schedule": ["at any time"],
"labels": ["security"]
}
}
Was das macht:
minimumReleaseAge Er wartet einige Tage nach der Veröffentlichung, bevor er ihn vorschlägt. Viele schädliche Paketversionen werden innerhalb weniger Tage entdeckt und entfernt, ebenso wie viele defekte Versionen.Kleine Updates jede Woche sind langweilig. Ein riesiges Upgrade alle zwei Jahre ist ein Projekt. Wählen Sie langweilig.
Automerging-Dependency-Updates klingen vielleicht riskant, aber sie halten den Prozess überschaubar. Die Regeln sind:
Wichtige Neuigkeiten benötigen Aufmerksamkeit:
Die Applikationsabhängigkeit ist nur ein Teil der Geschichte. Infrastruktur hat auch Abhängigkeiten:
Die Handgriffe sind alle neu. Das Aktualisieren der Basisbilder ist eine der einfachsten Möglichkeiten, Schwachstellen in Ihren Containern zu reduzieren.
Schalten Sie Renovate (oder Dependabot) in einem Repository mit einem wöchentlichen Zeitplan und einem PR-Limit ein. Aktivieren Sie die automatische Verschmelzung für Patch-Updates, sobald Sie Ihren Tests vertrauen. Erweitern Sie auf kleinere Updates, dann auf Infrastrukturdateien. Innerhalb eines Monats wird das Aktualisieren zu Hintergrundgeräuschen statt zu einem Projekt.
Meine Meinung: Abhängigkeiten gehen wie Milch, nicht wie Wein. Ein Roboter soll sie frisch halten, ein bisschen jede Woche.
Desly