Unser Woodhack Projekt 2018: der handgefertigte Build-Agent „7klotz“

Woodhack? Erzähl mir mehr!

Sevenval veranstaltet jährlich einen Hackathon, bei dem alle die Chance haben, Projektideen abseits vom Arbeitsalltag zu verwirklichen. Für mich war es in diesem Jahr der zweite Woodhack und die größte Herausforderung ist für mich immer, sich zu überlegen, was man denn mit diesem ganzen Freiraum macht. Die Idee war dieses Mal: Wir bringen das “Wood” in Woodhack.

Wie sind wir auf die Idee des 7klotz gekommen?

Der 7klotz ist eigentlich ein Merger aus zwei Ideen. Die erste war das Verlangen, beim Woodhack tatsächlich physikalisch etwas zu hacken, also etwas mit Hardware zu machen. Dabei wollten wir nicht einfach einen Bausatz zusammenstecken, sondern selbst etwas konzipieren und umsetzen. Mit Sägen und Holz und so.

Die zweite Idee ist aus dem Arbeitsalltag von Krispin, einem unserer Devops Engineers, entstanden. Bei einem Kundenprojekt haben wir einen Frontend-Build, der über 45 Minuten dauert. Der dem Projekt zugewiesene Jenkins arbeitet aber nur einen Auftrag gleichzeitig ab. Das hat uns auf die Idee gebracht, dass es doch toll wäre, eine CI/CD Umgebung zu haben, die wir, ohne von anderen Abteilungen abhängig zu sein, selbstständig aufsetzen und skalieren können. Im nächsten Projekt hatte Krispin dann Gitlab Runner als Lösung dieses Problems ausprobiert. Das funktionierte soweit toll, nur dass der Runner lokal auf den Rechnern der Entwickler lief. Rechner aus, Build vorbei.

Nun hatten wir auch ein erstes Anwendungsbeispiel für unsere Hardware. Der Gitlab-Runner kann auf einem Raspberry Pi installiert werden, für dem wir ein schickes Gehäuse handfertigen können – am besten noch mit angeschlossener Hardware, die uns den Build-Status anzeigt. Dabei sind die Pis so günstig, dass man quasi ein Klotz-Cluster aufbauen kann, das mehrere Builds gleichzeitig abarbeiten kann.

Wie wurde der 7klotz umgesetzt?

Beim Bau des Gehäuses war uns Modularität am wichtigsten. Das Gerüst besteht aus acht Ecken, die alle identisch sind. Die Innenseiten der Ecken sind mit Nuten versehen, in die man acht quadratische Wandelemente einschieben kann. Diese sind aus Alu-Lochblech oder Sperrholz. Durch die Quadratform sind (wenn mal mehr als ein Klotz gebaut ist) alle Teile frei kombinier- und austauschbar. Jede Wand kann mit einem anderen Input- oder Output-Device versehen werden. Denkbar sind unter anderem Displays, Touchscreens, Buttons oder Lautsprecher. So ist es möglich, den 7klotz für eine Vielzahl an Projektideen zu konfigurieren.

Unsere Idee war, eine Projektionsfläche für Ideen zu schaffen und ein bisschen Hardware vorrätig zu halten, damit man sich einfach mal einen Klotz schnappen kann und ein Konzept damit ausprobieren kann. Um den Proto-klotz mit Leben zu füllen, nahmen wir uns die Gitlab-Runner Idee vor. Die Software zum Betrieb des 7klotz besteht aus zwei Teilen:

KlotzOS enthält das Linux-Betriebssystem mit Gitlab Runner und Unicornhat. Der Unicornhat ist ein 4×8 LED Display, mit dem der Klotz den Build Status darstellt. Über Pythonscripte kann man damit die tollsten Animation programmieren!

KlotzKontrol ist eine Cloudsoftware, die die im System angemeldeten Klötze darstellt und deren Status anzeigt. Das KlotzKontrol GitLab-Repository diente uns gleichzeitig als Beispiel für die CI/CD-Pipeline. Dieses Repo verteilt die Build-Jobs auf die angemeldeten Klötze, diese senden den Build-Status zurück an Gitlab und veröffentlichen das Resultat auf Heroku.
Concept Proven.

Und dann?

Am Ende des Hackathons haben alle Woodhacker für das beste Projekt abgestimmt. Und – wer hätte das gedacht – die Wahl viel auf unseren Klotzi. Eine große Ehre, bei der Vielzahl an starken Konkurrenz-Projekten. Man darf eben nie die Macht von bunten blinkenden Lichtern unterschätzen.

Wie geht es mit dem 7klotz weiter?

  1. Klotz-Prototypen produktiv einsetzen
  2. Mehr Klötze bauen
  3. Weltherrschaft! (+ Profit)

Jetzt mal im Ernst: Wir hoffen, die Konstruktion vereinfachen zu können und ein paar mehr Klötze zu bauen, die wir dann anderen Teams zur Verfügung stellen können. Außerdem müssen wir dem 7klotz noch Zugang zum VPN verschaffen, damit dieser auch Builds aus unserem internen Repo abarbeiten können. Und natürlich lustige Hardware ausprobieren, z.B. einen Beschleunigungssensor, der den Build abbricht, wenn man ihn wütend schüttelt.

Und zu guter Letzt: Wer hat’s erfunden?

Krispin Schulz, Christoph Bussenius, Fabian Henning und Yours Truly (nicht die Schweizer).

Zur Blog-Startseite