Beachte: Zur Zeit des Posts nutze ich Renovate v39. Das Konzept könnte sich mit einer späteren Version verändern; aber solange ich diesen Blog betreibe, werde ich vermutlich auch ein Update schreiben.
Mein Problem
Ich baue meinen Blog mit Hugo, und das Deployment passiert via Forgejo Actions. Bisher hatte ich ein Skript das einfach die aktuellste Version von Hugo heruntergeladen hat und das für den Bau verwendet hat.
In letzter Zeit habe ich festgestellt, dass das Fixieren einer Version schlau ist. Zusätzlich habe ich kürzlich Renovate aufgesetzt, also wollte ich beides zusammenführen.
Das Setup im repo
Ich habe im Repo jetzt eine neue Datei hugo-version.txt
liegen. Die enthält nur zwei Zeilen:
0.145.0
Beachte: Die zweite Zeile ist eine Leerzeile, die mein Code Renderer scheinbar entfernt. Das muss ich irgendwann einmal reparieren…
Ich habe zusätzlich ein Download Skript, das bisher einfach die aktuellste Hugo-Version heruntergeladen hat; neuerdings nutzt das Skript aber diese Datei zum Feststellen der Version. Die Referenz zu diesem Skript ist unter Download Skript zu finden, falls Interesse besteht.
Renovate Setup
Renovate versteht diese Datei natürlich nicht, da müssen wir nachhelfen. Das renovate.json
File existiert bereits im Repo; ich habe es um den folgenden Eintrag erweitert:
|
|
Kurze Erklärung was hier passiert:
- Suche die Datei
hugo-version.txt
, und matche exakt diese Datei und nichts anderes. Beachte dass der Punkt.
maskiert werden muss, da er sonst für ein beliebiges Zeichen steht. Zusätzlich muss ich den Backslash auch maskieren, um JSON nicht zu verwirren… - Der
matchStrings
Teil stellt fest, was in der Datei vorhanden ist: Eine Versionsnummer, und eine Leerzeile. Wie oben schon erwähnt, ist die Leerzeile wichtig. depNameTemplate
ist denkbar einfach:gohugoio/hugo
- der Name des Repos in dem Hugo gebaut und released wird. Vermutlich könnten wir die Dependency auch in die Datei einfügen, aber das ist hier wirklich nicht nötig und würde das Download-Skript wieder verkomplizieren.- Das
datasourceTemplate
istgithub-releases
- da ich nach einem Github Release suche.
Fertig!
Ich habe einige Zeit benötigt um das aufzusetzen und um zu verstehen was passiert, aber jetzt am Ende ist das nicht allzu kompliziert!
Download Skript
Das alte Skript
Nur als Referenz, falls Interesse besteht.
|
|
Nutze das gerne wie immer benötigt. Was hier passiert ist nicht allzu kompliziert.
Das neue Skript
Das wird wesentlich simpler:
|
|
Nach dem Download
Egal welche Version des Skripts verwendet wird, danach muss die entstandene Datei entpackt werden und Hugo mit chmod +x
ausführbar gemacht werden.