Zum Hauptinhalt Zur Navigation Zur Suche

YAML, das seinen Platz kennt

Buildkite hat auch YAML, aber der Unterschied besteht darin, dass das YAML von Buildkite lediglich eine Pipeline beschreibt: Schritte, Befehle, Plug-ins. Es handelt sich um eine Datenstruktur, nicht um eine Programmiersprache, die sich als Konfigurationsformat ausgibt. Wenn man echte Logik braucht, schreibt man ein Skript. In einer echten Sprache. Ein Skript, das man lokal ausführen kann. Wie ein Mensch mit Würde und Lebenswillen.

Wir finden hier, was Bash-Fanatiker suchen: nicht alles in Bash, aber die Orchestrierung in die Konfiguration und die Logik in den Code. Buildkite respektiert diese Grenze. Github Actions verwischt sie, bis man nicht mehr erkennen kann, wo die Konfiguration endet und die Programmierung beginnt – und programmiert wird in einer Sprache, die ohne ${{ }} und ein Stoßgebet keine einfache Arithmetik beherrscht.

Die Ressourcen gehören einem selbst

Bei Buildkite besteht der Agent aus einer einzigen Binärdatei, die auf den eigenen Maschinen läuft. Und zwar ganz nach Wunsch entweder in der Cloud, auf lokalen Servern oder auf einer ausgefallenen Spezialhardware. Man bestimmt selbst über die Instanztypen, das Caching, den lokalen Speicher und das Netzwerk.

Man kann einen Agenten auf einer Flotte riesiger EC2-Instanzen mit NVMe-Laufwerken und 20 GB Docker-Layer-Cache starten oder auf einem Raspberry Pi laufen lassen – egal. Die schnellste CI ist die mit einem warmen Cache auf einem großen Rechner, den man selbst kontrolliert.

Es gibt keine ganze Branche, die davon lebt, "Buildkite, nur in schneller" anzubieten. Man braucht sie nicht. Man kann einfach zu einer größeren Maschine greifen – etwas, das Github Actions niemals schaffen wird. Bei Github Actions bekommen wir eine massenproduzierte Ubuntu-VM mit der emotionalen Wärme eines Wartezimmers im Krankenhaus.

Ein Hinweis zum Betrieb eigener Infrastruktur

Ich höre schon den Einwand: "Aber ich möchte gar keine eigene CI-Infrastruktur betreiben. Ich möchte einfach nur Code pushen und Tests ausführen lassen."

Verständlich. Der Betrieb eigener Agenten ist nicht jedermanns Sache. Wer in seiner Freizeit eine kleine Open-Source-Bibliothek pflegt, sollte keine EC2-Instanzen hochfahren und Autoscaling-Gruppen verwalten müssen. Die kostenlose Stufe von Github Actions für öffentliche Repos ist für das OSS-Ökosystem wirklich wertvoll, und ich will keinem Einzelentwickler einreden, er müsse Terraform einrichten, um seine Unit-Tests auszuführen.

Dieser Beitrag richtet sich vor allem an Teams, die Produktionssysteme in Unternehmen betreiben – also dort, wo bereits Infrastruktur verwaltet wird, wo CI-Zeit in verlorenen Entwicklerstunden pro Woche gemessen wird und wo ein 45-Minuten-Build echtes Geld kostet, sowohl an Rechenleistung als auch an Gehältern.

In einem solchen Umfeld macht sich der Aufwand für den Betrieb von Buildkite-Agenten schnell bezahlt. Wer nur am Wochenende ein 200-Zeilen-npm-Paket veröffentlicht, rechnet anders, und das ist total okay.


Relevante Themen