Konfiguration deiner CI-Pipeline
In Codesphere ist die CI-Pipeline das zentrale Infrastructure-as-Code-Rezept (IaC), das definiert, wie eine Landscape gebaut und deployt wird.
Diese Anleitung führt dich durch das Erstellen und Konfigurieren deiner Pipeline mithilfe der ci.yml-Datei.
Was ist die ci.yml?
Die ci.yml bietet ein standardisiertes Format zur Definition deiner Landscape. Sie dient als deklarative Konfiguration, die festlegt, wie dein Service-Mesh zusammengesetzt ist, welche Ressourcen jeder Service benötigt und wie sie miteinander orchestriert werden.
Die Datei besteht aus zwei Hauptabschnitten:
- prepare: Definiert die Runtime-Umgebung, installiert Abhängigkeiten und baut deine Anwendung. Diese Stufe bereitet das persistente, gemeinsam genutzte Dateisystem vor.
- run: Definiert die Deployment-Artefakte (Services), deren Rechenressourcen und deren Runtime-Konfiguration (Ports, Health Checks und Umgebungsvariablen).
Was ist ein CI-Profil?
info
Ein CI-Profil ist eine eindeutige Variante deiner ci.yml-Konfiguration. Wenn du ein neues Profil erstellst, generiert Codesphere eine entsprechende Konfigurationsdatei im Projekt-Root (z. B. ci.dev.yml, ci.prod.yml).
Dies ermöglicht es dir, bestimmte Verhaltensweisen für unterschiedliche Umgebungen anzupassen:
- Build-Schritte: Führe spezifische Tests oder Build-Skripte für verschiedene Stufen aus.
- Run-Befehle: Starte deine App mit unterschiedlichen Flags (z. B.
--debugvs.--prod). - Services: Starte unterschiedliche Services & Runtimes (z. B. ein dediziertes Redis für Prod im Vergleich zu einem gemeinsam genutzten für Dev).
Erfahre mehr über CI-Profile
Ein CI-Profil auswählen
Bevor du deine Schritte definierst, musst du festlegen, welches Profil du bearbeitest. CI-Profile ermöglichen unterschiedliche Konfigurationen für verschiedene Umgebungen (z. B. Development vs. Production) innerhalb desselben Projekts.
- Navigiere über die Seitenleiste zum Landscape Config Editor.
- Suche das CI-Profil-Dropdown-Menü oben im Editor.
- Profil auswählen: Wähle ein vorhandenes Profil (z. B.
Default,devoderprod) zur Bearbeitung aus.
hinweis
Alle Änderungen, die du im Editor vornimmst (Schritte hinzufügen, Ressourcen ändern), gelten nur für das aktuell ausgewählte CI-Profil.
Deine Schritte definieren
info
Du kannst deine Pipeline über die visuelle Oberfläche oder durch direktes Bearbeiten des Codes konfigurieren. Beide Optionen aktualisieren dieselbe zugrunde liegende Datei.
- Visueller Editor
- Code-Editor (YAML)
Verwendung des visuellen Editors
Der visuelle Editor unterteilt deine Pipeline in zwei Hauptblöcke:

Application Setup (Prepare-Stufe)
Das Application Setup (bzw. die prepare-Stufe) ist eine optionale Phase, die zum Ausführen von Schritten genutzt wird, die die Umgebung für das Deployment vorbereiten. Dies umfasst typischerweise das Installieren von Abhängigkeiten, das Bauen von Assets oder das Ausführen von Tests.
Codesphere ermöglicht die direkte Änderung eines persistenten Dateisystems, um Abhängigkeiten zu installieren oder Assets zu kompilieren, ohne den Aufwand vollständiger Container-Neuaufbauten. Dies ist ideal für schnelle Entwicklungszyklen, während Produktionsprofile diese Stufe oft leer lassen, um die Integrität vorab gebauter, unveränderlicher Images zu erhalten.
- Ausführungsumgebung: Schritte in dieser Stufe werden auf den Ressourcen des IDE-Pods ausgeführt. Diese gemeinsam genutzte Compute-Umgebung ist für alle Vorbereitungen auf Dateisystemebene verantwortlich.
- Bash-Befehle: Unterstützt jeden Standard-Bash-Befehl. Klicke auf + Add New Step, um Logik wie
npm install,nix-envoder den Aufruf eines Skripts in deinem Dateibaum auszuführen – genau wie in einem lokalen Terminal. - Persistenz: Alle Änderungen innerhalb von
/home/user/app/bleiben über die gemeinsam genutzte Dateisystem-Mountpunkt hinweg erhalten. - Ausführungslogik: Da das Dateisystem persistent ist, muss die
prepare-Stufe nur dann ausgeführt werden, wenn sich die Build-Logik oder die Abhängigkeiten ändern.
Persistentes Dateisystem
Änderungen am Dateisystem innerhalb von /home/user/app/ werden im persistenten und gemeinsam genutzten Dateisystem-Mount gespeichert. Dies umfasst z. B. Abhängigkeiten, die über npm install oder pip install installiert wurden. Du musst die Prepare-Stufe nicht bei jedem Deployment erneut ausführen.
Test-Stufe
Die separate „Test Stage“ wurde aus der Pipeline entfernt. Du solltest deine Test- und Linting-Befehle (z. B. npm test oder pytest) jetzt direkt in die Application Setup-Schritte integrieren.
Landscape Deployment (Run-Stufe)
Das Landscape Deployment (bzw. die run-Stufe) definiert die Orchestrierung der zusätzlichen Runtime- und Service-Instanzen, die deine Anwendung benötigt. Services in dieser Stufe werden parallel bereitgestellt und verfügen über Self-Healing-Funktionen, wobei die Schritte innerhalb jedes Services sequenziell ausgeführt werden.
- Service-Orchestrierung: Jeder Service arbeitet als unabhängige Infrastrukturkomponente (z. B. ein Webserver, Worker oder eine Datenbank). Erfahre mehr über verfügbare Runtimes.
- Self-Healing: Services werden von der Plattform überwacht; stürzt ein Prozess ab oder beendet sich unerwartet, versucht Codesphere automatisch, ihn neu zu starten.
- Service-Konfiguration: Nutze die Einstellungen (Zahnrad-Symbol), um technische Parameter festzulegen:
- Runtime-Konfiguration: Der Start-Befehl und das Basis-Image.
- Ressourcen: Zuweisung von Compute-Plänen.
- Netzwerk: Konfiguration interner Ports und deren Zuordnung zu öffentlichen oder privaten Routen.
Compute-Pläne
Für Private-Cloud-Installationen können die verfügbaren Compute-Pläne angepasst werden.
Validieren und Speichern
Sobald du mit der Bearbeitung deiner Konfiguration fertig bist:
- Klicke auf Save Changes oben rechts.
- Aktualisiere den visuellen Editor: Der visuelle Editor wird automatisch aktualisiert, um deine Änderungen widerzuspiegeln.
- Schritte überprüfen: Navigiere zum Tab Execution Manager, um sicherzustellen, dass alle deine Schritte korrekt aufgeführt und konfiguriert sind.
Verwendung des Code-Editors
Wenn du lieber mit Code arbeitest, klicke auf die Schaltfläche Edit as File oben rechts im Editor-Panel.
Eine grundlegende ci.yml besteht aus zwei Hauptstufen: prepare und run.
Prepare-Stufe
Diese Stufe wird unmittelbar nach dem Klonen deines Codes ausgeführt. Sie dient dazu, Abhängigkeiten zu installieren und dein Projekt zu bauen.
Beispiel:
prepare:
steps:
- name: Install Dependencies
command: npm install
- name: Build Application
command: npm run build
Persistentes Dateisystem
Änderungen am Dateisystem während der Prepare-Stufe werden im persistenten und gemeinsam genutzten Dateisystem-Mount gespeichert. Du musst die Prepare-Stufe nicht bei jedem Deployment erneut ausführen – nur, wenn sich die Build-Schritte ändern.
Test-Stufe
Die separate „Test Stage“ wurde aus der Pipeline entfernt. Du solltest deine Test- und Linting-Befehle (z. B. npm test oder pytest) jetzt direkt in die Application Setup-Schritte integrieren. Dadurch wird sichergestellt, dass dein Code als Teil des Vorbereitungsprozesses validiert wird, bevor die Services initialisiert werden.
Run-Stufe
Die run-Stufe definiert die Landscape-Services, die deine Anwendung benötigt, die spezifischen Runtimes, die sie verwenden sollen, sowie deren Orchestrierungsparameter. Services in dieser Stufe werden parallel ausgeführt und verfügen über automatisiertes Health-Monitoring, um Prozesse bei einem Fehler neu zu starten.
Beispiel:
type-sense-server:
steps:
- command: ./typesense-server --data-dir="$(pwd)"/typesense-data
--api-key=$TYPESENSE_API_KEY --enable-cors
healthEndpoint: http://localhost:8108/health
plan: 301
replicas: 1
volumeMounts:
- name: _workspace
mountPath: /home/user/app
workspacePath: typesense-data
network:
ports:
- port: 3000
isPublic: false
- port: 8108
isPublic: false
paths: []
env:
TYPESENSE_API_KEY: xyz
Validieren und Speichern
Sobald du mit der Bearbeitung deiner Konfiguration fertig bist:
- Änderungen speichern: drücke
Cmd + S/Ctrl + S - Aktualisiere den visuellen Editor: aktualisiere den visuellen Editor, um deine Änderungen widerzuspiegeln
- Schritte überprüfen: Navigiere zum Tab Execution Manager, um sicherzustellen, dass alle deine Schritte korrekt aufgeführt und konfiguriert sind.