Mit dem Fernziel von Continuous Integration habe ich ein Docker-Image erstellt. Momentan stellt es lediglich eine konsistente Build-Umgebung bereit. In Zukunft möchte ich es aber gerne, am liebsten mit eurer Hilfe, erweitern, sodass es für interessierte Freifunker einfacher wird, selbst Images für ihre Community zu bauen.
Ich freue mich auf eure Anregungen, Vorschläge und Pull-Requests!
Update:
Ich habe mit meinen noch rudimentären Bashkenntnissen ein Skript erstellt, mit dem Gluon nun auf jedem Linuxhost gebaut werden kann, ohne, dass man sich um Abhängigkeiten kümmern muss.
Die einzelnen Parameter sind:
-b
, optional: Setzt BROKEN=1, damit wird die Firmware auch für Geräte kompiliert, die den Status BROKEN haben.
*-d
, optional: Führt vor dem Kompilieren einen Dirclean durch. Kann bei einem Wechsel des Gluon-Releases nötig sein.
*-r <Gluon-Release>
: Setzt das Gluon-Release, z. B. 2017.1.5.-t <Gluon-Target>
: Setzt das Gluon-Target, z. B. ar71xx-generic.-v <Gluon-Version>
, optional: Setzt die Gluon-Version, die selbst frei festgelegt werden kann, z. B. 1.2.0.-l <Lede-Pfad>
, optional: Gibt den Pfad zum Lede-Verzeichnis an, in welchem die während des Kompilieren entstehenden Daten abgelegt werden. Eine Wiederverwendung beschleunigt das Kompilieren bereits zuvor kompilierter Targets erheblich. Standardpfad:lede
im aktuellen Verzeichis-o <Output-Pfad>
, optional: Gibt den Pfad zum output-Verzeichnis an, in welchem die kompilierten Firmwareimages abgelegt werden. Standardpfad:output
im aktuellen Verzeichnis.-s <Site-Git-URL>
: URL zum Git-Repository dersite
.-z <Site-Branch>
, optional: Hier kann, falls nötig, der passende Git-Branch zursite
angegeben werden. Standardwert:master
.-j <Jobanzahl>
, optional: Legt die Anzahl der make-Jobs fest. Standardwert: Anzahl der Threads der CPU.
Als Beispiel ein Aufruf, mit dem ich eine aktuelle Firmware für meinen Knoten gebaut habe:
sudo bash build.sh -g v2017.1.x -r v2017.1.x -v 1.3.3.7 -l lede -s https://github.com/FreiFunkMuenster/site-ffms.git -z Domäne-46 -t ar71xx-tiny
Ich bin mit bash-Skripten noch nicht wirklich vertraut, weshalb es evtl. noch Bugs gibt und man das ein oder andere wahrscheinlich eleganter lösen kann. Wenn euch diezbezüglich etwas auffällt, dann meldet euch bzw. erstellt einen Pull-Request