Zur Ausführung von CI- (Continuous Integration) und benutzerdefinierten Aufgaben müssen Sie einen Arbeitsbereich für Ihre Code Stream-Pipeline konfigurieren.

Wählen Sie im Pipeline-Arbeitsbereich „Docker“ oder „Kubernetes“ als Typ aus und geben Sie den entsprechenden Endpoint an. Die Docker- und Kubernetes-Plattformen verwalten den gesamten Lebenszyklus des von Code Stream bereitgestellten Containers für die Ausführung der CI- (Continuous Integration) oder benutzerdefinierten Aufgabe.

  • Der Docker-Arbeitsbereich benötigt den Docker-Host-Endpoint, die Builder-Image-URL, die Image-Registrierung, das Arbeitsverzeichnis, den Cache, die Umgebungsvariablen sowie den CPU- und Arbeitsspeichergrenzwert. Sie können auch einen Klon des Git-Repositorys erstellen.
  • Der Kubernetes-Arbeitsbereich benötigt den Kubernetes-API-Endpoint, die Builder-Image-URL, die Image-Registrierung, den Namespace, den NodePort, PVC (Persistent Volume Claim, Beanspruchung eines persistenten Volumes), das Arbeitsverzeichnis, Umgebungsvariablen sowie den CPU- und Arbeitsspeichergrenzwert. Sie können auch einen Klon des Git-Repositorys erstellen.

Die Konfiguration des Pipeline-Arbeitsbereichs verfügt über viele gemeinsame sowie andere Parameter, die für den Arbeitsbereichstyp spezifisch sind. Diese werden in der folgenden Tabelle beschrieben.

Tabelle 1. Arbeitsbereiche, Details und Verfügbarkeit
Auswahl Beschreibung Details und Verfügbarkeit
Typ Typ des Arbeitsbereichs. Verfügbar mit Docker oder Kubernetes.
Host-Endpoint Host-Endpoint, auf dem die kontinuierliche Integration (CI) und benutzerdefinierte Aufgaben ausgeführt werden.

Verfügbar im Docker-Arbeitsbereich, wenn Sie den Docker-Host-Endpoint auswählen.

Verfügbar im Kubernetes-Arbeitsbereich, wenn Sie den Kubernetes-API-Endpoint auswählen.

URL des Builder-Images Name und Speicherort des Builder-Images. Ein Container wird mithilfe dieses Images auf dem Docker-Host und dem Kubernetes-Cluster erstellt. Die CI- (Continuous Integration) und benutzerdefinierten Aufgaben werden in diesem Container ausgeführt.

Beispiel: fedora:latest

Das Builder-Image muss über curl oder wget verfügen.

Image-Registrierung Wenn das Builder-Image in einer Registrierung verfügbar ist und die Registrierung Anmeldedaten erfordert, müssen Sie einen Image-Registrierungs-Endpoint erstellen und hier auswählen, damit das Image aus der Registrierung abgerufen werden kann. Verfügbar in den Docker- und Kubernetes-Arbeitsbereichen.
Arbeitsverzeichnis Beim Arbeitsverzeichnis handelt es sich um den Speicherort innerhalb des Containers, in dem die Schritte der CI-Aufgabe (Continuous Integration) ausgeführt werden, sowie um den Speicherort, in dem der Code geklont wird, wenn ein Git-Webhook eine Pipeline-Ausführung auslöst. Verfügbar mit Docker oder Kubernetes.
Namespace Wenn Sie keinen Namespace eingeben, erstellt Code Stream einen eindeutigen Namen im angegebenen Kubernetes-Cluster. Spezifisch für den Kubernetes-Arbeitsbereich.
Proxy

Für die Kommunikation mit dem Arbeitsbereichs-Pod im Kubernetes-Cluster stellt Code Stream für jeden Kubernetes-Cluster eine einzelne Proxy-Instanz im Namespace codestream-proxy bereit. Sie können basierend auf der Clusterkonfiguration entweder den Typ NodePort oder LoadBalancer auswählen.

Welche Option Sie auswählen, hängt von der Art des bereitgestellten Kubernetes-Clusters ab.

  • Wenn die URL des Kubernetes-API-Servers, die im Endpoint angegeben wird, in der Regel über einen der primären Knoten verfügbar gemacht wird, wählen Sie NodePort aus.
  • Wenn die URL des Kubernetes-API-Servers von einem Lastausgleichsdienst verfügbar gemacht wird, beispielsweise mit Amazon EKS (Elastic Kubernetes Service), wählen Sie LoadBalancer aus.
NodePort

Code Stream verwendet NodePort für die Kommunikation mit dem Container, der innerhalb des Kubernetes-Clusters ausgeführt wird.

Wenn Sie keinen Port auswählen, verwendet Code Stream einen flüchtigen von Kubernetes zugewiesenen Port. Sie müssen sicherstellen, dass die Konfiguration von Firewallregeln eingehenden Datenverkehr im Bereich (30000- 32767) des flüchtigen Ports zulässt.

Bei der Eingabe eines Ports müssen Sie sicherstellen, dass er nicht bereits von einem anderen Dienst im Cluster verwendet wird und dass die Firewallregeln den Port zulassen.

Spezifisch für den Kubernetes-Arbeitsbereich.
Beanspruchung eines persistenten Volumes

Ermöglicht dem Kubernetes-Arbeitsbereich, Dateien über Pipeline-Ausführungen hinweg beizubehalten. Wenn Sie einen Beanspruchungsnamen für ein persistentes Volume angeben, können die Protokolle, Artefakte und der Cache gespeichert werden.

Weitere Informationen zum Erstellen einer Beanspruchung eines persistenten Volumes finden Sie in der Kubernetes-Dokumentation unter https://kubernetes.io/docs/concepts/storage/persistent-volumes/.

Spezifisch für den Kubernetes-Arbeitsbereich.
Umgebungsvariablen An dieser Stelle übergebene Schlüssel-Wert-Paare stehen allen CI- (Continuous Integration) und benutzerdefinierten Aufgaben in einer Pipeline zur Verfügung, wenn diese ausgeführt wird.

Verfügbar mit Docker oder Kubernetes.

Verweise auf Variablen können hier übergeben werden.

Im Arbeitsbereich bereitgestellte Umgebungsvariablen werden an alle CI- (Continuous Integration) und benutzerdefinierten Aufgaben in der Pipeline übergeben.

Wenn Umgebungsvariablen nicht an dieser Stelle übergeben werden, müssen diese Variablen explizit an jede CI- (Continuous Integration) und benutzerdefinierte Aufgabe in der Pipeline übergeben werden.

CPU-Grenzwerte Grenzwerte für CPU-Ressourcen für den CI-Container (Continuous Integration) oder den Container mit benutzerdefinierten Aufgaben. Der Standardwert ist 1.
Arbeitsspeichergrenzwerte Arbeitsspeichergrenzwerte für den CI-Container (Continuous Integration) oder den Container mit benutzerdefinierten Aufgaben. Die Einheit ist MB.
Git-Klon Bei Auswahl von Git-Klon und Aufruf der Pipeline mittels eines Git-Webhooks wird der Code in den Arbeitsbereich (Container) geklont. Wenn Sie Git-Klon nicht aktivieren, müssen Sie eine andere, explizite CI-Aufgabe (Continuous Integration) in der Pipeline konfigurieren, um zuerst den Code zu klonen und dann andere Schritte durchzuführen, wie z. B. Build und Test.
Cache

Im Code Stream-Arbeitsbereich können Sie eine Reihe von Verzeichnissen oder Dateien zwischenspeichern, um nachfolgende Pipeline-Ausführungen zu beschleunigen. Zu den Beispielen für diese Verzeichnisse gehören .m2 und npm_modules. Wenn Sie keine Zwischenspeicherung von Daten zwischen Pipeline-Ausführungen benötigen, ist keine Beanspruchung eines persistenten Volumes erforderlich.

Artefakte wie Dateien oder Verzeichnisse im Container werden für die erneute Verwendung über Pipeline-Ausführungen hinweg zwischengespeichert. Beispiel: Der Ordner node_modules oder .m2 kann zwischengespeichert werden. Cache akzeptiert eine Liste von Pfaden.

Beispiel:

workspace:
  type: K8S
  endpoint: K8S-Micro
  image: fedora:latest
  registry: Docker Registry
  path: ''
  cache:
    - /path/to/m2
    - /path/to/node_modules

Spezifisch für den Typ des Arbeitsbereichs.

Im Docker-Arbeitsbereich erreichen Sie den Cache mithilfe eines gemeinsam genutzten Pfads im Docker-Host zur Beibehaltung der zwischengespeicherten Daten, Artefakte und Protokolle.

Um im Kubernetes-Arbeitsbereich die Verwendung des Cache zu aktivieren, müssen Sie eine Beanspruchung eines persistenten Volumes angeben. Andernfalls ist der Cache nicht verfügbar.

Wenn Sie einen Kubernetes-API-Endpoint im Arbeitsbereich der Pipeline verwenden, erstellt Code Stream die erforderlichen Kubernetes-Ressourcen, wie z. B. ConfigMap, geheimen Schlüssel und Pod, um die CI- (Continuous Integration) oder benutzerdefinierte Aufgabe auszuführen. Code Stream kommuniziert mit dem Container über den NodePort.

Zur Freigabe von Daten über Pipeline-Ausführungen hinweg müssen Sie eine Beanspruchung eines persistenten Volumes bereitstellen. Code Stream mountet die Beanspruchung eines persistenten Volumes dann auf den Container, um die Daten zu speichern und für nachfolgende Pipeline-Ausführungen zu verwenden.