Para crear una canalización de integración continua y entrega continua (Continuous Integration And Continuous Delivery, CICD) en Code Stream, puede utilizar la plantilla de canalización inteligente de CICD. Para planificar una compilación nativa de CICD, recopile la información que necesita para rellenar la plantilla de canalización inteligente antes de utilizarla para crear la canalización en este plan de ejemplo.

Después de introducir la información en la plantilla de canalización inteligente y guardarla, la plantilla crea una canalización que incluye etapas y tareas. También indica dónde implementar la imagen en función de los tipos de entorno que seleccione, como desarrollo y producción. La canalización publicará la imagen de Docker y realizará las acciones necesarias para ejecutarla. Después de ejecutar la canalización, puede supervisar las tendencias en las ejecuciones de la canalización.

Para crear una canalización de CICD, es necesario planificar las etapas de integración continua (Continuous Integration, CI) y de entrega continua (Continuous Delivery, CD) de esa canalización.

Cuando una canalización incluye una imagen de Docker Hub, debe asegurarse de que la imagen tenga una cURL integrada antes de ejecutar la canalización. Cuando se ejecuta la canalización, vRealize Automation Code Stream descarga un archivo binario que utiliza cURL para ejecutar los comandos.

Planificación de la etapa de integración continua (Continuous Integration, CI)

Para planificar la etapa de integración continua de la canalización, configurará los requisitos internos y externos, y determinará la información que se debe introducir en la parte de CI de la plantilla de canalización inteligente. A continuación se resume la planificación.

Repositorios y endpoints locales remotos o basados en la nube que necesitará:

  • Un repositorio de código fuente de Git donde los desarrolladores comprueban el código. Code Stream extrae el código más reciente a la canalización cuando los desarrolladores confirman cambios.
  • Un endpoint de Git para el repositorio donde reside el código fuente del desarrollador.
  • Un endpoint de Docker para el host de compilación de Docker que ejecutará los comandos de compilación dentro de un contenedor.
  • Un endpoint de Kubernetes para que Code Stream pueda implementar la imagen en un clúster de Kubernetes.
  • Una imagen de Builder que crea el contenedor donde se ejecutan las pruebas de integración continua.
  • Un endpoint del registro de imágenes del que el host de compilación de Docker extrae la imagen de Builder.

Necesitará acceso a un proyecto. El proyecto agrupa todo el trabajo, incluidos la canalización, los endpoints y los paneles de control. Compruebe si es un miembro de un proyecto en Code Stream. Si no lo es, solicite al administrador de Code Stream que lo agregue como miembro de un proyecto. Consulte Cómo agregar un proyecto en VMware Code Stream.

Necesitará un webhook de Git que permita a Code Stream utilizar el activador de Git para activar la canalización cuando los desarrolladores confirmen cambios de código. Consulte Cómo usar el activador de Git en Code Stream para ejecutar una canalización.

Sus conjuntos de herramientas de compilación:

  • Su tipo de compilación, como Maven.
  • Todas las herramientas de compilación posteriores al proceso que utilice, como JUnit, JaCoCo, Checkstyle y FindBugs.

Su herramienta de publicación:

  • Una herramienta como Docker que implementará el contenedor de compilación.
  • Una etiqueta de imagen, que puede ser el identificador de confirmación o el número de compilación.

Su área de trabajo de compilación:

  • Un host de compilación de Docker, que es el endpoint de Docker.
  • Un registro de imágenes. La parte de integración continua de la canalización extrae la imagen del endpoint del registro seleccionado. El contenedor ejecuta las tareas de integración continua e implementa la imagen. Si el registro necesita credenciales, primero debe crear un endpoint del registro de imágenes y, seguidamente, seleccionarlo para que el host pueda extraer la imagen del registro.
  • URL de la imagen de Builder que crea el contenedor donde se ejecutan las tareas de integración continua.

Planificación de la etapa de entrega continua

Para planificar la etapa de entrega continua de la canalización, configurará los requisitos internos y externos, y determinará la información que se debe introducir en la parte de CD de la plantilla de canalización inteligente.

Endpoints locales remotos o basados en la nube que necesitará:

  • Un endpoint de Kubernetes para que Code Stream pueda implementar la imagen en un clúster de Kubernetes.

Tipos de entorno y archivos:

  • Todos los tipos de entorno donde Code Stream implementará la aplicación, como desarrollo y producción. La plantilla de canalización inteligente crea las etapas y las tareas en la canalización en función de los tipos de entorno que seleccione.
    Tabla 1. Etapas de canalización que la plantilla de canalización inteligente de CICD crea
    Contenido de la canalización Qué función tiene
    Etapa de compilación y publicación El código se compila y comprueba, la imagen de Builder se crea y se publica en el host de Docker.
    Etapa de desarrollo Se usa un clúster de Amazon Web Services (AWS) de desarrollo para crear e implementar la imagen. En esta etapa se puede crear un espacio de nombres en el clúster y crear una clave secreta.
    Etapa de producción Utiliza una versión de producción de VMware Tanzu Kubernetes Grid Integrated Edition (anteriormente conocido como VMware Enterprise PKS) para implementar la imagen en un clúster de producción de Kubernetes.
  • Un archivo YAML de Kubernetes que se selecciona en la parte de entrega continua de la plantilla de canalización inteligente de CICD.

    El archivo YAML de Kubernetes incluye tres secciones necesarias para Espacio de nombres, Servicio e Implementación, y una sección opcional para Secreto. Si tiene pensado crear una canalización mediante la descarga de una imagen de un repositorio de propiedad privada, debe incluir una sección con el secreto de configuración de Docker. Si la canalización que crea solo utiliza imágenes disponibles públicamente, no se requiere ningún secreto. El siguiente archivo YAML de ejemplo incluye cuatro secciones.

    apiVersion: v1
    kind: Namespace
    metadata:
      name: codestream
      namespace: codestream
    ---  
    apiVersion: v1
    data:
      .dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2luZ1234567890lci5pby92MS8iOnsidXNlcm5hbWUiOiJhdXRvbWF0aW9uYmV0YSIsInBhc3N3b3JkIjoiVk13YXJlQDEyMyIsImVtYWlsIjoiYXV0b21hdGlvbmJldGF1c2VyQGdtYWlsLmNvbSIsImF1dGgiOiJZWFYwYjIxaGRHbHZibUpsZEdFNlZrMTNZWEpsUURFeU13PT0ifX19
    kind: Secret
    metadata:
      name: dockerhub-secret
      namespace: codestream
    type: kubernetes.io/dockerconfigjson
    ---   
    apiVersion: v1
    kind: Service
    metadata:
      name: codestream-demo
      namespace: codestream
      labels:
        app: codestream-demo
    spec:
      ports:
        - port: 80
      selector:
        app: codestream-demo
        tier: frontend
      type: LoadBalancer 
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: codestream-demo
      namespace: codestream
      labels:
        app: codestream-demo
    spec:
      replicas: 10
      selector:
        matchLabels:
          app: codestream-demo
          tier: frontend
      template:
        metadata:
          labels:
            app: codestream-demo
            tier: frontend
        spec:
          containers:
          - name: codestream-demo
            image: automationbeta/codestream-demo:01
            ports:
            - containerPort: 80
              name: codestream-demo
          imagePullSecrets:
          - name: dockerhub-secret
    Nota: El archivo YAML de Kubernetes también se utiliza en la plantilla de canalización inteligente de CD, como en los siguientes ejemplos de casos prácticos:

    Para aplicar el archivo en la Plantilla inteligente, haga clic en Seleccionar y seleccione el archivo YAML de Kubernetes. Luego haga clic en Procesar. La plantilla de canalización inteligente muestra los servicios y los entornos de implementación disponibles. Debe seleccionar un servicio, el endpoint del clúster y la estrategia de implementación. Por ejemplo, para usar el modelo de implementación Canary, seleccione Canary e introduzca el porcentaje de la fase de la implementación.

    La plantilla de canalización inteligente puede procesar las implementaciones de entrega continua e integración continua Canary, actualización gradual y azul-verde.

Cómo crear la canalización de CICD mediante la plantilla de canalización inteligente

Después de recopilar toda la información y configurar lo que necesite, siga este procedimiento para crear una canalización a partir de la plantilla de canalización inteligente de CICD.

En Canalizaciones, debe seleccionar Nueva canalización > Plantillas inteligentes.

Cuando cree una canalización, puede usar una plantilla de canalización inteligente.

Seleccione la plantilla de canalización inteligente de CICD.

Puede crear una canalización de integración continua y entrega continua haciendo clic en la tarjeta de plantilla de la canalización inteligente de CICD.

Debe rellenar la plantilla y guardar la canalización con las etapas que se hayan creado. Si necesita rematar con algún cambio, puede editar la canalización y guardarla.

La plantilla de canalización inteligente de CICD crea la canalización con etapas que compilan y publican la aplicación, y la distribuye a entornos de desarrollo y producción.

A continuación, deberá habilitar la canalización y ejecutarla. Tras ejecutarla, estas son algunas de las cosas que puede buscar:

  • Compruebe que la canalización se haya completado correctamente. Haga clic en Ejecuciones y busque la canalización. Si se produjeron errores, corríjalos y vuelva a ejecutarla.
  • Compruebe que el webhook de Git esté funcionando correctamente. La pestaña Actividad de Git muestra los eventos. Haga clic en Activadores > Git > Actividad.
  • Observe el panel de control de la canalización y examine las tendencias. Haga clic en Paneles de control y busque el panel de control de la canalización. También puede crear un panel de control personalizado para informar sobre KPI adicionales.

Para obtener un ejemplo detallado, consulte Cómo integrar de forma continua código de un repositorio de GitLab o GitHub en la canalización en VMware Code Stream.