Schnelleres Bereitstellen neuer Versionen

Hallo zusammen,

Ich wollte mit euch besprechen, was ihr davon haltet, um einen Punkt zu verbessern, der für mich nicht optimal ist.

Wenn ich mich nicht irre, müssen wir im aktuellen Prozess, wenn wir eine Änderung am Code vornehmen, alles neu kompilieren (logisch) und eine neue Version deployen. Aktuell validiert @pierre-gilles die Funktionen und vor allem deployt er eine neue Version mit vielen zusätzlichen Funktionen.

Es wäre interessant, Dinge viel schneller deployen zu können. Zum Beispiel die Hinzufügung eines Geräts in einer Bibliothek (z. B. zigbee2mqtt). Es stellt sich heraus, dass, wenn jemand ein nicht unterstütztes Gerät hat, wir durch den gesamten Prozess gehen, der für mich in diesem Fall umständlich ist.

Man könnte sich etwas Einfacheres vorstellen, um neue Geräte schnell zu deployen. Zum Beispiel eine Datei, die von einem Repo abgerufen wird und von den Gladys-Instanzen gezogen wird. Dadurch können kleine Ergänzungen vorgenommen werden, ohne dass man auf eine „unnötige“ Wartezeit angewiesen ist, besonders wenn man eine ID in einer JSON-Datei hinzufügen muss :smiley:

Natürlich könnte diese Logik auch anderswo verwendet werden, es ist eher ein Muster, das interessant sein könnte. Wir bleiben in einem kontrollierten Rahmen (alles ist automatisch mit Kontrolle über die PRs usw.), aber zumindest unterscheiden wir zwischen dem Deployen großer Updates und kleinen Ergänzungen.

Was haltet ihr davon?

Hallo @damalgos!

Ich hatte deine Nachricht nicht gesehen, aber jetzt antworte ich dir :slight_smile:

Ich gebe dir meine Meinung dazu. Grundsätzlich könnte es zwar nett klingen, aber in der Praxis denke ich, dass es ein Rückschritt zur Version 3 und ihren Problemen wäre, gerade dort, wo wir in der Version 4 einen sauberen Prozess eingeführt haben, der die Integrität und Stabilität der Software garantiert.

Ich erkläre es dir: Wenn wir ein Docker-Image von Gladys 4 deployen, deployen wir einen « atomaren » Build, also eine eingefrorene Version, die getestet, gebaut und deployed wurde.

Dieser Build hat eine Versionsnummer, einen Hash, es ist ein kohärenter Satz, der getestet wurde, und du bist dir sicher (dank des Build-Hashes), dass du, wenn du die neue Version der Software herunterlädst, den richtigen Build einer bestimmten Versionsnummer erhalten hast. (Und nicht eine gefälschte Version oder eine fehlerhafte Datei im Falle eines Netzwerkfehlers)

Wenn Watchtower Gladys aktualisiert, hast du die absolute Garantie, dass das Update entweder erfolgreich ist oder scheitert (und du somit in der vorherigen Version bleibst, aber nicht in einem halbfertigen Zustand).

Im Falle eines Netzwerkproblems ist es physikalisch unmöglich, dass du in einem Zwischenzustand landest, in dem du die Hälfte der Dateien der vorherigen Version und die Hälfte der Dateien der nächsten Version hast.

Versuchen, diesen Prozess für bestimmte Dateien zu umgehen (mit einem Update über Github, wie du sagst), bedeutet, dass wir die ganze Arbeit machen müssen, die Docker erledigt (Überprüfung der Hashes usw.), und vor allem verlieren wir die Atomarität der Versionen und Updates

Die Atomarität zu verlieren, bedeutet, sich « mystischen » Fehlern auszusetzen, die schwer zu lösen sind, weil eine Versionsnummer nicht mehr einen bestimmten Satz von Dateien und eine kohärente Version bestimmt.

Wenn ein Benutzer mit einem Problem zu uns kommt, wenn er uns seine Gladys-Version sagt, hilft uns das nicht unbedingt: Wir müssen auch wissen, wann er die Dateien gezogen hat, das ist nicht ideal.

Ich weiß nicht, ob du die Idee verstehst? :stuck_out_tongue:

Rückkehr zum ursprünglichen Problem

Also, wenn ich dich richtig verstehe, bist du mit der Häufigkeit der Gladys-Releases nicht zufrieden? ^^

An sich ist das Erstellen einer neuen Version von Gladys ein Klick auf einen Knopf, nichts weiter (das dauert 10 Sekunden).

Wenn du den Release-Plan ansiehst, mache ich normalerweise alle zwei Wochen ein Release (außer im Sommer, da alle im Urlaub waren, also vermeide ich ein Release, das potenziell Auswirkungen auf die Installation der Leute haben könnte, während sie nicht zu Hause sind. Und wenn deine Hausautomation gerade dann ausfällt, wenn du dein Zuhause überwachen möchtest, ist das nicht ideal).

Wenn wir zu einem intensiveren Rhythmus übergehen, verlieren wir an Release-Qualität, ich habe bereits nicht viele Rückmeldungen zu den Dev-Builds, die ich mache, wenn wir auf wöchentlich oder alle vier Tage gehen, bin ich mir nicht sicher, ob die Community mitzieht, und vor allem ist es nicht wirklich im Einklang mit den Werten der v4: Wir machen die Dinge richtig, Stabilität ist wichtiger als Schnelligkeit.

Zum Zigbee2mqtt

Da deine Frustration vom Zigbee2mqtt kommt, wäre eine Lösung, es anders für das Zigbee2mqtt zu machen:

  • Eine automatische Erkennung der Feature-Typ/Kategorie einrichten, wie wir es z.B. für Philips Hue gemacht haben?
  • Dem Benutzer ermöglichen, bestimmte nicht erkannte Geräte selbst in der UI zu deklarieren?

Was denkst du darüber?

Hallo,

Kein Problem :wink:

Mach dir keine Sorgen, ich bin nicht frustriert, ich denke nur, dass es schade wäre, auf so kleine Änderungen warten zu müssen. In diesem Fall verstehe ich vollkommen die Idee, eine getestete Version zu haben, bei der alles denselben Prozess durchläuft. Es ging mir vor allem darum, das Problem hier zu thematisieren :slight_smile:

Insgesamt bin ich mit der Release-Häufigkeit zufrieden, mach dir keine Sorgen, alle zwei Wochen ist schon sehr gut :wink:

Dafür bin ich eher dafür! Das könnte das Problem dieses Moduls lösen, da es 1 Milliarde kompatible Geräte gibt, und den Prozess vereinfachen.

Gute Idee :slight_smile:

Aber im Prinzip verstehe ich deine Frustration im Fall von Zigbee2mqtt vollkommen, es ist wirklich frustrierend, blockiert zu sein, obwohl es eigentlich eine so einfache Konfiguration ist, die geändert werden muss.

Ich denke, dass eine manuelle Konfiguration in der UI (für besondere Fälle, wenn Gladys das Gerät nicht kennt) eine gute Lösung sein könnte. Man könnte sich eine Art UI vorstellen, die dir eine Zuordnung anzeigt, auf der linken Seite die Funktionen, die Zigbee2mqtt sendet, und auf der rechten Seite die Funktionen von Gladys, etwas richtig Sauberes

@cicoub13 was denkst du dazu? :slight_smile: