knuspermagier.de
Der privateste Blog von Philipp.

Willkommen zurück, Woodpecker

Früher mochte ich es ja sehr, dass man, wenn man eine Änderung vorgenommen hat, einfach kurz die drei betroffenen PHP-Dateien hochladen konnte und fertig war die Laube. Das dauerte dann eine Sekunde und war mit einem Tastatur-Shortcut erledigt.

Heutzutage benutze ich natürlich für alles Docker, weil es ja auch ein paar Vorteile bietet, eine Sache, die ich aber immer noch nervig finde ist, dass ich ungefähr eine Minute warten muss, bis ich meine Änderungen live habe. Der größte Zeitfresser ist dabei der Upload des neuen Docker-Images in die Registry.

Ich hab zwar schon alles getan, was ich konnte, um das Dockerfile klein zu halten und alles so zu arrangieren, dass Änderungen auch nur kleine Diffs erzeugen, aber je nach Projekt ist es am Ende doch immer ein Upload von 50-100 Megabyte und das dauert nun mal wesentlich länger, als nur drei Kilobyte Dateien hochzuladen, vor allem, wenn man mal nicht an seiner 100 MBit-Leitung hängt.


Um diesen Schritt zumindest ein klein wenig schneller zu machen und den Step generell etwas von meinem Rechner loszulösen, hab ich mich nochmal entschlossen, mir eine YAML-Datei für Woodpecker CI zu schreiben, was ich ja eh seit Ewigkeiten (ziemlich ungenutzt) herumliegen habe.

Tatsächlich war das auch gar nicht so schwer und funktioniert ziemlich out of the Box. Im ersten Step führe ich composer install , npm install und npm run build aus und im Zweiten wird der ganze Kram mit dem woodpeckerci/plugin-docker-buildx Image gebaut und in die Registry geschubst. Vorteil hier: Er kann mit buildx direkt ein Image anlegen, das auf mehreren Plattformen funktioniert, dafür war ich lokal immer zu faul und ärgerte mich ab und zu, wenn ich etwas für amd64 baute, aber auf meinen Hetzner Server deployen wollte, der ja mit ARM läuft.


file://m297ova3o9ynijo6

Die wichtige Frage ist nun natürlich, ob es was gebracht hat, oder nicht. Ein Durchlauf braucht gerade ungefähr eine Minute, der Upload in die Registry ist auf jeden Fall wesentlich schneller. Aber natürlich verliert der Woodpecker Agent in den anderen Schritten etwas Zeit, da die Single Core Performance von meinem Rechner, auf dem er gerade läuft, natürlich von meinem M1-Macbook Pro hier in den Schatten gestellt wird.

Trotzdem hat es sich gelohnt. Ich kann nun direkt aus dem Git deployen, könnte also auch mal einen KI-Agenten direkt darauf werfen, statt ihn lokal laufen zu lassen. Zusätzlich erstellt er Multi-Plattform-Images und wenn ich mal in einem Slow-Internet-Bereich bin, dauert ein Push nicht mehr 10 Minuten, sondern nur noch eine Minute, zusätzlich zur Zeit für den git push.

Kommentare, Feedback und andere Anmerkungen?
Schreib mir eine E-Mail 🤓