Mein Git-Deployment-Prozess - Optimierungspotential?

Begonnen von KernSani, 22 Februar 2020, 21:49:50

Vorheriges Thema - Nächstes Thema

KernSani

Hallo zusammen,

ich entwickle (eigene Module, myUtils etc...) meinen Perl-Kram mit Sublime auf einem Windows-Rechner mit sehr rudimentärer FHEM-Installation. Das /FHEM-Verzeichnis ist gleichzeitig ein lokales Git-Repository. Daneben habe ich noch zwei FHEM-Instanzen auf Pi4: Mein Produktivsystem und eine grob dem Produktivsystem entsprechende Testinstanz (ohne IOs etc...).
Was ich mir gebastelt habe:
1.) Wenn ich einen gewissen Entwicklungsstand erreicht habe (und auf der lokalen Windows-Instanz grob getestet habe), commite ich (über das Sublime Git plugin)
2.) Ein post-commit Hook im git pushed auf ein repository auf dem Test-Pi
3.) Auf dem Test-Pi läuft ein post-receive hook, der ein checkout in ein temporäres Verzeichnis macht.
4.) Per bash-Skript werden die Dateien aus dem temporären Verzeichnis nach /opt/fhem/FHEM verschoben und ge-chownt
5.) commandref_join wird für die verschobenen Dateien aufgerufen
6.) Über telnet wird in fhem ein reload der Datei angestossen.

Das selbe Szenario (nur mit manuellem Push) läuft auch auf dem Produktivserver.
Das Ganze ist irgendwie etwas umständlich und wahrscheinlich optimierbar (ich bin alles andere als bash-König) aber funktioniert prinzipiell, kurz nachdem ich lokal committed habe kann ich auf dem Pi testen ohne weitere manuelle Eingriffe. Problematisch wird es dann, wenn ich es mit etwas anderem als klassischen Moduldateien (also Kram ausserhalb des /FHEM-Verzeichnisses) zu tun habe und insgesamt finde ich den Prozess wenig elegant.

Wie sieht das bei euch aus? Habt ihr ähnliche Konstrukte oder macht ihr das "deployment" manuell?

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Jakob

Hallo KernSani, vielen Dank für deinen Bericht!

Ich bin darauf gestoßen als ich im Forum nach git gesucht habe. Das der FHEM-Quellcode noch immer mit SVN verwaltet wird, scheint mir doch etwas anarchonistisch. Auf GitHub gibt es zwar einige FHEM-Repositories aber insgesamt sieht die Infrastruktur zur Softwareentwicklung nach ziemlich viel Gefrickel aus. Wenn der gesamte Code in git verwaltet wird, lässt sich mit branches und commit-hooks auch das deployment besser automatisieren. Grundsätzlich hilft wenn mehr Leute ihre Skripte in Repositories verwalten und zur Verfügung stellen, das irgendwelche Perl-Dateien herumzukopieren. Ich schaue mal wie ich es einrichte, eigentlich will ich nur die Temperatur der Heizung auslesen...