ifm electronics verwendete mehrere verteilte Jenkins-Instanzen, um verschiedene CI-Pipelines auszuführen, die ihre interne Yocto-Toolchain aufbauten und die resultierenden Artefakte direkt auf dem Jenkins-Server zur Speicherung ablegten.
Mit zunehmder Anzahl resultierender Artefakte wurde schnell ein potentieller Bottleneck für die Zukunft identifiziert, was die Infrastrukturanforderungen des Kunden betrifft, wodurch die IT-Abteilung in die Situation geriet eine sinnvolle, schnell umsetzbare, sowie zukunftssichere und robuste Lösung zu finden.
Team Parallax konzipierte und implementierte einen Jenkins-Orchestrator, der mit Docker Jenkins-Agenten auf dedizierten Build-Nodes spawnt. Die, in der Jenkins Pipeline, generierten Artefakte werden in MinIO (Bucket Storage auf Basis von S3) gespeichert. Bestehende Artefakte wurden mit Hilfe einer von uns geschriebenen idempotenten Skriptlösung migriert, die alle Artefakte detektiert, extrahiert, in den S3-Speicher hochlädt, und die Information in den jeweiligen Jenkins-Jobs aktualisiert.
Alte Build-Agenten wurden dockerisiert und mehrere Instanzen können jetzt parallel laufen, wodurch die insgesamt verwendete Hardware auf ein Minimum reduziert werden konnte.
Die Entwicklungsabteilung der ifm electronics verfügt nun über eine modulare, reproduzierbare, und leicht austauschbare Jenkins-Struktur, die einfach zu aktualisieren und zu skalieren ist. Die Artefakte liegen nun zentral an einem Ablageort und können von dort einfacher (Teil-)automatisiert verwaltet werden.
Der bereitgestellte Code, sowie die deklarativen Infrastruktur-Definitionen (Dockerfiles, Skripte, etc.) wurden als Teil der Entwicklung in ifm eigenen Git-Repositories abgelegt und ausführlich dokumentiert. Die Jenkins-Build-Agents können jederzeit über die bereitgestellten GitLab CI Pipelines neu erstellt werden.
Nach Abschluss des Projekts hat Team Parallax weitere Projektanfragen von unterschiedlichen ifm-Entwicklungsteams erhalten.
Die Rolle von Team Parallax bestand hier zunächst darin, eine Ist-Soll-Analyse der Situation durchzuführen, eine neue Lösung im Sinne der Anforderungen zu konzipieren, und diese letztendlich zu implementieren, sodass eine Migration der bestehenden Jenkinsinstanzen im Nachgang, außerhalb des Regelbetriebs, ohne Zwischenfälle durchgeführt werden konnte. Durch eine sehr gute und transparente Kommunikation auf beiden Seiten, unterstützt durch wöchentliche Absprachen konnten die Ziele innerhalb weniger Wochen erreicht werden.