Hallo alle miteinander,
die Pflege meines Affenbox-Forks stellt mich immer wieder vor ein paar zeitlichen Herausforderungen.
Das Testen meiner Änderungen und Pull Request auf Git Hub ist oft zeitaufwändiger als das Programmieren. Grund sind die vielen Varianten und Ergänzungen die man Konfigurieren könnte.
Parallel möchte ich mich beruflich auch in Softwareprojekten versuchen.
Hier passiert nun die Verbindung.
Genau diese Themen sind bei uns gerade sehr heiß. Stichworte wie DevOps, CI/CD, Docker, Kubernetes sind zwar nichts Neues im Allgemeinen, allerdings wird in unserem Bereich Software immer wichtiger als Hardware und diese Themen sind wichtig wenn es um die Qualität der Softwareentwicklung und des Endproduktes geht.
Ja und was hat das jetzt mit TonUINO und meinem Forks zu tun?
Ich habe einen selbst gehosteten Jenkins Server aufgesetzt und mit einem Build- und Testknoten versehen und das ganze in meinem Repository Integriert.
Wenn ihr oder ich eine Änderung in Form eines Pull Requests oder eines Push hochladen, bekommt mein Server eine Meldung und baut automatisch die Software in den gängigen Konfigurationen(3/5 Buttons, Analoge Taster, IR,…) und für die beiden Plattformen (AiO, Arduino Nano).
Eine Rückmeldung bekommt ihr dann auf GitHub, sobald der Build abgeschlossen wurde.
Ein kleiner grüner Haken markiert das alles i.O. ist:
In der Übersicht der Pull Requests:
Im Pull Request ist es dann auch nochmal dargestellt:
Was steckt dahinter?
Die verwendete Software ist Jenkins und PlatformIO CLI
Als Hardware verwende ich Raspberry Pis (2x Pi 4 & 1x Pi Zero 2), die ich in einem selbst gedruckten 6" Rack unterbringe:
Der Aufbau steckt noch etwas in der Entwicklungsphase. Es fehlt noch ein Test-TonUINO, der autmoatisiert per Script bedient werden kann.
Das ist aber erst der Anfang!
Ich plane noch folgende Ergänzungen:
- Einsicht der Testprotokolle für jeden
- Aufbau eines kompletten HW Test mit einem angeschlossenen TonUINO am Rack
- Test der SW ohne HW über eine AVR Simulation (SimulAVR) auf einem Pi
- Auslagern der Builds und Tests in Docker Container
- Skalierung der Container über Kubernetes um alle Varianten parallel testen zu können, das wird aber wahrscheinlich potentere HW voraussetzen