Suchen

Definition „Pipeline-Skript“ Was ist Pipeline as Code?

| Autor / Redakteur: zeroshope / Stephan Augsten

Pipeline as Code ist eine Funktion in der Open-Source-Software Jenkins. Jobabfolgen müssen hier nicht zwangsläufig konfiguriert werden. Stattdessen können sie als Skripte hinterlegt werden. Dies bietet in der alltäglichen Arbeit diverse Vorteile.

Firma zum Thema

Mit Pipeline as Code lassen sich Jobabfolgen von Jenkins standardmäßig als Skriptfiles im Source Code Management hinterlegen.
Mit Pipeline as Code lassen sich Jobabfolgen von Jenkins standardmäßig als Skriptfiles im Source Code Management hinterlegen.
(Bild: Jenkins.io)

Jenkins ist als kostenlose Open Source-Lösung zur Standardanwendung für die Automation in der Softwareentwicklung geworden. Mit der Einführung der zweiten Version im Jahr 2016 integrierten die Entwickler von CloudBees mit Pipeline as Code ein Feature, das es zuvor nur als Plug-in gab.

Jobabfolgen lassen sich seitdem standardmäßig als Skripte hinterlegen. Zuvor mussten sie über das Userinterface der Anwendung konfiguriert werden. Insbesondere in komplexen Entwicklungsumgebungen entstehen dadurch große Vorteile.

Pipelines haben in der Entwicklung sowie Bereitstellung von Anwendungen zwei Kernaufgaben:

  • 1. Hier können Jobs hierarchisiert werden. Es entsteht eine Abfolge, wann welche Aufgaben durchgeführt werden.
    Neuerungen werden in der Pipeline geprüft. Als Teil der Jobabfolge werden Testroutinen eingefügt.

Die Pipeline sorgt in der Entwicklung für eine deutlich höhere Anwendungsstabilität und ist zugleich flexibel anpassbar. In unserer Zeit gibt es kaum noch Softwarelösungen, die nicht aus einer Pipeline stammen. Ihr Aufbau ist deshalb von besonderer Bedeutung. Insbesondere automatische Abläufe sollten sich schnell und einfach einfügen, ändern und wieder löschen lassen.

Pipelines sind dabei grundlegend nach dem Dominostein-Prinzip strukturiert. Ein abgeschlossener Job stößt die nächste Aufgabe an. Festgelegte Reihenfolgen werden so automatisch eingehalten.

Die ursprüngliche Lösung von Jenkins

Jenkins vertraute ursprünglich auf ein Graphical User Interface (GUI), das bis heute nach wie vor genutzt werden kann. Von Hand lassen sich Jobs konfigurieren und positionieren. Das fertige Ergebnis ist im Prinzip ein Zeitstrahl oder ein Koordinatensystem (woran sich auch bei Pipeline as Code nichts geändert hat). Die Idee hinter diesem Ansatz zielte auf die Zugänglichkeit: Auch Personen, die nicht coden können, sollen in der Lage sein, eine entsprechende Pipeline zu bauen. Der Gedanke, dass in der Softwareentwicklung die meisten Personen durchaus coden können (müssen), wurde dabei offenbar ausgeblendet.

Das Userinterface offenbarte bald einige Schwächen:

  • Änderungen im Detail sind nur durch großen Aufwand durchführbar.
  • „Wenn, dann“-Szenarien lassen sich kaum umsetzen, was insbesondere für Testroutinen ein Problem ist.
  • Parallele Jobabfolgen sind ebenfalls kaum einstellbar.
  • Durch das Dominostein-Prinzip einer Pipeline führen Änderungen der Abfolge über das Interface praktisch immer dazu, dass ausführliche Überarbeitungen notwendig werden.

Die Verbesserungen durch Pipeline as Code

CloudBees entwickelte mit Groovy DSL eine eigene Sprache für Jenkins. Eine geskriptete Pipeline gestattet es, kleinere Änderungen problemlos vorzunehmen. Oft muss nur eine Zeile geändert werden. Auch „Wenn, dann“-Szenarien sowie parallele Abläufe lassen sich programmieren.

Abfolgen-Änderungen fallen überdies deutlich leichter. Dadurch, dass nur Codezeilen verschoben, gelöscht oder hinzugefügt werden müssen, sind größere Umbauten in der Regel nicht notwendig. Pipeline as Code bietet zudem die Möglichkeit, Optionen, Trigger und Parameter für Pipelines standardmäßig zu hinterlegen. Wenn zusätzliche Kanäle für Jobabfolgen aufgebaut werden sollen, ist dies vorteilhaft.

Pipeline as Code nutzen

Skripte für Pipeline-Jobs müssen als Jenkins-File gespeichert werden. Sie werden im SCM abgelegt. Dies sollte aber nicht sofort geschehen. Wer Jenkins startet und den Bereich für neue Jobs aufruft, findet hier die zwei folgenden Einträge: PIPELINE und MULTIBRANCH PIPELINE. Im ersten Fall kann das Skript direkt einem Job zugeordnet werden.

Das System testet den Code. Funktioniert alles, wandert das Skript ins SCM. Die eigentliche Pipeline wird dann über den zweiten Eintrag aufgebaut. Hier muss nur das Repository angegeben werden. Jenkins sucht nun hier nach dem Jenkins-File und erledigt alles weitere automatisch nach den Angaben in der entsprechenden Datei.

Pipeline as Code ist kein perfektes System

Obgleich Pipeline as Code deutlich besser als die Vorgängerlösung ist, handelt es sich dennoch um ein System mit Schwachpunkten. Fehler sind beispielsweise in langen Codes deutlich schwieriger zu finden als bislang. Zudem werden viele Pipelines unnötig komplex gebaut. Entwickler verlieren sich in den Möglichkeiten, die sie durch Groovy DSL haben. Ein Teil der höheren Effizienz durch die Skripte kann so wieder verloren gehen.

(ID:46311285)