Die heutige Softwareentwicklung verlangt nach immer agileren und zuverlässigen Methoden, um Anwendungen kontinuierlich zu integrieren und auszuliefern. CI/CD-Pipelines sind dabei das Herzstück moderner DevOps-Prozesse. Trotz ihrer zentralen Bedeutung sind viele dieser Pipelines weiterhin in YAML konfiguriert – einem Format, das mit zunehmender Komplexität schnell unübersichtlich wird und die Produktivität beeinträchtigen kann. Eine innovative Herangehensweise ist inzwischen im Vormarsch: Die Ablösung von YAML-Konfigurationen durch eine klare linguistische Struktur aus Nomen und Verben, die nicht nur Lesbarkeit verbessern, sondern auch den gesamten Entwicklungs- und Deployment-Prozess vereinfachen. Sebastian Huckleberry, CEO von Stateful und Mitentwickler von Runme, stellt in seinem jüngsten Gastbeitrag vor, wie in Kombination mit dem Container-nativen Tool Dagger traditionelle CI/CD-Pipelines auf eine völlig neue Ebene gehoben werden.
Statt verschachtelter YAML-Dateien und komplexem Shell-Scripting kommen hier „Dagger Sätze“ zum Einsatz – Pipelines, die sich aus klar definierten Nomen (Subjekten und Objekten) sowie Verben (Aktionen) zusammensetzen. Diese Struktur ist der natürlichen Sprache nachempfunden und erleichtert nicht nur das Verständnis, sondern macht die Pipelines auch äußerst portabel und flexibel. Der Vorteil ergibt sich durch die natürliche Ausdruckskraft – Entwickler können mit Runme direkt in Dokumentationen interaktive Pipelines verfassen und ausführen. Die Anweisungen werden in Markdown geschrieben, was eine enorme Verbesserung gegenüber traditionellen CI/CD-Konfigurationen darstellt, die oft verstreut und schwer zugänglich sind. Runme übernimmt dabei die Rolle des Frontends zum Orchestrierungstool Dagger, das Container umschließt, abhängige Aktionen ausführt und für effizientes Caching sorgt.
Ein besonders praxisnahes Beispiel ist der Bau und das Testen der Runme-VS Code Erweiterung. Diese besteht aus mehreren Bestandteilen, darunter ein in Golang geschriebener Kernel und ein TypeScript-Frontend, die zusammengefasst und schließlich zu einer VSIX-Datei gebündelt werden. In herkömmlichen Pipelines würde der Entwickler hierfür mehrere sich wiederholende und oft redundant wirkende YAML-Blöcke anlegen. Mit Dagger und Runme hingegen wird jede dieser Komponenten durch ein Nomen repräsentiert und mit passenden Verben wie build, bundle und export kombiniert. So wird etwa die VSIX-Erweiterung als ExtensionVsix bezeichnet, was nicht nur die Funktion klar beschreibt, sondern auch die Ausgabeart.
Diese sprachliche Trennung bringt mehrere Vorteile. Zum einen werden Pipelines modular und wiederverwendbar, da einzelne Nomen und Verben in eigenen Dagger-Modulen gekapselt sind. Zum anderen erleichtert es die Wartung erheblich, da die Pipeline klar strukturiert und leicht verständlich bleibt, selbst wenn mehrere Entwickler daran arbeiten. Dank der containerbasierten Architektur von Dagger sind diese Pipelines zudem plattformübergreifend ausführbar und benötigen keine lokalen Klone der Quellcode-Repositories, was wieder Zeit und Aufwand spart. Die Fähigkeit, Pipelines aus der Dokumentation heraus direkt auszuführen („run the docs“) verändert das Entwicklererlebnis fundamental.
Entwickler können integrative Testreihen, Kompilierungsschritte oder das Erstellen von Release-Artefakten auf Knopfdruck starten. Das Konzept, Nomen und Verben als Bausteine einer Pipeline zu verwenden, erinnert an die Struktur natürlicher Sprache und erleichtert damit die Aufnahme und Weitergabe von Wissen im Team. Ein häufiges Problem bei herkömmlichen Pipelines ist das Management von Umgebungen und Konfigurationen. Gerade in heterogenen Umgebungen mit unterschiedlichen Betriebssystemen und CPU-Architekturen kann das schnell überhandnehmen. Dagger und Runme greifen hier ineinander, um eine transparente Handhabung von Umgebungsvariablen, Geheimnissen und Konfigurationen zu ermöglichen.
Technologien wie DotEnv und Direnv werden integriert, sodass Entwickler Umgebungen dynamisch aufbauen und verwalten können. Dabei sorgt Runme dafür, dass Pipelines stets mit der richtigen OS- und Architekturkombination ausgeführt werden, was wiederum Build- und Testprozesse absichert. Die Integration in bestehende CI-Tools wie GitHub Actions wird ebenso adressiert. Die Orchestrierung über bekannte Plattformen bleibt erhalten, während Runme und Dagger die eigentliche Steuerung und Ausführung übernehmen. Dies ermöglicht es Teams, schrittweise umzusteigen, ohne ihre gesamte Infrastruktur neu erfinden zu müssen.
Zudem bietet Runme eine komfortable Benutzeroberfläche, sowohl im Editor als auch im Terminal, die Entwicklern den Zugang zu Pipelines erleichtert. Ein weiterer praktischer Nutzen zeigt sich bei der Fehlerbehandlung und Debugging. Dank der klaren Deklaration von Nomen und deren Zusammenhängen ist es möglich, nur einzelne Teile der Pipeline auszuführen oder Log-Dateien und Screenshots von Integrationstests gezielt abzurufen, ohne den gesamten Prozess erneut durchlaufen zu müssen. Dies spart Zeit und erhöht die Entwicklerzufriedenheit. Die Kombination aus sprachlicher Prägnanz, modularer Struktur und containerisierter Ausführung macht den Ansatz, YAML durch Nomen und Verben zu ersetzen, zu einem echten Game-Changer für CI/CD.
Dies gilt besonders für Teams, die Wert auf Portabilität, Nachvollziehbarkeit und eine enge Integration von Dokumentation und Code legen. Zukunftsvisionen für diesen Bereich beinhalten eine noch intelligentere Skriptgenerierung, bei der nicht benötigter Code automatisch entfernt wird, sowie kompaktere Darstellung der Pipelines in einer einzigen Zeile, was eine schnellere Bedienbarkeit ermöglicht. Die Unterstützung für vielfältige Plattformen und Build-Targets wird kontinuierlich ausgebaut, um das volle Potenzial der Sprache auszuschöpfen. In der Praxis könnte dieser Wandel zu einer deutlichen Senkung von Fehlerquellen führen und gleichzeitig die Release-Zyklen verkürzen. Die konsequente Orientierung an klarer Sprachlogik erlaubt es zudem, die Automatisierung in CI/CD noch transparenter und kollaborativer zu gestalten.