Para ejecutar tareas de integración continua y tareas personalizadas, debe configurar un área de trabajo para la canalización de Code Stream. El área de trabajo admite endpoints de Docker y Kubernetes. Al configurar el área de trabajo de la canalización, debe incluir una imagen del compilador.

En el área de trabajo de la canalización, seleccione Docker o Kubernetes, e incluya el endpoint de host de Docker o el endpoint de host de Kubernetes. 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 host de Kubernetes, la URL de imagen del compilador, el registro de imágenes, el espacio de nombres, NodePort, la notificación de volumen persistente (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 host 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, primero 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.
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 las reglas de firewall estén configuradas para permitir la entrada al rango de puertos efímeros (30000-32767).

Si introduce un puerto, debe comprobar que no esté en uso en otro servicio del clúster y que esté permitido en las reglas de firewall.

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 la opción Clon de Git no está habilitada, debe configurar una tarea de integración continua (CI) explícita adicional 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 se requiere el almacenamiento en caché de datos entre ejecuciones de canalización, no es necesario proporcionar 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, Memoria caché se logra mediante una ruta compartida en el host de Docker para conservar los logs, los artefactos y los datos almacenados en caché.

En el área de trabajo de Kubernetes, puede utilizar Memoria caché solo cuando proporcione una notificación de volumen persistente. Si no la proporciona, la opción Memoria caché no está habilitada.

Cuando se utiliza un endpoint de Kubernetes en el área de trabajo de canalización, Code Stream crea los recursos de Kubernetes necesarios, como ConfigMap, Secreto y Pod, para ejecutar la tarea de integración continua (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.

En el área de trabajo de Kubernetes, cuando se utiliza un endpoint de host de Kubernetes local con autenticación basada en certificados, debe asegurarse de que el proxy de nube esté actualizado con la versión más reciente. De lo contrario, la autenticación podría presentar errores.