Automatische Gitea Updates
Bereits im Januar dieses Jahres habe ich über meine Erfahrungen mit Gitea Updates berichtet. Das große Problem von Gitea ist, dass es sich nicht automatisch selbst aktualisiert. Ein Issue für das Problem ist schon seit fast 2 Jahren offen: https://github.com/go-gitea/gitea/issues/518#issuecomment-441742904
Ich hasse es wirklich, wenn sich eine sicherheitskritische Webanwendung nicht von selbst aktualisiert – das erlaubt Hackern ein leichtes Spiel. Vor vier Monaten habe ich nun schon die Entwicklung eines automatischen Gitea Update Skripts begonnen, welches ich nun vorstellen möchte.
Update
Wer noch mehr Software (wie Drone, Caddy, Podman, Python, Zitadel und Kanboard) aktualisieren möchte, sollte sich Autoupdate anschauen.
Dieses neue Tool von mir wurde als einzige Binärdatei mit einer Konfigurationsdatei erstellt und auf mehreren Linux-Systemen getestet.
Hinweise vor der Benutzung
Wie ich bereits erwähnt habe, bin ich kein Fan von manuellen Updates und schreibe deshalb für viele meiner Systeme Skripts zum automatischen Aktualisieren. Diese Programme sind schnell erstellt worden und auf meine Bedürfnisse angepasst und können unsauberen Code enthalten. Ich bin allerdings für Verbesserungsvorschläge in Form von Issues und Pull-Requests offen!
Manche Entwickler – wie der Ersteller von Kanboard – haben eine grundsätzliche Skepsis gegenüber automatischen Updates. Es gibt hierfür gute Gründe – du möchtest ja sicher nicht, dass deine Anwendung plötzlich aufgrund eines fehlerhaften Upgrades nicht mehr geht – deshalb empfehle ich automatische Upgrades nur, wenn auch automatische Backups eingerichtet sind.
Das Skript
Die veröffentliche Version meines Skripts kann auf GitHub gefunden werden: https://github.com/CMiksche/gitea-auto-update
Ich habe das Skript nur für mein Debian System entwickelt und getestet. Wenn das Skript einfach so auf Windows, MacOS oder Linux Systemen ohne Systemd ausgeführt wird, können Fehler nicht vermieden werden! Für diese Systeme muss das Skript definitiv angepasst werden.
Wenn das Design von Gitea angepasst wurde, kann es sein, dass ein automatisches Upgrade dieses Template zerstört. Hierauf wird im Skript nicht geprüft.
Wie man mein Skript benutzt
Bitte zuerst die oberen Absätze lesen, ohne Beachtung dieser Hinweise kann es schnell in die Hose gehen!
Die Anwendung ist recht einfach:
-
Installiere mein Skript auf dem Zielsystem:
pip install gitea-auto-update
-
Erstelle eine settings.ini:
[Gitea]
site=https://your-gitea-instance.com/api/v1/version
apiUrl=https://api.github.com/repos/go-gitea/gitea/releases/latest
system=linux-amd64
file=/usr/local/bin/gitea
tmpDir=/tmp/
buildFromSource=
sourceDir=
logFile=update.log
- Führe den Befehl
gite-auto-update --settings=/path/to/settings.ini
aus, um das erste Upgrade zu testen - Wenn die Updates regelmäßig automatisch ausgeführt werden sollen, bearbeite die
/etc/crontab
Datei und rufe dort einen Aufruf des Skripts aus
So einfach geht das. Wenn du auf Probleme stößt, zögere nicht einen Issue oder Pull-Request auf Github zu erstellen oder hier einen Kommentar zu hinterlassen.
Diesen Beitrag habe ich auch auf Englisch veröffentlicht.
Comments
Comment by ONMA on 2019-01-05 12:43:08 +0100
Nun, dieser Blog zeigt wirklich die Anstrengung in Bezug auf Zeit und Geld, um effizienter bei der Durchführung von Updates zu sein.
Comment by b0fh on 2019-12-12 00:05:42 +0100
Warum einfach, wenn es auch kompliziert geht? 😀
#!/bin/bash
bp=/usr/local/bin/gitea
systemctl stop gitea.service
curl -s https://api.github.com/repos/go-gitea/gitea/releases/latest | grep -P ‚browser_download_url.*linux-amd64\.xz[^.]‘ | cut -d'“‚ -f4 | xargs wget -O- | xz -dc > $bp
chown root:git $bp
chmod ug+x $bp
systemctl start gitea.service
Mfg
Comment by Lucas on 2020-10-05 03:03:46 +0200
Thx, da waren paar Syntax-Fehler:
#!/bin/bash
gitea=/usr/local/bin/gitea
systemctl stop gitea.service
curl -s https://api.github.com/repos/go-gitea/gitea/releases/latest | grep -P "browser_download_url.*linux-amd64\.xz[^.]" | cut -d'"' -f4 | xargs wget -O- | xz -dc > $gitea
chown root:git $gitea
chmod ug+x $gitea
systemctl start gitea.service