Crew Hackathon XVI


Näheres zum Ablauf unserer Hackathons ist in Ausgabe XIV, XIII oder XII nachzulesen. Wir steigen hier direkt in die Themen ein:
Next Level Dependabot
- Team: Lennart, Flo, Phil
- Ziel: optimierter Workflow für automatische Dependabot-Updates
Bereits vor einiger Zeit berichteten wir, wie Dependabot unsere Projekt-Abhängigkeiten automatisch aktualisiert. Bei diesem Hackathon haben wir uns vorgenommen, diesen Setup etwas zu optimieren: Statt der Implementation mit dependabot/dependabot-script
nutzen wir nun die Umsetzung aus dependabot-gitlab/dependabot
, welches über ein Helm-Chart in einem unserer Kubernetes-Cluster installiert ist. Die Vorteile, die damit einhergehen:
-
Diese Variante ist deutlich näher an dem, wie es auch auf GitHub läuft. So steuern wir nun unsere Konfiguration über eine Datei (
.gitlab/dependabot.yml
, Dokumentation) im jeweiligen Projekt und müssen keine Schedules mehr jonglieren. Alle Projekte, die eine solche Datei beinhalten, werden automatisch erkannt! -
Über die Konfiguation kann auch das Merge-Verhalten für einzelne Versionen gesteuert werden. So können wir nun z.B. alle Patch-Versionen und / oder Minor-Versionen bestimmter Dependencies automatisch mergen. Zudem kann Dependabot nun auch einen Milestone zuweisen - in unserem Fall:
Next Release
. - Merge Requests, die durch eine neue Version der selben Dependency obsolet werden, schließt Dependabot automatisch. Außerdem werden Konflikte, die durch das mergen von Dependencies entstehen, von Dependabot gelöst.
- Zusätzlich zu den Dependency-Updates erhalten wir nun Security Alerts mit ausführlichen Beschreibungen zu entsprechenden CVEs.
- Es gibt eine (nicht sehr schöne, aber funktionale) Oberfläche, die zur Übersicht aller Projekte dient. Hier können außerdem die Checks pro Projekt & Ökösystem manuell getriggert werden.
Clockify meets Fastbill
- Team: Mats, Sebastian
- Ziel: automatisierte Erstellung von Rechnungsentwürfen
Wir schauen intern immer mal wieder nach regelmäßigen Aufgaben, die wir optimieren oder auch automatisieren können. Das Zusammenspiel unserer Zeiterfassungs- und unserer Abrechnungsoftware war uns schon länger ein Dorn im Auge. Bisher mussten alle abrechenbaren Stunden aus unserem Zeiterfassungstool exportiert werden, um sie anschließend händisch in einen Rechnungsentwurf zu überführen. Dieser Prozess ist nicht nur fehleranfällig, sondern auch sehr müßig, Position für Position die Stundenzahl, Einheit und Stundenpreis manuell einzufügen. Für die Zeiterfassung benutzen wir Clockify und für die Rechnungsstellung verwenden wir Fastbill. Da beide Tools Schnittstellen anbieten und der Umfang überschaubar ist, bietet sich dieses Automatisierungsprojekt perfekt für einen Hackathon an.
Nach der Analyse der Schnittstellen und dem Testen der notwendigen Anfragen haben wir ein Elixir-Script geschrieben. Das Script liest alle abzurechnenden Positionen des Abrechnungszeitraums und den Stundensatz aus Clockify aus, bereitet die Einträge entsprechend auf und erstellt anschließend einen Rechnungsentwurf in Fastbill. Wir können nun für jedes Projekt ein GitLab-Schedule anlegen, der lediglich die entsprechende Fastbill-Kundennummer und Clockify-Projekt ID als Pflicht-Eingaben benötigt. So können wir uns nun in Zukunft auf Knopfdruck Rechnungsentwürfe in Fastbill aus unseren Einträgen in Clockify generieren lassen. Einmal mehr haben wir eine stumpfe Aufgabe aus unserem Arbeitsalltag automatisiert, sodass zukünftig Fehlern vorgebeugt und Zeit gespart werden kann.
Minecraft-Server
- Team: Kevin, Tristan
- Ziel: interner Minecraft-Server für Spieleabende
Für unsere regelmäßigen Spieleabende sind wir immer auf der Suche nach Spielen, die man mit einer größeren Gruppe (ca. 10 Spieler) online spielen kann. Dabei kam die Idee eines eigenen Minecraft-Servers auf, den man noch mit einem eigenen Modpack erweitert. Für das Modpack haben wir uns im Groben folgende Mods herausgesucht:
- Create: Bietet eine Vielzahl von Werkzeugen und Blöcken für Bau, Dekoration und Automatisierung von Abläufen und den Bau komplexer Maschinen, basierend auf Zahnrädern und Fließbändern.
- Ergänzend dazu Immersive Engineering: Dieser Mod bringt große Multiblock-Maschinen im Stil der “Industrialisierung”, sowie einiger moderner Werkzeuge.
- JourneyMap: Eine Karte, in der man Gebiete und Wegpunkte einzeichnen kann.
Mit diesen Mods ist eine solide Grundlage für ein kreatives oder unter Umständen kompetetives Spielen gegeben. Außerdem haben wir uns noch Minecraft-Hoster-Anbieter angeschaut, uns letztendlich aber dazu entschieden den Spiele-Server auf einem eigenen privaten Server zu betreiben.