FreifunkMD/FFMD-Orga

Rollout-Automatisierung: Firmware-Übersicht

Opened this issue · 9 comments

Wir haben eine Seite, die die unterstützten Modelle und ihre Firmware-Files verlinkt: https://md.freifunk.net/mitmachen/firmware/

Bislang wurde diese Seite immer von Hand gepflegt:

  • Anpassen der Versionsnummern geht per Search/Replace
  • Übernahme des Changelogs (wobei wir hier ein leicht anderes Format haben)
  • Anpassung der Liste unterstützter Firmwares

Gerade der letzte Punkt ist sehr aufwändig. Es wäre schön, wenn wir das automatisieren könnten.

  • Anpassung der Liste unterstützter Firmwares

Gerade der letzte Punkt ist sehr aufwändig. Es wäre schön, wenn wir das automatisieren könnten.

Zu beachten sind hier verschiedene Punkte:

  • Es kommt nicht nur Hardware-Unterstützung für Geräte hinzu, sondern diese fällt z.T. auch wieder weg.
  • Einige Geräte haben nur sysupgrade images, andere nur factory images, wieder andere beides.
  • Einige Geräte gibt es in verschiedenen Hardware-Revisionen, die unterschiedliche Images erfordern, andere Geräte nur in einer Version.

Wo setzt man hier an?

Macht man das basierend auf den Filenames, welche auf firmware.md.freifunk.net liegen?

Darauf und man berücksichtigt ggf. die Infos aus den Release Notes.

Wenn man es richtig machen will, muss die Information eigentlich aus dem Build herausfallen. Ich denke nicht, dass das an einem Nachmittag gemacht ist (oder zweien).

Erster Ansatz könnte sein, die Informationen semi-strukturiert in der site abzulegen. Für Changelogs gibt es schon Pseudostandards (siehe z.B. Debian Changelogs). Daraus kann man dann für die verschiedenen Kanäle die notwendigen Darstellungen erzeugen. Wenn es ein "Master Changelog" mit definierten Formatierungsregeln gibt, lässt sich das per Script prüfen und dann konvertieren, wenn nötig.

Die Firmware-Tabelle müssen wir ggf. zunächst selbst pflegen, langfristig wünsche ich mir da aber tatsächlich einen Automatismus. Wir sollten nicht von Hand ermitteln müssen, was andere Entwickler schon im Gluon kodiert haben. ;)

Könnte aber durchaus ein Thema für Freitag sein.

Michel hatte noch dieses Projekt vorgeschlagen: https://github.com/freifunk-darmstadt/gluon-firmware-selector

<h2 id="changelog">Changelog</h2>
<ul>
<li>0.39: <em>gluon 2016.2.7</em>
<ul>
<li>Added <a href="https://github.com/FreifunkMD/ffmd-packages">ffmd-packages</a> repository to the packages repository. This allows easy integration of custom packages.</li>
</ul></li>
<li>0.38: <em>gluon 2016.2.7</em>
<ul>
<li>see https://gluon.readthedocs.io/en/v2016.1.6/releases/v2016.1.6.html</li>
<li>see https://gluon.readthedocs.io/en/v2016.2/releases/v2016.2.html</li>
<li>see https://gluon.readthedocs.io/en/v2016.2.1/releases/v2016.2.1.html</li>
<li>see https://gluon.readthedocs.io/en/v2016.2.2/releases/v2016.2.2.html</li>
<li>see https://gluon.readthedocs.io/en/v2016.2.3/releases/v2016.2.3.html</li>
<li>see https://gluon.readthedocs.io/en/v2016.2.4/releases/v2016.2.4.html</li>
<li>see https://gluon.readthedocs.io/en/v2016.2.5/releases/v2016.2.5.html</li>
<li>see https://gluon.readthedocs.io/en/v2016.2.6/releases/v2016.2.6.html</li>
<li>see https://gluon.readthedocs.io/en/v2016.2.7/releases/v2016.2.7.html</li>
<li>Added option for multithreading to build.sh</li>
<li>Added signing keys for Stefan Haun, Johann Wagner, and Franz Kuntke</li>
<li>Removed signing keys of Andreas, and Bastinat0r</li>
</ul></li>
</ul>

Wenn man den Changelog aus der README.md in ein CHANGELOG.md, dann fällt da sogar annehmbares HTML raus.
pandoc -o CHANGELOG.html CHANGELOG.md tut hier wahre Wunder.

Wie soll die Integration auf der Webseite an der Stelle dort funktionieren?

Wir könnten ein Script haben, das sich die notwendigen Informationen zusammensucht und den Webseiten-Content generiert. Über die RPC-Schnittstelle vom Wordpress kann man das dann auch automatisch ausführen, wenn wir ein Rollout machen.

Ich schreibe für Gluon ein Ticket, um eine Diskussion zum Hinterlegen der Informationen zu Router-Modell und Hardware-Revision anzuregen. Ziel ist, die Informationen nicht nur im Dateinamen des Images zu kodieren, sondern auch für ein UI verwertbar abzulegen.