NEWS
Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30
-
@jey-cee sagte in Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30:
Thema Testing und release:
Ich weiss nicht, ob dieser Thread hier der richtige Ort ist, um das zu besprechen, aber ich möchte gerne meine Meinung zu deinen Aussagen geben.
Wir liefern Standardmässig Tests mit dem Adapter Creator aus. Soweit ich das bisher verstehe wird das vorallem dazu genutzt um die Tests Automatisiert mit GH Actions (oder noch travis) aus zu führen.
Aber man kann diese Tests auch Lokal Ausführen, wobei ich mir sicher bin das macht bisher kaum jemand.Ja, kann man. Wobei es mir eigentlich oft reicht, wenn ich von GitHub ein "OK" bekomme (klar, wenn ich Tests schreibe, dann teste ich die auch lokal).
Dazu hatte ich heute folgende Gedanken:
- Die Tests sollten bereits Lokal durchgeführt werden bevor auf Github gepusht wird.
Siehe oben.
- In der iobroker Test suite können sowohl nodejs als auch js-contoller version die getestet werden fest gelegt werden. Damit wäre es möglich die Adapter Automatisiert auf Lauffähigkeit zu überprüfen und diese Information zum Beispiel in der (io)package.json ein zu tragen (falls der Entwickler hier noch nichts definiert hat).
Das würde ja bedeuten, dass du alle Node Versionen und alle Betriebssysteme bei dir installiert haben müsstest. Ich lasse das lieber GH Actions erledigen, dann habe ich das Resultat für 9 OS/Node Kombinationen innert ein paar Minuten ohne einen Finger zu krümmen.
Dazu muss der Test dann wohl lokal ausgeführt werden.
Desweiteren muss die Vorgabe der Höchsten und niedrigsten version der jeweiligen Komponente immer durch das Kern Team vorgegeben werden und entsprechend in der Test suite hinterlegt sein.Weshalb? Wenn ein Adapter zB nur ab Node 14 läuft, ist das der Entscheid des Entwicklers. Klar, das muss richtig in der (io-)package.json stehen, aber das war's schon.
- Das release skript zur vorgegebenen Veröffentlichungsmethode machen. (Wie geprüft wird ob es verwendet wurde muss dann geklärt werden)
Das finde ich eine super Idee. Im Moment kann das der Adapter Creator noch nicht, aber es gibt ein Issue dazu.
Das release skript kann vor dem eigentlichen release, also lokal, die Tests ausführen und den vorgang abbrechen wenn noch Fehler im Adapter sind.
Weshalb lokal? Das geht doch viel besser auf GitHub Actions.
Außerdem müssen dann die GH Actions nicht mehr bemüht werden um ein npm release zu machen das kann dann auch lokal erfolgen.
Was heisst "bemühen"? Genau für solche Sachen sind doch CI (Continuous Integration) Lösungen. Ich würde so viel wie möglich auf die CI auslagern, sogar den Release; zumindest wenn noch etwas kompiliert werden muss (TypeScript und/oder React), ist so garantiert, dass immer der neuste, sauber kompilierte Code released wird. So arbeitet jede moderne Software Entwicklung!
- Tests die sich nur auf den Adapter code beziehen können in der Test suite ausgeführt werden und der Adapter checker muss das nicht mehr übernehmen.
Der Adapter Checker überprüft doch nur den Inhalt von GitHub, der führt keine Tests aus.
Der Vorteil neben der Vereinfachten Handhabung den ich hier sehe ist die Tatsache das jeder Adapter die Information mit liefert mit welcher nodejs und js-controller version er Kompatibel ist.
Das scheint mir ein etwas verkehrter Schluss: wenn ich die Standard Tests mit allen Umgebungen (OS und Node Matrix) auf GitHub ausführe, weiss ich ja ganz genau, dass mein Adapter überall dort läuft. Und wenn nicht, kann ich das ja entsprechend in der (io-)package.json eintragen.
Soweit meine Gedanken dazu. Das ganze muss nicht unbedingt beim kommenden Meeting besprochen werden, aber ich wollte es mal auf die Agende für die nahe zukunft setzen.
Ich finde die Diskussion wichtig und gut, könnte aber in einem dev Meeting etwas ausufern. Vielleicht ein separates Meeting mit allen, die interessiert sind. Wenn dann eine Entscheidung getroffen wurde, kann man die im dev Meeting kommunizieren.
-
@unclesam sagte in Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30:
Langsam sollten wir uns wohl mal über das
Projekt CHIPunterhalten.Neu heisst die Plattform nun Matter.
-
@unclesam sagte in Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30:
Weshalb? Wenn ein Adapter zB nur ab Node 14 läuft, ist das der Entscheid des Entwicklers. Klar, das muss richtig in der (io-)package.json stehen, aber das war's schon.
Weil dann vor jedem release gegen die Aktuellen vorgaben getestet wird. Und es ist eine unnötige Arbeit vor jedem release zu prüfen was gerade Aktuell ist und was im Testing hinterlegt ist.
Mit dem "das wars schon" machst du es dir doch etwas zu einfach, Nehmen wir alle "das wars schon" Zusammen, haben wir plötzlich für einen release 30(?) Minuten Zusätzliche Arbeit wenn man immer alles durchgeht.@unclesam sagte in Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30:
Der Adapter Checker überprüft doch nur den Inhalt von GitHub, der führt keine Tests aus.
Das mag richtig sein, er prüft aber auch unnötiger weise ob die package files Korrekt sind. Es wäre Sinnvoller diese Tests schon vorher zu machen. Wenn ich einen Adapter ins Beta/Stable bekommen will wird das erst dort geprüft, was Zusätzliche Arbeit für den review Prozess bedeutet.
Davon abgesehen könnten eigentlich alle Überprüfungen die der Checker macht direkt mit GH Actions ausgeführt werden. Das sparrt einen weiteren Schritt.@unclesam sagte in Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30:
Das scheint mir ein etwas verkehrter Schluss: wenn ich die Standard Tests mit allen Umgebungen (OS und Node Matrix) auf GitHub ausführe, weiss ich ja ganz genau, dass mein Adapter überall dort läuft. Und wenn nicht, kann ich das ja entsprechend in der (io-)package.json eintragen.
Wieder ein Zusätzlicher Schritt den ich extra machen muss. Ich versteh nicht wieso ich das selber machen muss wenn das Testing doch das Ergebnis liefert und auch gleich Eintragen kann.
Deine Annahme impliziert auch das jeder Entwickler das immer macht, das glaube ich aber nicht.
Aber die Eigentliche Idee dahinter ist das Explizit erkennbar ist mit welchen Versionen es auf jeden Fall funktioniert. Jetzt ist es so das man es nie wirklich weis weil das nirgendwo angezeigt wird, bestenfalls steht es in der Readme.
Ist die Information hinterlegt kann man sie abrufen und im Admin anzeigen.So wie es zum Beispiel die Foren Software macht:
@unclesam sagte in Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30:
Ja, kann man. Wobei es mir eigentlich oft reicht, wenn ich von GitHub ein "OK" bekomme (klar, wenn ich Tests schreibe, dann teste ich die auch lokal).
Ganz ehrlich da schau ich nicht immer drauf. Das Ergebnis ist für mich nur von belang wenn es einen Fehler gibt und es sich um ein release handelt, genau dann will ich benachrichtigt werden.
@alcalzone sagte in Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30:
Es kommt öfter mal vor, dass ein Adapter nur auf einem OS oder unter einer bestimmten Node-Version nicht funktioniert. Das kannst du offline effektiv fast nicht testen.
Da muss ich dir recht geben.
-
@jey-cee sagte in Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30:
Ich versteh nicht wieso ich das selber machen muss wenn das Testing doch das Ergebnis liefert und auch gleich Eintragen kann.
Aber das Ergebnis reicht eben nicht, weil du es interpretieren musst. @foxriver76 hatte vorhin erst einen Fall, wo in den package Skripten
node_modules/.bin/mocha
statt nurmocha
stand und der Test unter Node 16 fehlgeschlagen ist. Nicht etwa weil es nicht lief, sondern weil das mitgeliefertenpm 7
die Binaries woanders ablegt.Und es ist eine unnötige Arbeit vor jedem release zu prüfen was gerade Aktuell ist und was im Testing hinterlegt ist.
Dann mach's halt nicht vor jedem Release, sondern dann wenn es im Dev-Chat mal wieder heißt: "hey, Node XYZ ist bald LTS" - so ca. jedes 1/2 Jahr.
Davon abgesehen könnten eigentlich alle Überprüfungen die der Checker macht direkt mit GH Actions ausgeführt werden. Das sparrt einen weiteren Schritt.
Stimme ich dir zu - geht grundsätzlich auch. PR welcome: https://github.com/ioBroker/testing/blob/master/src/tests/packageFiles/index.ts
-
@jey-cee said in Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30:
Aber die Eigentliche Idee dahinter ist das Explizit erkennbar ist mit welchen Versionen es auf jeden Fall funktioniert.
Wenn jeder Adapter nur mit einer Node Version sicher Funktioniert hat man aber schnell die Situation, dass man bei 3-4 "akzeptablen" Node Versionen vor dem Problem steht, dass man sich entscheiden muss...?? Das macht es doch nicht besser...
Aktuell sehe ich das so, wenn man das Testing per Github Actions mit der Matrix aus Node-Version und OS ok pflegt (wie @AlCalzone sagt, reicht es da zweimal im Jahr reinzugucken, öfter mache ich das auch nicht), dann kann man davon ausgehen, dass alle Adapter auf allen Node-Versionen laufen außer es steht in einer der Config-Dateien ein requirement von einer anderen Version.
Und das musst du dann ja da als Entwickler auch nur eintragen, wenn deine Tests auf Github nicht mehr durchlaufen und da immer nur eine Version schief geht...Ich muss sagen, dass ich das, insbesondere mit dem relase-script zusammen und automatischen npm build sehr komfortabel finde. Ich mache npm run release -> das kümmert sich um alles und ich bin fertig. Später bekomme ich eine E-mail von NPM, dass ein neues Paket veröffentlicht wurde oder eine E-Mail von Github, dass es Fehler beim Test gab und ich kann ggf. reagieren (PR für stable oder fixen und neu versuchen).
-
@garfonso sagte in Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30:
Ich muss sagen, dass ich das, insbesondere mit dem relase-script zusammen und automatischen npm build sehr komfortabel finde. Ich mache npm run release -> das kümmert sich um alles und ich bin fertig. Später bekomme ich eine E-mail von NPM, dass ein neues Paket veröffentlicht wurde oder eine E-Mail von Github, dass es Fehler beim Test gab und ich kann ggf. reagieren (PR für stable oder fixen und neu versuchen).
My words! Geht mir auch so.
Und wartet auf die (über)nächste Version von iobroker.dev... da habe ich noch ein paar Tools in Planung, die einen Release mit dem Release Skript noch einfacher machen - stay tuned!
-
Moin,
da ich nun auch weiß, dass ich heute Abend wohl dabei sein kann, hätte ich nochmal ein Thema zu Docker. Passt vielleicht in das "woran er gerade arbeitet".
Ich habe vor einiger Zeit aus lauter Faulheit und weil der Docker Container immer "unhealthy" wird wenn ich den js-controller update ein (bisher unglaublich simples) maintenance script eingebaut. Würde euch dazu gerne mal die bisherige Funktion zeigen und mir Feedback abholen ob das eine sinnvolle Automatisierung für die Allgemeinheit ist, oder ob es doch besser undocumented bleiben sollte.
Also vielleicht als Unterpunkt zum ersten Punkt...- Maintenance Script für Docker Container - Ideen und Feedback? (andre)
MfG,
André -
-
@ldittmar sagte in Meeting für ioBroker Core/Dev/Admin 19.05.21 20:30:
Statistik/Analytik-Plattform
Original-Projekt mit Installationsanleitung:
https://github.com/robertsLando/statistics-serverMein Fork mit ergänzten Collections:
https://github.com/zwave-js/statistics-serverScreenshots der Oberfläche:
Code zum Reporten von Statistiken:
https://github.com/zwave-js/node-zwave-js/blob/master/packages/zwave-js/src/lib/telemetry/statistics.ts -
Hallo,
ich melde mich mal hier im Thread, weil ich absolut nicht weiß, wem ich eine PN schreiben soll zu meinem Anliegen.
Vom Titel des Threads vermute ich, dass hier irgendjemand der richtige Ansprechpartner ist.
Gerne würde ich das "Projekt" ioBroker unterstützen.
Meiner Meinung nach ist es immer gut, wenn man Gabenorienorientiert bzw nach seinen Möglichkeiten helfen kann.Ich bin der "Junior" in der elterlichen Druckerei mit angeschlossenen Werbeagentur.
Ich bin der Betriebsleiter im Bereich Druck und Produktion.Deshalb würde ich, wenn Bedarf besteht, gerne mit Druckprodukten jeglicher Art Hilfe anbieten.
Im Moment hab ich keine Ahnung, wo ihr sowas brauchen könntet.
Hoffentlich habt ihr direkt eine gute Idee.Sollte hier keiner Mitlesen, für den es relevant ist, kann es ja ggf. jmd weiterleiten.
-
@david-g Besten Dank für dein Angebot! Selbstverständlich sind wir immer froh um Unterstützung. Ich denke, in diesem Fall wären @Bluefox und @apollon77 die richtigen Ansprechpartner.