Skip to content

site ffka und BuildBot

chris1911 edited this page Dec 14, 2016 · 7 revisions

Dieses Repository enthält neben dem master noch persönliche Branches und optional Feature-Branches, die neue Funktionalitäten für den master vorbereiten. Sämtliche Änderungen fließen im master zusammen. Der Entwicklungsstand sowohl im master als auch den anderen Branches wird mit Tags festgehalten.

Daher wird all jenen, die die site.config nur verwenden möchten, nahegelegt, das letzte stable-Tag auszuchecken und zum Bauen der Freifunk-Firmware verwenden.

Beispielsweise erstellt folgender Befehl den lokalen Branch 0.2.90-stable.1 anhand des Tags tags/0.2.90-stable.1:
git checkout -b 0.2.90-stable.1 tags/0.2.90-stable.1.


Zusammengefasst:

site-ffka:

  • Offiziell: master
  • Inoffiziell: persönliche Branches
  • Tags: offizielle und inoffizielle

Jenkins-VM:

  • Jenkins als CI für Pull Requests (Todo)
    Idee: Jenkins startet einen Build, sobald ein Pull-Request gestellt wird.
  • Als BuildBot:
    Jenkins überwacht site-ffka und baut die Firmware auf Basis neuer Tags.
    Die Build-Artefakte (FF-Firmware + kernel-module) werden auf dem Firmware-Webserver abgelegt, sodass der openwrt-Paketmanager opkg diese nutzen kann.
    Eine Anpassung der Pfade des Autoupdaters findet NICHT automatisiert statt.

Verteilen der Firmware:

  • Die bisherige Firmware-Struktur <webroot>/firmware/{experimental,beta,stable}<Datum>/modules/<GLUON_RELEASE>/ ist leider nicht haltbar, da in der gluon site.conf kein Pattern für GLUON_BRANCH existiert und dadurch die davon abhängige URL für das opkg-Repository nicht erstellt werden kann.
    Somit liegen die Build-Artefakte benannt nach GLUON_RELEASE zukünftig parallel zueinander, beispielsweise so:
    /images/0.2.99-beta.1-20161130/{factory,sysupgrade,modules}/...
    /images/0.2.90-stable.2-20161025/{factory,sysupgrade,modules}/...
    /images/0.2.90-stable.1-20161024/{factory,sysupgrade,modules}/...
    /images/0.2.107-experimental.1-20161027/{factory,sysupgrade,modules}/...
    /images/rgr-0.2.97-beta.1-20161029/{factory,sysupgrade,modules}/...
    /images/twi-0.2.99-beta.1-20161028/{factory,sysupgrade,modules}/...
    /images/chris-0.2.97-kmod-usbnet.1-20160914/{factory,sysupgrade,modules}/...
    /images/stable -> /images/0.2.90-stable.2-20161025
  • Die Autoupdater-Pfade verweisen weiterhin auf
    /images/experimental,
    /images/beta bzw.
    /images/stable.
    Diese Pfade stellen Symlinks auf die aktuellen Versionen dar und werden nach ausreichenden Firmware-Tests von Hand umgestellt.
  • Die Firmware-Version kann mit Benutzerkürzeln beginnen, was dazu führt, dass der Autoupdater diese inoffizielle Firmware nicht mit der nächsten Stable-Version überschreibt.
  • Durch Anpassung der Autoupdater-Pfade ist es theoretisch möglich, die Firmware der persönlichen Branches ebenfalls über den Autoupdater zu aktualisieren.

Voraussetzungen:

  • Die Tags in diesem Repository müssen nach folgendem Schema erstellt werden und dürfen keine Leer- oder Sonderzeichen enthalten:
    [Benutzerkürzel-]<Version>-<GLUON_BRANCH>-[Featuretext-].[Fortlaufender Zähler]
    <Version> darf nun kein v-Präfix mehr haben.

    Beispiele:
    TAGNAME1=chris-0.2.90-beta-kmod-usbnet.0
    TAGNAME2=0.2.90-stable.1
    TAGNAME3=0.2.93-experimental.7

    Aus dem Tag bestimmt der Buildbot die Variable GLUON_RELEASE, die in der Url für das opkg-Repository aber auch für den Autoupdater bei der Versionsprüfung verwendet wird, nach folgendem Schema:
    GLUON_RELEASE=<TAGNAME>-<YYYYMMDD>
    Der fortlaufende Zähler zeigt den Entwicklungsfortschritt, der durch den Buildbot hinzugefügte Datumsstempel das Alter der Firmware an. Die URL zum Webserver sieht dann wie folgt aus:
    http://firmware.karlsruhe.freifunk.net/images/<GLUON_RELEASE>/{images,modules}/...

    Ebenso wird GLUON_BRANCH automatisch anhand des Tagnamen ermittelt. Daher dürfen die Schlüsselwörter experimental, beta bzw. stable nur einzeln vorkommen. Desweiteren ist das alte Schlüsselwort exp für experimental nicht mehr gültig.

  • Die Jenkins-Jobs dürfen keine Abhängigkeiten zu weiteren Scripten, Dateien, etc. in site-ffka oder gluon haben. Stattdessen sollen benötigte Funktionen in die Jobs integriert werden.


Transitionstabelle der Branches zu Tags:

  • experimental -> 0.2.43-experimental.1
  • beta -> 0.2.50-beta.1
  • gluon-master -> 0.2.3-experimental.1
  • gluon-2016.1 -> 0.2.70-experimental.1
  • gluon-2016.1.4 -> 0.2.75-stable.1
  • gluon-2016.1.6 -> 0.2.81-beta.1
  • gluon-2016.2 -> 0.2.91-beta.1
  • gluon-2016.2.1 -> 0.2.99-beta.1

Branch-Umbenennungen:

  • l2tp-turbo-experimental -> herrbett-0.2.71-l2tp
Clone this wiki locally