Automatisiertes Bauen und Ausliefern

Was ist eine CI/CD-Pipeline?

Continuous Integration und Continuous Delivery

Eine CI/CD-Pipeline ist eine automatisierte Abfolge von Arbeitsschritten, die nach jeder Änderung im Repository den Code baut, testet und für die Auslieferung bereitstellt. CI steht für Continuous Integration, CD für Continuous Delivery oder, eine Stufe weiter, Continuous Deployment.

Sobald mehr als zwei Leute am selben Code arbeiten, entscheidet die Pipeline darüber, ob eine Änderung in Minuten beim Kunden ankommt oder erst nach Tagen.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Löst aus
Jeder Push und jeder Merge- oder Pull-Request
Liegt als
Versionierte Datei im Repository
Typische Stufen
Bauen, Testen, Paketieren, Ausliefern
Verwechselt mit
Continuous Deployment

CI, Continuous Delivery und Continuous Deployment

Hinter dem Kürzel stecken drei aufeinander aufbauende Praktiken. Die Pipeline ist das Werkzeug, mit dem ein Team sie umsetzt:

PraxisWas sie bedeutetAm Ende steht
Continuous IntegrationÄnderungen werden oft, meist mehrmals täglich, in den gemeinsamen Stand gemergt und dabei automatisch gebaut und getestetEin grüner Durchlauf mit Testbericht
Continuous DeliveryJeder erfolgreiche Durchlauf erzeugt ein auslieferbares Paket, in Produktion geht es per FreigabeEin Release, das jederzeit ausgerollt werden kann
Continuous DeploymentJede grüne Änderung geht ohne menschliche Freigabe in ProduktionDie neue Version im Betrieb

Die Entscheidung zwischen Delivery und Deployment ist keine technische, sondern eine über Risiko und Rückweg. Ohne belastbare Tests, ohne Überwachung und ohne geübtes Zurückrollen ist automatisches Ausrollen nur ein schnellerer Weg in den Ausfall. Umgekehrt ist eine Freigabe, die wochenlang liegen bleibt, kein Sicherheitsgewinn, sondern sammelt Änderungen zu einem großen, riskanten Sprung.

Die typischen Stufen einer Pipeline

Wie viele Stufen eine Pipeline hat, hängt vom Projekt ab. Eine ausgebaute Pipeline durchläuft meist diese Schritte, wobei jede Stufe nur startet, wenn die vorherige grün ist:

  1. Auslöser

    Ein Push, ein Merge Request oder Pull Request, ein Tag oder ein Zeitplan startet den Durchlauf.

  2. Build

    Der Code wird kompiliert oder gebündelt, Abhängigkeiten werden in festgelegten Versionen installiert.

  3. Statische Prüfungen

    Linter, Formatprüfung, Sicherheitsscans des Codes und eine Prüfung der Abhängigkeiten auf bekannte Schwachstellen.

  4. Tests

    Erst die schnellen Unit-Tests, danach Integrationstests und, wo vorhanden, End-to-End-Tests.

  5. Paketieren

    Das Ergebnis wird als Artefakt abgelegt, häufig als Container Image in einer Registry.

  6. Deployment in eine Testumgebung

    Die neue Version läuft zuerst auf einer Staging-Umgebung, wo weitere Prüfungen oder Abnahmen stattfinden.

  7. Auslieferung

    Per Freigabe oder automatisch geht dasselbe Artefakt in Produktion, ohne neu gebaut zu werden.

Wie eine Pipelinedatei aussieht

Die Pipeline ist als Datei im Repository beschrieben und wird damit versioniert wie der Code. Bei GitLab heißt sie .gitlab-ci.yml und liegt im Projektwurzelverzeichnis, bei GitHub Actions liegen Workflow-Dateien im Ordner .github/workflows. Darin stehen Jobs, die in Stages gruppiert sind. Ein vereinfachtes Beispiel für GitLab mit Build, Test und einer manuell freigegebenen Auslieferung vom Hauptbranch:

stages:
  - build
  - test
  - deploy

build:
  stage: build
  image: node:22
  script:
    - npm ci
    - npm run build
  artifacts:
    paths:
      - dist/

test:
  stage: test
  image: node:22
  script:
    - npm ci
    - npm test

deploy:
  stage: deploy
  script:
    - ./deploy.sh
  environment: production
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      when: manual

Ausgeführt werden die Jobs von einem Runner, also einem Prozess auf einer Maschine oder in einem Container, der für jeden Job eine frische Umgebung bereitstellt. Genau darin liegt der Gewinn: Der Build läuft nicht auf dem Laptop mit den historisch gewachsenen Werkzeugen, sondern auf einem definierten Stand, den alle teilen.

Zwischen zwei Jobs bleibt vom Arbeitsverzeichnis nichts erhalten. Was ein späterer Job braucht, etwa das gebaute Paket im Ordner dist, wird deshalb als Artefakt weitergegeben. Das „when: manual“ im Beispiel macht aus der Pipeline Continuous Delivery: Die Auslieferung steht bereit und startet erst auf Knopfdruck.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Nicht verwechseln

CI/CD-Pipeline und was oft damit gleichgesetzt wird

CI/CD-Pipeline gegen Build-Server

Ein klassischer Build-Server kompiliert auf Zuruf oder nach Zeitplan, die Konfiguration liegt oft nur in seiner Oberfläche. Eine Pipeline hängt am Repository, ist dort als Code beschrieben und umfasst auch Tests und Auslieferung. Werkzeuge wie Jenkins können beides sein, je nachdem, wie sie eingerichtet sind.

CI/CD-Pipeline gegen DevOps

DevOps beschreibt die Zusammenarbeit von Entwicklung und Betrieb mit gemeinsamer Verantwortung für den laufenden Dienst. Die Pipeline ist ein Werkzeug darin, sie ersetzt aber keine gemeinsame Verantwortung für den Betrieb.

CI/CD-Pipeline gegen Infrastructure as Code

Dort wird die Umgebung selbst als Code beschrieben, etwa Server, Netze und Datenbanken. Die Pipeline führt solche Beschreibungen häufig aus, ist aber nicht dasselbe.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
In der Praxis

Eine Pipeline, deren Rot niemand mehr ernst nimmt, ist wertlos

Der Verfall beginnt fast immer mit einem Test, der nur manchmal fehlschlägt, weil er von Zeitzonen, Ausführungsreihenfolge oder einem langsamen Netz abhängt. Nach dem dritten grundlosen Fehlschlag startet jemand den Job einfach neu, und ab da liest niemand mehr das Protokoll. Solche Tests gehören stabilisiert oder herausgenommen, sonst verliert das Team das Vertrauen in das Signal.

Der zweite wunde Punkt sind Zugangsdaten. Die Pipeline braucht Schlüssel für Registry, Testsystem und Zielumgebung, und die landen erstaunlich oft im Klartext in der Pipelinedatei, die jeder mit Leserecht am Repository sieht. Sauber ist die Ablage in den geschützten Variablen oder im Secret-Store der Plattform, deren Werte in den Protokollen maskiert werden, mit getrennten Rechten für Branches und Umgebungen.

Und dann ist da die Laufzeit. Dauert die Kette länger als eine Kaffeepause, arbeiten alle weiter, statt auf das Ergebnis zu warten, und ein Fehler fällt erst auf, wenn drei weitere Änderungen darauf liegen. Caches für Abhängigkeiten, parallele Jobs und ein schneller Vorlauf mit den wichtigsten Tests vor den langsamen Prüfungen bringen hier am meisten.

CI/CD-Pipeline lernen

Wie du Branch-Strategie, Merge-Regeln und automatische Durchläufe aufeinander abstimmst, klären die Trainings zu Git und GitHub an einem echten Projekt.

Häufige Fragen

Welche Werkzeuge gibt es für CI/CD?
Am verbreitetsten sind GitLab CI/CD und GitHub Actions, die direkt in die jeweilige Plattform eingebaut sind, dazu Jenkins als eigenständiger Server und Azure Pipelines als Teil von Azure DevOps. Für das Ausrollen auf Kubernetes kommen oft GitOps-Werkzeuge wie Argo CD dazu. Die Grundbegriffe Job, Stage, Runner und Artefakt finden sich überall wieder.
Lohnt sich eine Pipeline für ein kleines Team?
Ja, sobald mehr als eine Person am Code arbeitet. Schon ein Durchlauf, der bei jedem Push baut und die Tests startet, beendet die Diskussion darüber, ob es bei jemand anderem lief.
Was gehört in die erste Ausbaustufe?
Bauen und automatisch testen, mehr nicht. Auslieferung, Sicherheitsprüfungen und Umgebungen für Vorschauen kannst du später ergänzen, wenn die Grundstrecke zuverlässig grün läuft.
Wie hängen Branches und Pipeline zusammen?
Üblich ist, dass jeder Branch die Prüfungen durchläuft und ein Merge erst nach grünem Durchlauf möglich ist. Ausliefernde Jobs werden dagegen meist auf den Hauptbranch oder auf Tags beschränkt, wie im Beispiel oben über die rules-Bedingung.

Passt thematisch dazu

Läuft dieselbe Testsuite lokal grün und im Durchlauf rot, liegt das an der Umgebung, und die sechs Stellen, an denen sich die Umgebung unterscheidet, sind schnell durchgesehen.

Ob GitLab CI/CD oder GitHub Actions besser zu euren Repositorys und Runnern passt, klärt der Vergleich der beiden großen Pipeline-Plattformen.

Persönlich für dich da

Deine Ansprechpartner

Du willst das Thema nicht nur nachschlagen, sondern anwenden können? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Ordnet mit dir ein, welcher Kurs zu deinem Vorwissen passt.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant Inhouse-Trainings, die an euren eigenen Daten und Abläufen ansetzen.

CI/CD-Pipeline im Kurs statt im Lexikon

Nachschlagen bringt dich bis zum Verstehen. Anwenden lernst du an echten Aufgaben.