Ein Erfahrungsbericht

Die Studenten des OC Lab“™s beschäftigen sich immer wieder mit neuen Technologien und Herausforderungen. So haben wir uns auch in diesem Projekt mit Openshift bzw. dem OpenDevStack beschäftigt. Der OpenDevStack ist eine Weiterentwicklung von Openshift, welche Opitz Consulting entwickelt hat.

Wir haben uns das Ziel gesetzt, einen Quickstarter, d.h. eine schnelle Möglichkeit mit dem Entwickeln von Flutter Applikationen zu starten, zu erstellen. Als Zielumgebung sollte wie bereits erwähnt alles im OpenDevStack laufen.

Was ist Flutter?

Bevor wir genau in die Umsetzung einsteigen, besteht natürlich die Frage was denn genau Flutter ist. Flutter ist ein von Google entwickeltes Framework, mit dem man Applikationen für verschieden Plattformen bauen kann. Das heißt die Entwickler müssen nicht für iOS eine Swift App, für Android eine Kotlin App und für das Web eine JavaScript Anwendung entwickeln. Sie haben die Möglichkeit mit Hilfe von Flutter all diese Plattformen mit nur einer Codebase zu bedienen. Dadurch können die Entwicklungszeiten für neue Plattformen deutlich reduziert werden.

Warum Jenkins?

Wenn man bereits in einem Softwareprojekt mitgewirkt hat, stellt sich immer wieder die Frage, wie man am Besten die Applikation testet und auf Fehler überprüft. Die beste Vorgehensweise ist, wenn man den Code regelmäßig testet und auf Fehler überprüft. Genau hier kommt Jenkins ins Spiel. Mit Jenkins lässt sich ganz einfach eine Continuous Integration und Continuous Delivery Pipeline aufbauen. Somit ist es relativ einfach einen neuen Pull Request zu testen und ihn nur zusammenzuführen, wenn er auch fehlerfrei läuft.

Wie sind wir vorgegangen?

Wir haben uns dazu entschieden, ein Docker Image zu verwenden, um dort sowohl Flutter als auch Jenkins zu installieren.
Deshalb haben wir zuerst das neuste Docker Image von Jenkins heruntergeladen und installiert. Anschließend benötigt das Docker Image noch Flutter, damit Jenkins die Flutter Applikation auch bauen kann. Nachdem Flutter installiert wurde, haben wir FlutterDoctor verwendet, um schnell zu checken, ob Flutter auch richtig installiert wurde. Zu guter Letzt benötigt das Image bzw. der User, der in dem Image definiert wurde bestimmte Zugriffe auf Ordner in OpenDevStack. Deswegen fügten wir ebenfalls noch den Befehl ein, dass der User zu der Benutzergruppe hinzugefügt wird, die auf die entsprechenden Ordner Zugriff haben. Nun war das Docker Image fertig und wir konnten es zum Docker Hub pushen und es auf OpenDevStack deployen. Dies ging sehr einfach, da der OpenDevStack eine native Möglichkeit bietet, Docker Images direkt vom Docker Hub zu pullen und auf OpenDevStack auf einem Pod zu installieren. Somit konnten wir den ersten Pod starten, welcher Jenkins und Flutter beinhaltet. Damit der Pod auch richtig startet, mussten wir die Ressourcen des Pods anpassen. So hoben wir den Speicher auf mind. 100 MiB und max. 2 GiB an. Und schon lief der Pod einwandfrei.

Probleme auf die wir gestoßen sind

Nachdem der Pod lief, versuchten wir ein Beispielprojekte in Flutter aufzuziehen, um die Funktionalität von Jenkins zu überprüfen. Dabei stellte sich heraus, dass Jenkins aktuell noch Berechtigungen fehlen, um ein bestimmtes File zu schreiben. Bisher konnten wir leider noch nicht genau feststellen woran dieser Fehler liegt, weshalb der Fehler aktuell noch präsent ist und kein Flutter Projekt getestet werden kann.

Zusammenfassung

Die Grundlage für den Quickstarter für OpenDevStack wurde gelegt. Sowohl Jenkins als auch Flutter sind auf einem Docker Image installiert und können auf OpenDevStack deployed werden. Einzig der Fehler mit der Berechtigung muss noch gefixt werden, da sonst das Docker Image nicht für den Einsatz auf OpenDevStack geeignet ist.

Alle Beiträge von Sebastian Liedl

Schreibe einen Kommentar