Erstgespräch vereinbaren
Kommende Termine
4. Mai 2026
IT-Talk: Digitale Verantwortung
Details →
12. Juni 2026
Vernissage
28. September 2026
IT-Talk: Event-Driven Architecture

Erste Schritte mit GitLab CI/CD

Einführung in GitLab CI/CD: Jobs, Stages, Rules und Variablen für automatisierte Pipelines direkt im Git-Projekt.

Serverraum mit blinkenden Lichtern

GitLab bietet die Möglichkeit, CI/CD Pipelines direkt im Projekt zu konfigurieren. Alle Informationen zu seinem Git-Projekt sind an einem Fleck verfügbar, was einen einfachen Wechsel zwischen Quellcode, Branches und Pipelines ermöglicht.

Zum Starten wird eine .gitlab-ci.yml-Datei im Root-Verzeichnis angelegt – entweder manuell oder über das GitLab-Interface. Die Konfigurationsdatei als versionierter Code bietet Vorteile wie Änderungshistorie und Konsistenz zwischen Pipeline und Code-Stand.

Jobs - Die Schritte der Pipeline

Jobs sind die einzelnen Schritte einer Pipeline. Beispiel mit Maven:

build:
  script:
    - mvn compile

test:
  script:
    - mvn test

Das Schlüsselwort script definiert die auszuführenden Shell-Befehle. Mehrere Zeilen beginnen jeweils mit einem Bindestrich.

Stages - Phasen der Pipeline

Stages sind nacheinander durchlaufene Phasen. Jobs einer Stage starten nur, wenn alle Jobs der vorherigen Stage erfolgreich abgeschlossen sind:

stages:
  - Build
  - Tests

build:
  stage: Build
  script:
    - mvn compile

test:
  stage: Tests
  script:
    - mvn test

Mehrere Jobs können einer Stage angehören:

stages:
  - Build
  - Tests

build:
  stage: Build
  script:
    - mvn compile

test:unit:
  stage: Tests
  script:
    - mvn test -DskipITs

test:integration:
  stage: Tests
  script:
    - mvn test -Dtest=*IT

When - Konfiguration des Ausführungszeitpunkts

Das Schlüsselwort when steuert, wann Jobs ausgeführt werden. when: manual startet Jobs nur auf Wunsch:

test:integration:
  stage: Tests
  script:
    - mvn test -Dtest=*IT
  when: manual

Dies eignet sich für langläufige Tests, die manuelle Kontrolle benötigen.

Rules - Bedingungen für die Jobs

Mit rules werden Bedingungen für Job-Ausführung definiert. Beispiel – Deploy nur auf dem Master-Branch:

stages:
  - Build
  - Tests
  - Deploy

build:
  stage: Build
  script:
    - mvn compile

test:unit:
  stage: Tests
  script:
    - mvn test -DskipITs

test:integration:
  stage: Tests
  script:
    - mvn test -Dtest=*IT
  when: manual

deploy:
  stage: Deploy
  script:
    - mvn deploy -Dmaven.test.skip=true
  rules:
    - if: '$CI_COMMIT_REF_NAME == "master"'

Mehrere Regeln sind kombinierbar:

deploy:
  stage: Deploy
  script:
    - mvn deploy -Dmaven.test.skip=true
  rules:
    - if: '$CI_COMMIT_REF_NAME == "master"'
    - if: '$CI_COMMIT_REF_NAME =~ /^hotfix-/'
      when: manual

Regeln werden der Reihe nach bewertet; sobald eine zutrifft, enden weitere Auswertungen.

CI/CD Variablen

CI/CD Variablen sind innerhalb der Pipeline-Konfiguration nutzbar. Sie lassen sich projekt-weit in den Einstellungen unter “CI/CD” oder direkt beim manuellen Pipeline-Start über “Run Pipeline” definieren.

GitLab stellt vordefinierte Variablen automatisch zur Verfügung. $CI_COMMIT_REF_NAME liefert beispielsweise den Namen des Branch oder Tags, von dem die Pipeline erstellt wurde. Weitere vordefinierte Variablen ermitteln Commit-Autoren, Default-Branch-Namen, Pipeline-IDs und mehr.

Eine vollständige Liste findet sich in der GitLab-Dokumentation zu Predefined Variables .

Extends - Vererbung von Eigenschaften

Jobs können Eigenschaften anderer Jobs erben. Eigenschaften des erbenden Jobs haben höhere Priorität:

stages:
  - Build
  - Tests
  - Deploy

.master_only:
  stage: Build
  rules:
    - if: '$CI_COMMIT_REF_NAME == "master"'
    - if: '$CI_COMMIT_REF_NAME =~ /^hotfix-/'
      when: manual

deploy:
  extends: .master_only
  stage: Deploy
  script:
    - mvn deploy -Dmaven.test.skip=true

Der Punkt am Anfang (.master_only) markiert einen versteckten Job, der nie in der Pipeline erscheint – ideal für wiederverwendbare Konfigurationen. Das Schlüsselwort extends benennt den vererbenden Job. Ein Array mehrerer Job-Namen ist möglich; der letzte Job hat höchste Priorität.

Mit diesen Grundlagen lassen sich hilfreiche Pipeline-Definitionen für Continuous Integration implementieren. GitLab CI/CD bietet aber noch zahlreiche weitere Funktionalitäten, die in der offiziellen Dokumentation erkundet werden können.

Quellen:

Zurück zum Blog