Mein Home Assistant CI/CD workflow

Zugegeben, es ist etwas „bullshit bingo“ mäßig geschrieben, weil es eigentlich ja keine wirkliche Entwicklung ist. Dennoch habe ich mir vor einiger Zeit Gedanken darüber gemacht wie ich meine Konfiguration von Home Assistant anständig testen kann, ohne das es im Fall der Veröffentlichung zu Konfigurationsfehlern kommt. Home Assistant startet nämlich erst dann korrekt, wenn die Konfigurationsdateien keinen Syntaxfehler enthalten. Ist auch gut so, nur ab und zu ziemlich ärgerlich da dann keine Automatisierung mehr startet. Da ich auch gerne mal ein Leerzeichen falsch, ein Doppelpunkt vergessen oder gar ein Buchstabendreher in der Feldbezeichnung habe, kommt mir so ein Verfahren ganz recht. Wichtigster Punkt bei dem ganzen Workflow ist eine Versionsverwaltung. Ich nutze dafür GitHub. Das hat einfach den Grund, dass zu dieser Plattform viele Tools angebunden sind und mir die Arbeit leichter gemacht wird. Die Bearbeitung meiner Dateien findet auch immer auf meinem iMac statt und niemals auf dem Server selbst. Sobald ich die Änderungen an den Dateien gespeichert und auf GitHub hoch geladen habe, merkt Travis-CI das eine Änderung stattgefunden hat (ein commit getätigt wurde). Travis überprüft also mittels einer vordefinierten Konfiguration ob der Code den es zu testen gibt auch funktioniert. Ein Home Assistant Sensor überprüft den Status des Travis CI builds und überprüft ob der Status auf „passed“ gesetzt wird. Ist dies der Fall starte ich eine kleine Shell Datei welche ein git pull auslöst. Nach ca. 10 Sekunden wird dann automatisch Home Assistant neu gestartet.
Screenshot des Travis CI Dashboards
Wie ihr seht, ist der Prozess recht einfach. Zudem lassen sich sicherlich noch weitere Dinge automatisieren, allerdings ist dieser Workflow für mich ausreichend. Ich kann damit verhindern, dass ich aus versehen eine Konfiguration einspielen möchte die nicht funktioniert, was wiederum dazu führen würde, das andere Automatisierungen nicht funktionieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.