Dependency-Bot¶
Es ist eine bewährte Praxis, Abhängigkeiten regelmäßig zu aktualisieren, um Schwachstellen zu vermeiden, Inkompatibilitäten zwischen Abhängigkeiten einzuschränken und komplexe Upgrades zu vermeiden, wenn von einer zu alten Version aktualisiert wird. Eine Vielzahl von Werkzeugen kann dabei helfen, auf dem neuesten Stand zu bleiben. uv wird hierbei von Renovate unterstützt.
Renovate nutzt die uv.lock-Datei-Datei, um festzustellen, dass uv
für die
Verwaltung von Abhängigkeiten verwendet wird, und schlägt Aktualisierungen für
Projektabhängigkeiten, optionale Abhängigkeiten undEntwicklungsabhängigkeiten
vor. Renovate aktualisiert sowohl die Dateien pyproject.toml
als auch
uv.lock
.
Installation und Konfiguration¶
Das Renovate CLI-Tool kann installiert werden mit
$ npm install renovate
Tipp
Der Renovate-Bot sollte unter einem eigenen Service-User laufen. Daher
empfehlen wir, einen eigenen Account, renovate-bot
, für den Bot zu
erstellen und zu verwenden. Erstellt und speichert anschließend ein
Zugangs-Token für dieses Konto.
Für euren GitLab-Server könnt ihr nun
Renovate konfigurieren. Renovate sucht standardmäßig nach einer
config.js
-Datei im aktuellen Arbeitsverzeichnis. Ihr könnt dies jedoch
außer Kraft setzen, indem ihr die Umgebungsvariable RENOVATE_CONFIG_FILE
definiert. Die Konfiguration kann dann z.B. so aussehen:
module.exports = {
endpoint: 'https://ce.cusy.io/api/v4/',
token: 'GITLAB_TOKEN',
platform: 'gitlab',
onboardingConfig: {
extends: ['config:recommended'],
},
repositories: ['USERNAME/REPO', 'ORGNAME/REPO'],
};
Bemerkung
Ändert die Pfade zu den Repositories in etwas Passendes. Ersetzt auch den Wert GitLab-Token durch den im vorherigen Schritt erstellten Wert.
Siehe auch
Wenn ihr nun die uv.lock
-Datei in eurem Repository regelmäßig
aktualisieren wollt, solltet ihr z.B. in der
renovate.json5
-Datei in eurem Repository die Option lockFileMaintenance
verwenden:
{
$schema: "https://docs.renovatebot.com/renovate-schema.json",
lockFileMaintenance: {
enabled: true,
},
}
Renovate erkennt jedoch nicht automatisch Dateien mit Inline script metadata. Ihr müsst diese Python-Skripte explizit mit fileMatch angegeben, z.B. mit:
{
$schema: "https://docs.renovatebot.com/renovate-schema.json",
pep723: {
fileMatch: [
"app\\.py",
],
},
}
Siehe auch
Schließlich sollte noch die zeitliche Ausführung von Renovate geplant werden, z.B. mit Cron:
#!/bin/bash
export PATH="/home/renovate-bot/.node_modules/.bin/renovate:$PATH"
export RENOVATE_CONFIG_FILE="/home/renovate-bot/config.js"
export RENOVATE_TOKEN="GITLAB_TOKEN"
0 * * * * renovate
CI/CD-Pipeline¶
Renovate kann auch in CI/CD-Pipelines eingebunden werden: