Pour exécuter des tâches d'intégration continue et des tâches personnalisées, vous devez configurer un espace de travail pour votre pipeline Code Stream.

Dans l'espace de travail du pipeline, sélectionnez le Type Docker ou Kubernetes, puis fournissez le point de terminaison respectif. Les plates-formes Docker et Kubernetes gèrent l'intégralité du cycle de vie du conteneur que Code Stream déploie pour exécuter la tâche d'intégration continue (CI) ou la tâche personnalisée.

  • L'espace de travail Docker requiert le point de terminaison de l'hôte Docker, l'URL de l'image du générateur, le registre d'image, le répertoire de travail, le cache, les variables d'environnement, la limite de CPU et la limite de mémoire. Vous pouvez également créer un clone du référentiel Git.
  • L'espace de travail Kubernetes requiert le point de terminaison de l'API Kubernetes, l'URL de l'image du générateur, le registre d'image, l'espace de noms, le port de nœud, la réclamation de volume persistant (PVC), le répertoire de travail, les variables d'environnement, la limite de CPU et la limite de mémoire. Vous pouvez également créer un clone du référentiel Git.

La configuration de l'espace de travail de pipeline comporte de nombreux paramètres communs et d'autres paramètres spécifiques du type d'espace de travail, comme décrit dans le tableau suivant.

Tableau 1. Zones, détails et disponibilité de l'espace de travail
Sélection Description Détails et disponibilité
Type Type d'espace de travail. Disponible avec Docker ou Kubernetes.
Point de terminaison d'hôte Point de terminaison d'hôte sur lequel l'intégration continue (CI) et les tâches personnalisées s'exécutent.

Disponible avec l'espace de travail Docker lorsque vous sélectionnez le point de terminaison de l'hôte Docker.

Disponible avec l'espace de travail Kubernetes lorsque vous sélectionnez le point de terminaison d'API Kubernetes.

URL de l'image du générateur Nom et emplacement de l'image du générateur. Un conteneur est créé à l'aide de cette image sur l'hôte Docker et le cluster Kubernetes. Les tâches d'intégration continue (CI) et les tâches personnalisées s'exécutent à l'intérieur de ce conteneur.

Exemple : fedora:latest

L'image de générateur doit inclure curl ou wget.

Registre d'image Si l'image du générateur est disponible dans un registre et si le registre nécessite des informations d'identification, vous devez créer un point de terminaison de registre d'image, puis le sélectionner ici afin que l'image puisse être extraite du registre. Disponible avec les espaces de travail Docker et Kubernetes.
Répertoire de travail Le répertoire de travail est l'emplacement à l'intérieur du conteneur où les étapes de la tâche d'intégration continue (CI) s'exécutent, et l'emplacement où le code est cloné lorsqu'un Webhook Git déclenche une exécution de pipeline. Disponible avec Docker ou Kubernetes.
Espace de noms Si vous n'entrez pas d'espace de noms, Code Stream crée un nom unique dans le cluster Kubernetes que vous avez fourni. Spécifique à l'espace de travail Kubernetes.
Proxy

Pour communiquer avec l'espace de travail du cluster Kubernetes, Code Stream déploie une instance de proxy unique dans l'espace de noms codestream-proxy pour chaque cluster Kubernetes. Vous pouvez sélectionner le type NodePort ou LoadBalancer en fonction de la configuration du cluster.

L'option que vous sélectionnez dépend de la nature du cluster Kubernetes déployé.

  • En général, si l'URL du serveur d'API Kubernetes spécifiée dans le point de terminaison est exposée via l'un des nœuds principaux, sélectionnez NodePort.
  • Si l'URL du serveur d'API Kubernetes est exposée par un équilibrage de charge, tel qu'Amazon EKS (Elastic Kubernetes Service), sélectionnez LoadBalancer.
NodePort

Code Stream utilise le port de nœud pour communiquer avec le conteneur s'exécutant à l'intérieur du cluster Kubernetes.

Si vous ne sélectionnez pas de port, Code Stream utilise un port éphémère attribué par Kubernetes. Vous devez vous assurer que la configuration des règles de pare-feu autorise l'entrée vers la plage de ports éphémères (30000-32767).

Si vous entrez un port, vous devez vous assurer qu'aucun autre service du cluster ne l'utilise déjà et que le port est autorisé dans les règles de pare-feu.

Spécifique à l'espace de travail Kubernetes.
Réclamation de volume persistant

Fournit un moyen pour l'espace de travail Kubernetes de conserver les fichiers dans les exécutions de pipeline. Lorsque vous fournissez un nom de réclamation de volume persistant, il peut stocker les journaux, les artefacts et le cache.

Pour plus d'informations sur la création d'une réclamation de volume persistant, consultez la documentation Kubernetes à l'adresse https://kubernetes.io/docs/concepts/storage/persistent-volumes/.

Spécifique à l'espace de travail Kubernetes.
Variables d'environnement Les paires clé-valeur qui sont transmises ici seront disponibles pour toutes les tâches d'intégration continue (CI) et les tâches personnalisées d'un pipeline lors de son exécution.

Disponible avec Docker ou Kubernetes.

Les références aux variables peuvent être transmises ici.

Les variables d'environnement fournies dans l'espace de travail sont transmises à toutes les tâches d'intégration continue (CI) et aux tâches personnalisées dans le pipeline.

Si les variables d'environnement ne sont pas transmises ici, elles doivent être explicitement transmises à chaque tâche d'intégration continue (CI) et tâche personnalisée dans le pipeline.

Limites de CPU Limites des ressources de CPU pour le conteneur d'intégration continue (CI) ou le conteneur de tâches personnalisées. La valeur par défaut est 1.
Limites de mémoire Limites de mémoire pour le conteneur d'intégration continue (CI) ou le conteneur de tâches personnalisées. L'unité est Mo.
Clone Git Lorsque vous sélectionnez Clone Git et qu'un Webhook Git appelle le pipeline, le code est cloné dans l'espace de travail (conteneur). Si vous n'activez pas l'option Clone Git, vous devez configurer une autre tâche d'intégration continue (CI) explicite dans le pipeline pour d'abord cloner le code, puis effectuer d'autres étapes, telles que la génération et le test.
Cache

L'espace de travail Code Stream vous permet de mettre en cache un ensemble de répertoires ou de fichiers pour accélérer les exécutions de pipeline suivantes. Les exemples de ces répertoires incluent .m2 et npm_modules. Si vous n'avez pas besoin de la mise en cache des données entre les exécutions de pipeline. Une réclamation de volume persistant n'est pas nécessaire.

Les artefacts, tels que les fichiers ou les répertoires du conteneur, sont mis en cache pour une réutilisation avec les exécutions de pipeline. Par exemple, les dossiers node_modules ou .m2 peuvent être mis en cache. Cache accepte une liste de chemins d'accès.

Par exemple :

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

Spécifique du type d'espace de travail.

Dans l'espace de travail Docker, le cache est obtenu en utilisant un chemin partagé dans l'hôte Docker pour conserver les données, les artefacts et les journaux mis en cache.

Dans l'espace de travail Kubernetes, pour activer l'utilisation de Cache, vous devez fournir une réclamation de volume persistant. Dans le cas contraire, l'option Cache n'est pas disponible.

Lors de l'utilisation d'un point de terminaison d'API Kubernetes dans l'espace de travail de pipeline, Code Stream crée les ressources Kubernetes nécessaires, telles que ConfigMap, Secret et Pod, pour exécuter la tâche d'intégration continue (CI) ou la tâche personnalisée. Code Stream communique avec le conteneur à l'aide du port de nœud.

Pour partager des données entre des exécutions de pipeline, vous devez fournir une réclamation de volume persistant, et Code Stream montera la réclamation de volume persistant sur le conteneur pour stocker les données et l'utilisera pour les exécutions de pipeline suivantes.