NEWS
Frage zur Veröffentlichung von Adapter Updates
-
Hallo Devs,
habe vor einiger Zeit mal den Adapter powerfox2 erstellt.
Nun habe ich den Code angepasst, habe aber leider keinen "Königsweg" zur Aktualisierung/Veröffentlichung des Adapters gefunden.
Habe diverse Dokus gelesen, die sind aber teilweise schwer verständlich und auch der Zusammenhang warum Github und/oder npm erschließt sich mir nicht so recht.
Meine Entwicklungsumgebung:
Betriebssystem: Windows 10 Pro
Adapterpfad: C:\iobroker\node_modules\ioBroker.powerfox2
Habe das Script @alcalzone/release-script mit eingebunden
Adaptercode angepasst und Readme gepflegt.Wer kann mir folgende Fragen beantworten:
- auf welchen Platformen (github und/oder npm) müssen die geänderten Daten hin?
- in welcher Reihenfolge (erst github oder npm) muss das erfolgen?
- mit welchen Befehlen in der Kommandozeile und in welchen Pfaden/Verzeichnissen muss was erfolgen?
- danach Anpassung der Dateien sources-dist-stable.json und/oder sources-dist.json in einem Fork von https://github.com/ioBroker/ioBroker.repositories durchführen und PullRequest durchführen
Freue mich auf Eure Rückmeldungen
Gruß
AxLED
-
Hallo AxLED,
Du hast zwischenzeitlich (oder schon vorher) einen PR für die Aktualisierung der Release auf stable erstellt. Dabei hast du schon mal alles richtig gemacht. Was konkret n och zu tun ist, hab ich dir im PR zusammengestellt:
https://github.com/ioBroker/ioBroker.repositories/pull/2946
Ich gehe aber hier gern auf deine Fragen ein:
- auf welchen Platformen (github und/oder npm) müssen die geänderten Daten hin?
Der Sourcecode von Adaptern wird auf Github verwaltet. Dort hats du ja jetzt schon ein Repository mit deinem Code. Dieses clonst du auf deinen Entwicklungsrechner, änderts und testest was notwendig ist und committest die Änderungen auf Github. Aber da der Adapter nicht neu ist, nehme ich mal an, dass dir das bekannt ist.
Auf npm kommt dann eine fertige Release. Dies erfolgt nach dem Erstellen einer Release - am einfachsten mit dem Releasescript dass du ja eh im Adapter eingebunden hast. Anschließend kannst du die Release mittels npm deploy auf npm hochladen oder noch einfacher den in den Workflow integrierten releasemachanismus verwenden. Dazu musst du in test-and-release.yml den entsprechenden Abschnitt entkommentieren.
- in welcher Reihenfolge (erst github oder npm) muss das erfolgen?
Sourcen auf github, fertiges release auf npm. In der Reihenfolge.
- mit welchen Befehlen in der Kommandozeile und in welchen Pfaden/Verzeichnissen muss was erfolgen?
Dies sprengt jetzt ein wenig meine Zeit. Ich erlaube mir aber zu fragen wie der derzeitige Adapterstand auf Github bzw. npm gekommen ist? Prinzipiell hängt die Befehle stark davon ab welche Entwicklungsplatform (Linux, Windows, Mac) und welche Werkzeuge (z.B. Webstorm, vs-code) du verwendest.
-) danach Anpassung der Dateien sources-dist-stable.json und/oder sources-dist.json in einem Fork von https://github.com/ioBroker/ioBroker.repositories durchführen und PullRequest durchführen
Nein,
Der Adapter ist ja bereits im latest repository. Daher brauchst du an sources-dist.json gar nichts mehr zu tun. Für ein Release ins stable repository muss nur die Versio n in sources-dist-stable.json angepasst werden. Das geht am einfachsten und am sichersten vie www.iobroker.dev. Dort deinen Adapter auswählen und auf Releases gehen. Bei gewünschter Version set as stable anklicken. Alternativ kann die Version direkt auf der Github Webseite in sources-dist-stabel.json geändertw erden, github erstellt dann einen PR für dich.Hoff ich habe ein paar Fragen beantworten können.
Wenn du bezüglich Werkzeuge Grundsatzfragen hats hoffe ich dass andere dir hier helfen können oder meld ich bei unserer adapter development starters Telegramm Gruppe an.
Links gibt auf www.iobroker.dev.Mcm1957
-
@mcm57 sagte in Frage zur Veröffentlichung von Adapter Updates:
www.iobroker.dev
-
Ich habe den kompletten Prozess mal für einen Adapter dokumentiert. ALLES und jedes Detail ist natürlich nicht enthalten, aber eventuell ein guter Überblick für Dich:
https://www.youtube.com/watch?v=A9UETXyAmL4
Ganz am Ende siehst Du,
- wie das release-script angestoßen wird
- dieses erstellt ein neues Tag und pusht die Änderungen ins Repo
- das neue Tag stößt den GitHub Workflow
test-and-release
an und erstellt z.B. ein Release für GitHub - Damit wird (wenn NPM secret usw. richtig im Repository konfiguriert ist) automatisch die Version zusammengepackt und auf npm gestellt.
-
Wie im PR geschrieben werde ich dir voraussichtlich morgen einen PR schicken der die notwendigen Anpassungen am test-and-and release workflow vornimmt (wegen node 12-> 16 bis 20). Ich werd da auch den automatischen deploy auf npm aktivieren sodass du dann nur mehr dein Secret hinterlegen musst.
@haus-automatisierung
DANKE für den Link -
@mcm57
@haus-automatisierungdanke für die vielen Antworten und den Link zum Video, dann versuche ich diese mal zusammenzufassen, wie ich diese verstanden habe.
Das Portal https://www.iobroker.dev ist mir neu, sieht aber vielversprechend aus.
- Anpassung Code in der eigenen Entwicklungsumgebung (bei mir Win10 mit Visual Studio Code)
- Upload Code in sein eigenes github repository mittels folgender Befehle (im Arbeitsverzeichnis des Adapters ausführen, in meinem Fall: C:\iobroker\node_modules\ioBroker.powerfox2)
git add .
git status
git commit -m "changes"
npm test
git push origin main
- (Alternativ upload zu Github mittels Quellcodeverwaltung in Visual Studio Code)
- ggfls. von weiteren Usern testen lassen
Ab hier ist es mir noch nicht ganz klar wie es weitergeht:
- wie geht es korrekterweise weiter oder gibt es mehrere Wege?
- im Portal Portal https://www.iobroker.dev den Adapter Check ausführen?
- Angezeigte Fehler im Code beheben und neu auf github hochladen und Adapter Check ausführen (diesen Schritt ggfls. wiederholen bis alles passt)
- auf npm veröffentlichen mit
npm run release
- Versionsnummer des geänderten Adapters in sources-dist-stable.json in einem Fork von https://github.com/ioBroker/ioBroker.repositories durchführen und PullRequest durchführen
- welchen der "unklaren" Schritte/Reihenfolge könnne alternativ über https://www.iobroker.dev erfolgen?
Gruß
AxLED
-
@axled sagte in Frage zur Veröffentlichung von Adapter Updates:
Es gibt mehrere Wege. Deiner ist soweit ok. Es ist aber
npm run test
Bevor du eine PR für stable machst, lassen den Adapter mal etwas testen, ne Woche oder so.
-
AxLED
Zuerst mal eine Frage: Benutzt du Telegram? Interaktive Hilfe bei konkreten Schritten kann dort leichter und schneller erfolgen da 90% der Entwickelr dort mitlesen. Discord ist auch OK (da mit Telegramm synchronisiert) ur kann ich dir dort beim Einstieg nicht helfen.
Zu deinem Ablauf:
- Anpassung Code in der eigenen Entwicklungsumgebung (bei mir Win10 mit Visual Studio Code)
Richtig, Ich benutze ebenfalls VS Code unter Win 10.
- Upload Code in sein eigenes github repository mittels folgender Befehle (im Arbeitsverzeichnis des Adapters ausführen, in meinem Fall: C:\iobroker\node_modules\ioBroker.powerfox2)
git add .
git status
git commit -m "changes"
npm test
git push origin main
(Alternativ upload zu Github mittels Quellcodeverwaltung in Visual Studio Code)
ggfls. von weiteren Usern testen lassen
Teilweise richtig
Du kannst mit npm run test alles testen bevor du irgendwas committest. Die Tests laufen ja lokal.
Bezüglich Upload zu Github verwende ich den Github Desktop: https://desktop.github.com/
Ich empfinde ihn angenehmer als die vs Integration - aber das ist wie bei den meisten Dev-Tools Geschmacksache. Schau ihn dir einfach mal an. Die Commandline ist für 0815 Dinge nicht meine Erste Wahl. Sie zu kennen ist aber seht gut.Ab hier ist es mir noch nicht ganz klar wie es weitergeht:
wie geht es korrekterweise weiter oder gibt es mehrere Wege?im Portal Portal https://www.iobroker.dev den Adapter Check ausführen?
Angezeigte Fehler im Code beheben und neu auf github hochladen und Adapter Check ausführen (diesen Schritt ggfls. wiederholen bis alles passt)Ja das ist ein guter Zeitpunkt das mal zu tun
auf npm veröffentlichen mit npm run release
Dieser Befehl legt eine neue Release an. Das bedeutet, dass in diverse Files (package.json, io-package.json) die neue Versionsnummer eingetragen wird, releasenotes aktualisisert werden etc.
Technisch werden die Änderungen dann auf Github kopiert und dort getagged. Der commit und das Taggen lösen den Github Workflow test-and-release aus. Ist dieser erfolgreich veröffentlicht er das Package (die neue Release) auch gleich auf npm.
Sobald die Release auf npm veröffentlicht wurde wird diese binnen 24h im LATEST Repository zur Installation angeboten. Sinnvoller Weise eröffnest oder aktualisiserst du nun einen Thread im TESTER Bereich hier im Forum https://forum.iobroker.net/category/91/tester. (Falls du dort nicht posten darfs schreib hier z,B. Homoran an dass er dich freischaltet). Damit infirmierst du potenziell Testinterissierte dass es da was neues gibt.
Nach frühestens eienr Woche kannst du dann die Adapterrelease in Stable veröffentlichen lassen sofern beim test im Latest keine ernsten Probleme entdeckt wurden. (Ausnahmen für Feuer-Hot-Fixes sind möglich, das sprengt aber hier den Rahmen. Gib einfach Bescheid, wenn du galubst dass das notwendig wäre.) Nach 14 bis 30 Tagen bekommst du ein ErinnerungsIssue im Repository falls du auf stable vergisst.
Versionsnummer des geänderten Adapters in sources-dist-stable.json in einem Fork von https://github.com/ioBroker/ioBroker.repositories durchführen und PullRequest durchführen
Zur Veröffentlichung in Stable am besten https://www.iobroker.dev verwenden. Alternativ direkt in Github auf der Webseite editieren (2te Wahl).
Warum: ioborker.dev prüft gleich mal die wichtigsten Dinge und vor allem stellt es sicher, dass der PR technisch i.O. ist. Vergessene Strichpunkte und verlorene Zeichen gibts da nicht. Und bei einem Fork kriegt der PR öfter mal ältere commits mehr mit was mir im günstigsten Fall nur mehr Arbeit beim Checken macht - im Extremfall aber Nebenwirkungen hatwelchen der "unklaren" Schritte/Reihenfolge könnne alternativ über https://www.iobroker.dev erfolgen?
siehe oben
P.S. PR mit Update der Testumgebung ist in Arbeit
-
Ich habe jetzt mal ein paar PRs für dich erstellt:
https://github.com/Ax-LED/ioBroker.powerfox2/pull/9
Der PR aktualisiert die testumgebung auf aktuellen Stand.
https://github.com/Ax-LED/ioBroker.powerfox2/pull/11
Der PR aktualisiert das Releasescript auf aktuellen Stand
https://github.com/Ax-LED/ioBroker.powerfox2/pull/12
Der PR aktiviert dependabot. Dependabot hilft dir deine Abhängigkeiten auf akteullem Stand zu halten und erstellt automatisch PRs für den Update. Da du "ein wenig" veraltete Abhängigkeiten hast, kann es sein, dass da nach dem Update einige PRs erscheinen. Schau sie dir an und merge sie. Nachher solltes du unbedingt den Adapter neiu testen um allfällige Inkompatibiltäten zu entdecken (und zu beheben). Bitte beachte auch dass es sinnvoll ist VOR dem merge des PRs das im PR angegebene Token in Github einzutragen damit Patchänderungen (= kleine Änderungen) automatisch gemerged werden können.
Ich zieh mich dann mal aus dem Adapter einw enig zurück. Meld dich wenn du Hilfe brauchst (vorzugsweise auf Telegramm abder gerne auch hier). Bin sicher dass du Hilfe bekommsgt wenn du sie brauchst.
UND NOCHMALS DANKE für den Adapter und dass du deine Zeit dafür aufwendest !
-
@mcm57 Danke auch Dich, für Deine unermüdliche Arbeit in allen Adaptern
-
Disen Beitrag mal als Link für den Github PR. Inhalt folgt gleich
-
Sodala - hier ist der besserer Platz für ausführlichere Diskussionen. PRs / Issues sind da nur zweite Wahl.
Du schriebst in https://github.com/ioBroker/ioBroker.repositories/pull/2946#issuecomment-1816273341
i could merge 2 of the 3 PR in https://github.com/Ax-LED/ioBroker.powerfox2/pulls, the 3rd one shows an error Ax-LED/ioBroker.powerfox2#11.
The 2 merged PR produced some more PRs in my repo, also with error.
I dont know how to move forward.
AxLEDDie Ursache des Merge Konflikts war, dass ich nicht beachtet habe, dasss ich den zweiten PR auf Basis des IST Standes erstellt habe und nicht auf Basis meines ersten PRs. Sorry.
@ticaki hat dir dazu schon geschrieben (DANKE) wie man auf Github mit Merge Konflikten umgeht und diese Beheben kann.These are merge conflicts, the update of Axios has changed your package.json and therefore git cannot merge them without help.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github
If your conflict is too complex for Github and you need to continue on the command line, please ask again.
The 2 merged PR produced some more PRs in my repo, also with error.
u can merge them. Error comes from missing token for auto merge.
other thing: its near impossible that the native change of io-package.json break ur adapter.DANKE Tim.
Da das manulle Beheben eine Merge-Konflikts in package-lock (fast) unmöglich ist, hab ich einen neuen PR erstellt. Generell ist was wohl am besten bei einem Merge Konflikt in package-lock.json "irgendwas" zu committen und anschließen auf dem eigenen Rechner das File neu zu erstellen (= Löchen + mit npm i neu bauen).
Zu den zahlreichen anderen PRs mit roten X.
Wie @ticaki dir schonr ichtig mitgeteilt hat, die kommen davon dass dur nicht wie im PR geschrieben ein AUTOMERGE_TOKEN angelegt hats.
https://github.com/Ax-LED/ioBroker.powerfox2/pull/12This PR activates dependabot. Dependabot creates update PRs to help keeping your dependencies up to date, paatch (and development minor) upodates will be merged automaticall, other PRs miust be reviewed and merged by you. To use automrge the following must be done: # In order to use this, you need to go to https://github.com/settings/tokens and # create a Personal Access Token with the permission "public_repo". # Enter this token in your repository settings under "Secrets" and name it AUTO_MERGE_TOKEN
Sofern sie keine Merge Konflikte haben, kannst du sie manuell mergen. Um dein Token zu testen, kannst du aber auch in jeden PR als Kommentar posten "@dependebot recreate".
Der Einzrag @dependabot recreate" veranlasst dependabot den PR neu zu erstellen. Dann sollten die Actions neu anlaufen und wenn das Token passt dann sollte der PR gemerged werden.Ich würde dir auch Testgründen den zweiten Weg raten.
Bitte beachte, dass sich die PRs gegenseitig beeinflussen. Du solltes als erstes (!) den releasescript PR mergen. Dann kann dependabot seine PRs ggF anpassen.
Mcm1957
-
Und nochmal die Frage:
Telegramm?
Discord?Wär halt interaktiver als hier das Forum für solche Fälle...
-
@mcm57
@ticakidanke für eure unermüdliche Hilfe. Austausch gerne über discord.
Schaue mir jetzt mal die ganzen ToDos in euren Anmerkungen an und versuche diese umzusetzen.Gruß
AxLED