Skip to content

CI/CD mit GitLab

Übersicht

GitLab CI/CD ermöglicht automatisierte Build-, Test- und Deployment-Prozesse direkt aus dem Git-Repository. Die Pipeline-Konfiguration erfolgt über die .gitlab-ci.yml Datei im Repository-Root.

Grundlagen

Stages

Pipelines sind in Stages organisiert, die sequenziell ablaufen. Jobs innerhalb einer Stage laufen parallel.

yaml
stages:
  - build
  - deploy

Jobs

Jobs definieren konkrete Aufgaben innerhalb einer Stage:

yaml
job_name:
  stage: build
  script:
    - echo "Build commands"
  only:
    - master

Runner

GitLab Runner führen die Pipeline-Jobs aus.

Verfügbare Runner (Instance-Level)

Alle Runner sind selbst gehostet und als Instance Runner konfiguriert:

RunnerPlattformVersionJobs ausgeführtStatus
build-docker01DockerLatest734Online
build-ubuntu-2404-64Ubuntu 24.04Latest759Online
build-debian-12-64Debian 1218.5.056Online
build-ubuntu-2204-64Ubuntu 22.0418.5.01000+Online
build-windows-10-64Windows 1018.5.0499Online
build-debian-11-64Debian 1118.5.0196Online
build-ubuntu-2004-64Ubuntu 20.0418.5.01000+Online

Empfehlungen:

  • Docker-Builds: build-docker01
  • PHP/Composer: build-ubuntu-2204-64 oder build-ubuntu-2404-64
  • Windows-Builds: build-windows-10-64
  • Legacy-Projekte: Passende Debian/Ubuntu Version wählen

Runner-Auswahl in Jobs:

yaml
job_name:
  tags:
    - build-ubuntu-2204-64
  script:
    - ./build.sh

Artifacts

Artifacts sind Dateien, die zwischen Jobs weitergegeben werden:

yaml
build:
  script:
    - make build
  artifacts:
    paths:
      - build/
    expire_in: 1 week

Cache

Cache beschleunigt Builds durch Wiederverwendung von Dependencies:

yaml
cache:
  paths:
    - node_modules/
    - vendor/

Variables

Umgebungsvariablen für Konfiguration und Secrets:

yaml
variables:
  DATABASE_URL: "postgres://localhost"

Sensitive Daten werden in GitLab UI unter Settings → CI/CD → Variables verwaltet.

Deployment-Strategien

Branch-basiertes Deployment

  • master → Development/Staging
  • Tags (z.B. v1.0.0) → Production
  • Feature Branches → Review Apps (via MR Staging)

Environment-basiert

yaml
deploy_staging:
  stage: deploy
  script:
    - deploy-script staging
  environment:
    name: staging
    url: https://staging.example.com
  only:
    - develop

deploy_production:
  stage: deploy
  script:
    - deploy-script production
  environment:
    name: production
    url: https://example.com
  only:
    - tags
  when: manual

GitLab Components

GitLab Components sind wiederverwendbare CI/CD-Bausteine, die in mehreren Projekten eingesetzt werden können. Die ITeas-eigenen Components sind im Repository gitlab-components verfügbar.

Components werden über include in die .gitlab-ci.yml eingebunden:

yaml
include:
  - component: git.styrion.net/iteas/gitlab-components/<component-name>@main
    inputs:
      # component-spezifische Inputs

Verfügbare Components

ComponentBeschreibungDokumentation
mr-stagingReview Apps für Merge Requests auf einem Staging-ServerMR Staging
vault-secretsSecrets aus HashiCorp Vault in die Pipeline ladenVault Secrets
vault-sshSSH-Keys über Vault generieren und signierenVault SSH
code-signingAuthenticode-Signierung von Windows-Binaries via Azure Trusted SigningCode Signing

Best Practices

Pipeline-Optimierung

  • Cache für Dependencies nutzen
  • Artifacts nur für notwendige Dateien
  • Jobs parallelisieren wo möglich
  • Docker Images verwenden für konsistente Umgebungen

Sicherheit

  • Secrets niemals in .gitlab-ci.yml hardcoden – stattdessen Vault Secrets verwenden
  • Protected Variables für sensible Daten
  • Protected Branches für Production-Deployments
  • Manual approval für kritische Deployments
  • SSH-Keys nicht statisch speichern – stattdessen Vault SSH nutzen

Debugging

yaml
job_name:
  script:
    - echo "Debug output"
  artifacts:
    when: on_failure
    paths:
      - logs/

Bedingungen

yaml
job_name:
  rules:
    - if: '$CI_COMMIT_BRANCH == "master"'
      when: always
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
      when: manual
    - when: never

Pipeline-Trigger

Automatisch

  • Push zu Branch
  • Merge Request (mit Labels für spezifische Jobs)
  • Tag erstellen

Manuell

yaml
deploy:
  when: manual

Scheduled

Pipelines können zeitgesteuert über CI/CD → Schedules ausgeführt werden.

Monitoring

Pipeline-Status

  • Pipeline-Übersicht: CI/CD → Pipelines
  • Job-Logs: Klick auf Job in Pipeline-Ansicht
  • Environment-Status: Operations → Environments (inkl. Review-App-URLs)

Notifications

Konfigurierbar unter Settings → Integrations:

  • Email
  • Slack
  • Microsoft Teams
  • Webhooks

Weitere Ressourcen

Iteas Tools Integration Platform Version v1.0.21

Version: v1.0.21 Version: v1.0.21
Commit: 7a0e1c11
Deployed at: 2026-09-24T13:56:52Z