Stell dir einen Workflow vor, bei dem jede Codeänderung automatisch erstellt, getestet und für deine Benutzer(innen) bereitgestellt wird. Genau das macht CI/CD (Kontinuierliche Integration/Kontinuierliche Lieferung)! Mit CI/CD kannst du Fehler frühzeitig erkennen, die Qualität des Codes sicherstellen und Software schneller und häufiger bereitstellen.
Inhaltsverzeichnis
- Was ist CI/CD?
- Vorteile von GitLab CI/CD
- Die Elemente von GitLab CI/CD
- GitLab CI einrichten
- Beispiele für die CI/CD-Konfiguration
- GitLab Auto-DevOps
- CI/CD-Katalog
- CI-Vorlagen
- Entwicklung der nächsten Generation
- Reihe „Erste Schritte mit GitLab"
Was ist CI/CD?
- Kontinuierliche Integration ist eine Entwicklungsmethode, bei der Entwickler(innen) häufig, nach Möglichkeit mehrmals am Tag, Codeänderungen in ein gemeinsames Repository integrieren. Jede Integration wird dann durch einen automatisierten Build- und Testprozess überprüft, so dass die Teams Probleme frühzeitig erkennen können.
- Kontinuierliche Lieferung erweitert CI, indem sie die Bereitstellungspipeline automatisiert und dafür sorgt, dass dein Code immer in einem einsatzfähigen Zustand ist. Du kannst deine Anwendung mit einem einzigen Klick oder automatisch in verschiedenen Umgebungen (z. B. Staging, Produktion) bereitstellen.
- Kontinuierliche Bereitstellung geht noch einen Schritt weiter, indem sie jeden erfolgreichen Build automatisch für die Produktion bereitstellt. Dies erfordert ein hohes Maß an Vertrauen in deine automatisierten Tests und deinen Bereitstellungsprozess.
Vorteile von GitLab CI/CD
GitLab CI/CD ist ein leistungsstarkes, eingegliedertes System, das in GitLab integriert ist. Es bietet ein nahtloses Erlebnis für die Automatisierung deines gesamten Software-Entwicklungsprozesses. Mit GitLab CI/CD kannst du:
- Alles automatisieren: Erstelle, teste und stelle deine Anwendungen mit Leichtigkeit bereit.
- Bugs frühzeitig erkennen: Erkenne und behebe Fehler, bevor sie die Produktion erreichen.
- Schnelleres Feedback erhalten: Du erhältst sofortige Rückmeldung zu deinen Code-Änderungen.
- Die Zusammenarbeit verbessern: Arbeite mit automatisierten Workflows effektiver im Team zusammen.
- Die Bereitstellung beschleunigen: Veröffentliche Software schneller und häufiger.
- Risiken reduzieren: Minimiere Fehler bei der Bereitstellung und vermeide Rollbacks.
Die Elemente von GitLab CI/CD
.gitlab-ci.yml
: Diese YAML-Datei (nur in englischer Sprache verfügbar), die sich im Stammverzeichnis deines Projekts befindet, definiert deine CI/CD-Pipeline, einschließlich Phasen, Jobs und Runner.- GitLab Runner (nur in englischer Sprache verfügbar): Dieser Agent führt deine CI/CD-Jobs auf deiner Infrastruktur aus (z. B. auf physischen Computern, virtuellen Maschinen, Docker-Containern oder Kubernetes-Clustern).
- Phasen (nur in englischer Sprache verfügbar): Phasen definieren die Reihenfolge der Ausführung deiner Jobs (z. B. Erstellen, Testen und Bereitstellen).
- Jobs (nur in englischer Sprache verfügbar): Jobs sind einzelne Arbeitseinheiten innerhalb einer Phase (z. B. Code kompilieren, Tests ausführen und für das Staging bereitstellen).
GitLab CI einrichten
Die ersten Schritte mit GitLab CI sind einfach. Hier ist ein einfaches Beispiel für eine .gitlab-ci.yml
-Datei:
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Building the application..."
test_job:
stage: test
script:
- echo "Running tests..."
deploy_job:
stage: deploy
script:
- echo "Deploying to production..."
environment:
name: production
Diese Konfiguration definiert drei Phasen: „build“, „test“ und „deploy“. Jede Phase enthält einen Job, der ein einfaches Skript ausführt.
Beispiele für die CI/CD-Konfiguration
Sehen wir uns einige realistischere Beispiele an.
Erstellen und Bereitstellen einer Node.js-Anwendung
Die folgende Pipelinedefinition beschreibt die Verwendung von npm, um eine Node.js-Anwendung zu erstellen und zu testen, und dpl (nur in englischer Sprache verfügbar), um die Anwendung in Heroku bereitzustellen. In der Bereitstellungsphase der Pipeline werden die GitLab-CI/CD-Variablen (nur in englischer Sprache verfügbar) verwendet, mit denen Entwickler(innen) vertrauliche Informationen (z. B. Zugangsdaten) speichern und sicher in CI/CD-Prozessen verwenden können. In diesem Beispiel wird ein API-Schlüssel für die Bereitstellung in Heroku unter dem variablen Schlüsselnamen '$HEROKU_API_KEY` gespeichert, den das dpl-Tool verwendet.
stages:
- build
- test
- deploy
build:
stage: build
image: node:latest
script:
- npm install
- npm run build
test:
stage: test
image: node:latest
script:
- npm run test
deploy:
stage: deploy
image: ruby:latest
script:
- gem install dpl
- dpl --provider=heroku --app=$HEROKU_APP_NAME --api-key=$HEROKU_API_KEY
Bereitstellung in verschiedenen Umgebungen (Staging und Produktivumgebung)
GitLab bietet auch Umgebungen (nur in englischer Sprache verfügbar) mit CI/CD. Mit dieser Funktion können Benutzer(innen) die Bereitstellung von CI/CD auf Infrastrukturziele verfolgen. Im folgenden Beispiel fügt die Pipeline Phasen mit einer Umgebungseigenschaft für eine Staging- und eine Produktivumgebung hinzu. Während die Phase „deploy_staging“ ihr Skript immer ausführt, erfordert die Phase „deploy_production“ eine manuelle Genehmigung, um eine versehentliche Bereitstellung in der Produktionsumgebung zu verhindern.
stages:
- build
- test
- deploy_staging
- deploy_production
build:
# ...
test:
# ...
deploy_staging:
stage: deploy_staging
script:
- echo "Deploying to staging..."
environment:
name: staging
deploy_production:
stage: deploy_production
script:
- echo "Deploying to production..."
environment:
name: production
when: manual # Requires manual approval
GitLab Auto-DevOps
GitLab Auto-DevOps (nur in englischer Sprache verfügbar) vereinfacht CI/CD, indem es eine vordefinierte Konfiguration bereitstellt, mit der deine Anwendungen automatisch erstellt, getestet und bereitgestellt werden. Es nutzt bewährte Methoden und Branchenstandards, um deinen Workflow zu optimieren.
So aktivierst du Auto-DevOps:
- Gehe in deinem Projekt zu Einstellungen > CI/CD > Allgemeine Pipelines.
- Aktiviere die Option Auto-DevOps.
Auto-DevOps erkennt automatisch die Sprache und das Framework deines Projekts und konfiguriert die erforderlichen Build-, Test- und Bereitstellungsphasen. Du musst nicht einmal eine .gitlab-ci.yml
-Datei erstellen.
CI/CD-Katalog
Der CI/CD-Katalog (nur in englischer Sprache verfügbar) ist eine Liste von Projekten mit veröffentlichten CI/CD-Komponenten (nur in englischer Sprache verfügbar), die du zur Erweiterung deines CI/CD-Workflows nutzen kannst. Jeder kann ein Komponentenprojekt erstellen und es zum CI/CD-Katalog hinzufügen oder zu einem bestehenden Projekt beitragen, um die verfügbaren Komponenten zu verbessern. Die veröffentlichten Komponenten findest du im CI/CD-Katalog auf GitLab.com.
CI-Vorlagen
Du kannst auch deine eigenen CI-Vorlagen (nur in englischer Sprache verfügbar) erstellen, um CI/CD-Konfigurationen zu standardisieren und über mehrere Projekte hinweg wiederzuverwenden. Das fördert die Konsistenz und reduziert doppelte Arbeit.
So erstellst du eine CI-Vorlage:
- Erstelle eine
.gitlab-ci.yml
-Datei in einem eigenen Projekt oder Repository. - Definiere deine CI/CD-Konfiguration in der Vorlage.
- Verwende in der
.gitlab-ci.yml
-Datei deines Projekts das Schlüsselwortinclude
, um die Vorlage einzuschließen.
Entwicklung der nächsten Generation
GitLab CI/CD ist ein leistungsstarkes Tool, das deinen Workflow bei der Entwicklung verbessern kann. Wenn du die Konzepte von CI/CD verstehst, deine Pipelines konfigurierst und Funktionen wie Auto-DevOps, den CI/CD-Katalog und CI-Vorlagen nutzt, kannst du deinen gesamten Software-Entwicklungsprozess automatisieren und schneller und effizienter hochwertige Software liefern.
Willst du dein Wissen vertiefen? Registriere dich für die englischsprachigen Kurse der GitLab University. Du kannst auch sofort mit der kostenlosen 60-tägigen Testversion von GitLab Ultimate loslegen.
Reihe „Erste Schritte mit GitLab“
Weitere Artikel in unserer Serie „Erste Schritte mit GitLab“: