Gluon
Gluon ist bei Freifunk Stuttgart die Basis für die Software, die auf Nodes läuft.
Update-Kanaele
Der Autoupdater unterstuetzt verschiedene Kanaele fuer Updates. Welcher Kanal genutzt werden soll, kann im Config Mode eingestellt werden.
Es gibt derzeit die folgenden Kanaele:
- stable: die neuste stabile Version. Diese Version wurde ausfuehrlich getestet und wird fuer pflegeleichte Installationen empfohlen.
- beta: hier gibt es eine etwas aktuellere Version. Sie wurde auch getestet, aber moeglicherweise nicht auf so vielen Geraeten wie die stabile Version. In der Regel sollte hier nichts kaputt gehen, aber es kann vielleicht mal zu kleineren Problemen kommen.
- nightly: die aktuelle Entwicklungsversion. Wenn du diese Version verwendest, solltest du wissen wie du einen gebrickten Router wiederherstellen kannst.
- experimental: eine experimentelle Entwicklungsversion. Immer wenn wir etwas groesseres Umstellen, veroeffentlichen wir zunaechst eine experimentelle Version. Sie kann mit unserem derzeitigen Netz inkompatibel sein. Du solltest auch hier wissen, wie du einen gebrickten Router wiederherstellen kannst.
Builds
Gebaut wird die Firmware automatisch mit Gitlab.
Eine Firmware-Version kann ohne erneut zu bauen in einen anderen Release-Kanal geschoben werden. Daher werden bei jedem Build Manifests fuer alle Update-Kanaele erzeugt.
Signatur
Beim Build wird eine Firmware-Version automatisch mit dem Schluessel von Gitlab signiert, wenn sie von einem protected Branch gebaut wurde. Das ermoeglicht es, den Build direkt auf nightly oder experimental zu veroeffentlichten.
Versionsnummern
Die Versionsnummern unserer Firmware sind wie folgt aufgebaut:
v<major-version>.<minor-version>+<build-datum>-g.<commit hash gluon>-s.<commit hash gluon site>
Wobei:
major-version
: die Version des Haupt-Releases. Wir nur selten erhoeht.minor-version
: die Minor-Version.build-datum
: das Build-Datum in der FormYYYY-MM-DD
commit hash gluon
: Commit Hash des [Gluon-Repo](https://gitlab.freifunk-stuttgart.de/firmware/gluon)commit hash gluon site
: Commit Hash des [Site-Config-Repo](https://gitlab.freifunk-stuttgart.de/firmware/site-ffs)
Branches
Es gibt fuer jede Minor-Version einen Branch in [site-ffs](https://gitlab.freifunk-stuttgart.de/firmware/site-ffs). Die Existenz des Branches bedeutet nicht, dass die Firmware released oder getestet wurde.
Tags
Fuer jede Veroeffentlichung auf einem Kanal soll ein Tag erstellt werden. Er soll wie folgt formatiert sein:
<versionsnummer>-<build datum>
Wobei:
versionsnummer
: der Name des Branches, von dem gebaut wurdebuilddatum
: Das Datum des Builds
Automatisches Gluon-Update
Auf dem Branch der jeweils neusten Entwicklungsversion (d.h. die aus der der nightly-Branch entsteht) wird automatisch jeden Donnerstag geprueft, ob es eine neuere Gluon-Mimor-Version gibt. Falls ja, wird automatisch upgedated. Diese Firmware-Version wird automatisch auf dem `nighly`-Kanal veroeffentlicht.
Es wird immer nur auf die neuste Minor-Version upgegraded. Benutzen wir aktuell Gluon v2019.1 und erscheint Gluon v2019.1.1, wird auf diese Version upgedated. Erscheint v2019.2, wird kein Upgrade durchgefuehrt.
Die Pipeline: https://gitlab.freifunk-stuttgart.de/firmware/ffs-pipeline-nightly
Firmware veröffentlichen
Es gibt zwei Varianten:
- Sofortige Veröffentlichung, eignet sich nur für beta, nightly etc. Dabei gibt es keinen gestaffelten Rollout.
- Gestaffelte Rollout, für die stabile Firmware rollen wir die Firmware Segmentweise aus, um eventuelle Probleme frühzeitig zu finden
Sofortige Veröffentlichung
Dieses Vorgehen rollt die Firmware auf einmal im ganzen Netz aus! Bitte nur für beta, nightly oder experimental verwenden! Nicht für stable verwenden!
- sicherstellen, dass die Firmware bereits auf dem Firmwareserver unter
/home/www/html/firmware/gluon/archive
liegt.- falls nicht, mit
/home/www/ffs-firmware-downloader/download-nightly.sh
herunterladen
- sicherstellen, dass das Manifest des entsprechenden Release-Kanals die Mindestanzahl Signaturen enthält (stable 2, sonst 1)
- unter
/home/www/html/firmware/gluon
einen eventuell vorhandenen.old
symlink löschen, bspw so:rm /home/www/html/firmware/gluon/beta.old
- den alten symlink nach
.old
umbenennen:mv /home/www/html/firmware/gluon/beta /home/www/html/firmware/gluon/beta.old
- einen Symlink mit dem Namen des release-Kanals auf die entsprechende Version anlegen, bspw so:
ln -s /home/www/html/firmware/gluon/archive/3.1+2024-07-08-g.1a770db5-s.54a31d0/images /home/www/html/firmware/gluon/beta
Gestaffelte Veröffentlichung
- sicherstellen, dass die Firmware bereits auf dem Firmwareserver unter
/home/www/html/firmware/gluon/archive
liegt.- falls nicht, mit
/home/www/ffs-firmware-downloader/download-nightly.sh
herunterladen
- sicherstellen, dass das Manifest des entsprechenden Release-Kanals die Mindestanzahl Signaturen enthält (stable 2, sonst 1)
- als root die
/etc/nginx/sites-enabled/default
bearbeiten- in
geo $serve_oldstable
default
auf0
fd21:b4dc:4b00::/40
auf1
- unter
/home/www/html/firmware/gluon
einen eventuell vorhandenen.old
symlink löschen, bspw so:rm /home/www/html/firmware/gluon/beta.old
- den alten symlink nach
.old
umbenennen:mv /home/www/html/firmware/gluon/beta /home/www/html/firmware/gluon/beta.old
- einen Symlink mit dem Namen des release-Kanals auf die entsprechende Version anlegen, bspw so:
ln -s /home/www/html/firmware/gluon/archive/3.1+2024-07-08-g.1a770db5-s.54a31d0/images /home/www/html/firmware/gluon/beta