Para ejecutar tareas de integración continua y tareas personalizadas, debe configurar un área de trabajo para la canalización de Code Stream.

En el área de trabajo de la canalización, seleccione Docker o Kubernetes como Tipo y proporcione el endpoint correspondiente. Las plataformas de Docker y Kubernetes administran todo el ciclo de vida del contenedor que Code Stream implementa para ejecutar la tarea de integración continua (CI) o la tarea personalizada.

  • El área de trabajo de Docker requiere el endpoint de host de Docker, la URL de imagen del compilador, el registro de imágenes, el directorio de trabajo, la memoria caché, las variables de entorno, el límite de CPU y el límite de memoria. También puede crear un clon del repositorio de Git.
  • El área de trabajo de Kubernetes requiere el endpoint de API de Kubernetes, la URL de la imagen del compilador, el registro de imágenes, el espacio de nombres, NodePort, la notificación de volumen persistente (Persistent Volume Claim, PVC), el directorio de trabajo, las variables de entorno, el límite de CPU y el límite de memoria. También puede crear un clon del repositorio de Git.

La configuración del área de trabajo de la canalización tiene muchos parámetros comunes y otros parámetros que son específicos del tipo de área de trabajo, como se describe en la siguiente tabla.

Tabla 1. Áreas de trabajo, detalles y disponibilidad
Selección Descripción Detalles y disponibilidad
Tipo Tipo de área de trabajo. Disponible con Docker o Kubernetes.
Endpoint de host Endpoint de host donde se ejecutan la integración continua (Continuous Integration, CI) y las tareas personalizadas.

Disponible en el área de trabajo de Docker cuando se selecciona el endpoint de host de Docker.

Disponible en el área de trabajo de Kubernetes cuando se selecciona el endpoint de la API de Kubernetes.

URL de imagen de compilador Nombre y ubicación de la imagen del compilador. Se crea un contenedor mediante esta imagen en el host de Docker y el clúster de Kubernetes. Las tareas de integración continua (CI) y las tareas personalizadas se ejecutan dentro de este contenedor.

Ejemplo: fedora:latest

La imagen del compilador debe tener curl o wget.

Registro de imágenes Si la imagen del compilador está disponible en un registro y si el registro requiere credenciales, debe crear un endpoint del registro de imágenes y, a continuación, seleccionarlo aquí para que la imagen se pueda extraer del registro. Disponible con las áreas de trabajo de Docker y Kubernetes.
Directorio de trabajo El directorio de trabajo es la ubicación dentro del contenedor donde se ejecutan los pasos de la tarea de integración continua (CI), y es la ubicación en la que se clona el código cuando un webhook de Git activa la ejecución de una canalización. Disponible con Docker o Kubernetes.
Espacio de nombres Si no introduce un espacio de nombres, Code Stream crea un nombre único en el clúster de Kubernetes que proporcionó. Específico del área de trabajo de Kubernetes.
Proxy

Para comunicarse con el pod de área de trabajo en el clúster de Kubernetes, Code Stream implementa una única instancia de proxy en el espacio de nombres codestream-proxy para cada clúster de Kubernetes. Puede seleccionar el tipo NodePort o LoadBalancer, en función de la configuración del clúster.

La opción que seleccione dependerá de la naturaleza del clúster de Kubernetes implementado.

  • Por lo general, si la URL del servidor de la API de Kubernetes que se especifica en el endpoint se expone a través de uno de los nodos principales, seleccione NodePort.
  • Si un equilibrador de carga expone la URL del servidor de la API de Kubernetes, como con Amazon EKS (servicio de Kubernetes elástico), seleccione LoadBalancer.
NodePort

Code Stream utiliza NodePort para comunicarse con el contenedor que se ejecuta dentro del clúster de Kubernetes.

Si no selecciona un puerto, Code Stream utiliza un puerto efímero que Kubernetes asigna. Debe asegurarse de que la configuración de las reglas de firewall permita la entrada al rango de puertos efímeros (30000-32767).

Si introduce un puerto, debe asegurarse de que no lo esté utilizando otro servicio del clúster, y de que las reglas de firewall permitan el puerto.

Específico del área de trabajo de Kubernetes.
Solicitud de volumen persistente

Proporciona una forma de que el área de trabajo de Kubernetes persista en los archivos de las ejecuciones de la canalización. Cuando se proporciona un nombre de notificación de volumen persistente, este puede almacenar los logs, los artefactos y la memoria caché.

Para obtener más información sobre cómo crear una notificación de volumen persistente, consulte la documentación de Kubernetes en https://kubernetes.io/docs/concepts/storage/persistent-volumes/.

Específico del área de trabajo de Kubernetes.
Variables de entorno Los pares de clave-valor que se transmitan aquí estarán disponibles para todas las tareas de integración continua (CI) y las tareas personalizadas en una canalización cuando esta se ejecute.

Disponible con Docker o Kubernetes.

Aquí se pueden transferir referencias a variables.

Las variables de entorno proporcionadas en el área de trabajo se transfieren a todas las tareas de integración continua (CI) y las tareas personalizadas en la canalización.

Si las variables de entorno no se transfieren aquí, dichas variables se deben transferir explícitamente a cada tarea de integración continua (CI) y a la tarea personalizada en la canalización.

Límites de CPU Límites de recursos de CPU para el contenedor de integración continua (CI) o el contenedor de tareas personalizadas. El valor predeterminado es 1.
Límites de memoria Límites de memoria para el contenedor de integración continua (CI) o el contenedor de tareas personalizadas. La unidad es MB.
Clon de Git Cuando se selecciona Clon de git, y un webhook de Git invoca la canalización, el código se clona en el área de trabajo (contenedor). Si no habilita Clon de Git, debe configurar otra tarea de integración continua (CI) explícita en la canalización para clonar primero el código y, a continuación, realizar otros pasos, como compilar y probar.
Memoria caché

El área de trabajo de Code Stream permite almacenar en caché un conjunto de directorios o archivos para acelerar las ejecuciones de canalización posteriores. Algunos ejemplos de estos directorios son .m2 y npm_modules. Si no requiere que los datos se almacenen en caché entre ejecuciones de canalización, no es necesaria una notificación de volumen persistente.

Los artefactos, como archivos o directorios del contenedor, se almacenan en la memoria caché para volver a utilizarlos en ejecuciones de canalización. Por ejemplo, las carpetas node_modules o .m2 se pueden almacenar en la memoria caché. Memoria caché acepta una lista de rutas.

Por ejemplo:

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

Específico para el tipo de área de trabajo.

En el área de trabajo de Docker, la Memoria caché se logra mediante una ruta compartida en el host de Docker para conservar los datos, los artefactos y los logs almacenados en caché.

En el área de trabajo de Kubernetes, para habilitar el uso de la Memoria caché, debe proporcionar una notificación de volumen persistente. De lo contrario, la Memoria caché no está disponible.

Cuando se utiliza un endpoint de API de Kubernetes en el área de trabajo de la canalización, Code Stream crea los recursos de Kubernetes necesarios, como ConfigMap, Secret y Pod, para ejecutar la tarea de integración continua (continuous integration, CI) o la tarea personalizada. Code Stream se comunica con el contenedor mediante NodePort.

Para compartir datos entre ejecuciones de canalización, debe proporcionar una notificación de volumen persistente, y Code Stream montará la notificación de volumen persistente en el contenedor para almacenar los datos y utilizarla para ejecuciones de canalización posteriores.