Konfigurieren der CI Pipeline
In Codesphere ist die CI Pipeline das zentrale Infrastructure-as-Code-Rezept (IaC), das definiert, wie eine Landscape erstellt und deployed wird.
Diese Anleitung führt durch das Erstellen und Konfigurieren der Pipeline mithilfe der Datei ci.yml.
Was ist die ci.yml?
Die ci.yml stellt ein standardisiertes Format bereit, um die Landscape zu definieren. Sie dient als deklarative Konfiguration, die festlegt, wie das 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 die 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 Profile?
info
Ein CI Profile ist eine eindeutige Variante der ci.yml-Konfiguration. Beim Erstellen eines neuen Profils generiert Codesphere eine entsprechende Konfigurationsdatei im Projektstammverzeichnis (z. B. ci.dev.yml, ci.prod.yml).
Dies ermöglicht es, spezifisches Verhalten für unterschiedliche Umgebungen anzupassen:
- Build-Schritte: Ausführen bestimmter Tests oder Build-Skripte für unterschiedliche Stufen.
- Run-Befehle: Starten der App mit unterschiedlichen Flags (z. B.
--debugvs.--prod). - Services: Bereitstellen unterschiedlicher Services & Runtimes (z. B. ein dedizierter Redis für Prod vs. ein gemeinsam genutzter für Dev).
Mehr dazu unter CI Profiles
Auswahl eines CI Profile
Bevor die Schritte definiert werden, muss festgelegt werden, welches Profil bearbeitet wird. CI Profiles ermöglichen unterschiedliche Konfigurationen für unterschiedliche Umgebungen (z. B. Development vs. Production) innerhalb desselben Projekts.
- In der Seitenleiste zum Landscape Config Editor navigieren.
- Das CI Profile-Dropdown-Menü oben im Editor finden.
- Ein Profil auswählen: Ein vorhandenes Profil (z. B.
Default,devoderprod) zum Bearbeiten wählen.
hinweis
Alle im Editor vorgenommenen Änderungen (Hinzufügen von Schritten, Ändern von Ressourcen) gelten nur für das aktuell ausgewählte CI Profile.
Definieren der Schritte
info
Die Pipeline kann über die visuelle Oberfläche oder durch direktes Bearbeiten des Codes konfiguriert werden. Beide Optionen aktualisieren dieselbe zugrunde liegende Datei.
- Visual Editor
- Code Editor (YAML)
Verwenden des Visual Editor
Der Visual Editor unterteilt die Pipeline in zwei Hauptblöcke:

Application Setup (Prepare-Stufe)
Das Application Setup (bzw. die prepare-Stufe) ist eine optionale Phase, in der Schritte ausgeführt werden, die die Umgebung für das Deployment vorbereiten. Dazu gehört typischerweise das Installieren von Abhängigkeiten, das Erstellen 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 eines vollständigen Container-Rebuilds. Dies eignet sich ideal für schnelle Entwicklung, während Produktionsprofile diese Stufe häufig leer lassen, um die Integrität vorgefertigter, unveränderlicher Images zu wahren.
- Ausführungsumgebung: Schritte in dieser Stufe werden mit den Ressourcen des IDE Pods ausgeführt. Diese gemeinsam genutzte Compute-Umgebung ist für alle Vorbereitungen auf Dateisystemebene zuständig.
- Bash-Befehle: Unterstützt jeden Standard-Bash-Befehl. Auf + Add New Step klicken, um Logik wie
npm install,nix-envoder das Aufrufen eines Skripts im Dateibaum auszuführen – genau wie in einem lokalen Terminal. - Persistenz: Alle Änderungen innerhalb von
/home/user/app/bleiben über die gemeinsam genutzte Dateisystem-Bereitstellung hinweg erhalten. - Ausführungslogik: Da das Dateisystem persistent ist, muss die
prepare-Stufe nur ausgelöst 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, einschließlich z. B. über npm install oder pip install installierter Abhängigkeiten. Die Prepare-Stufe muss nicht bei jedem Deployment erneut ausgeführt werden.
Test-Stufe
Die separate „Test-Stufe" wurde aus der Pipeline entfernt. Test- und Linting-Befehle (z. B. npm test oder pytest) sollten nun direkt in die Application Setup-Schritte integriert werden.
Landscape Deployment (Run-Stufe)
Das Landscape Deployment (bzw. die run-Stufe) definiert die Orchestrierung der zusätzlichen Runtime- und Service-Instanzen, die die Anwendung benötigt. Services in dieser Stufe werden parallel bereitgestellt und verfügen über Self-Healing-Fähigkeiten, wobei die Schritte innerhalb jedes Service sequenziell ausgeführt werden.
- Service-Orchestrierung: Jeder Service arbeitet als unabhängige Infrastrukturkomponente (z. B. ein Webserver, Worker oder eine Datenbank). Mehr zu verfügbaren 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.
- Headless Services: HTTP-Router-Weiterleitungen zu bestehenden Endpunkten hinzufügen, ohne zusätzliche Ressourcen zu deployen. Mehr dazu unter Headless Services.
- Service-Konfiguration: Über die Einstellungen (Zahnrad-Symbol) technische Parameter definieren:
- Runtime Config: Der Start Command 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
Nach Abschluss der Konfigurationsbearbeitung:
- Auf Save Changes klicken oben rechts.
- Visual Editor aktualisieren: Der Visual Editor aktualisiert sich automatisch, um die Änderungen widerzuspiegeln.
- Schritte überprüfen: Zum Tab Execution Manager navigieren, um sicherzustellen, dass alle Schritte korrekt aufgelistet und konfiguriert sind.
Verwenden des Code Editor
Wer lieber mit Code arbeitet, klickt oben rechts im Editor-Panel auf die Schaltfläche Edit as File.
Eine grundlegende ci.yml besteht aus zwei Hauptstufen: prepare und run.
Prepare-Stufe
Diese Stufe wird unmittelbar nach dem Klonen des Codes ausgeführt. Sie dient dem Installieren von Abhängigkeiten und dem Erstellen des Projekts.
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. Die Prepare-Stufe muss nicht bei jedem Deployment erneut ausgeführt werden – nur wenn sich Build-Schritte ändern.
Test-Stufe
Die separate „Test-Stufe" wurde aus der Pipeline entfernt. Test- und Linting-Befehle (z. B. npm test oder pytest) sollten nun direkt in die Application Setup-Schritte integriert werden. Damit wird sichergestellt, dass der Code als Teil des Vorbereitungsprozesses validiert wird, bevor Services initialisiert werden.
Run-Stufe
Die run-Stufe definiert die Landscape-Services, die die Anwendung benötigt, die jeweils zu verwendenden Runtimes 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
Nach Abschluss der Konfigurationsbearbeitung:
- Save Changes:
Cmd + S/Ctrl + Sdrücken - Visual Editor aktualisieren: Den Visual Editor aktualisieren, um die Änderungen widerzuspiegeln
- Schritte überprüfen: Zum Tab Execution Manager navigieren, um sicherzustellen, dass alle Schritte korrekt aufgelistet und konfiguriert sind.