Descripción general
Un canal de CI/CD consiste en una serie de pasos que deben ejecutarse en orden para distribuir la versión nueva de un sistema de software. Los canales de integración y distribución continuas (CI/CD) constituyen una práctica que se centra en mejorar la distribución de los sistemas de software por medio de un enfoque de DevOps o de ingeniería de confiabilidad del sitio (SRE).
Incorporan la supervisión y la automatización para optimizar el proceso de desarrollo de las aplicaciones, sobre todo en las etapas de integración y de prueba, así como en la distribución e implementación. Si bien cada uno de los pasos puede ejecutarse de forma manual, el verdadero valor del canal de CI/CD radica en la automatización.
Elementos de un canal de CI/CD
Los pasos de un canal de CI/CD son subconjuntos diferenciados de tareas agrupadas en lo que se conoce como etapas del canal. A continuación se mencionan algunas de las más habituales:
- Diseño: etapa en la que se compila la aplicación.
- Prueba: donde se pone a prueba el código. En este paso, la automatización permite ahorrar tiempo y esfuerzo.
- Lanzamiento: traslado de la aplicación al repositorio.
- Implementación: etapa en la que se lleva el código a la producción.
- Validación y cumplimiento: los pasos para validar un diseño dependen de las necesidades de la empresa. Las herramientas de revisión de la seguridad de las imágenes, como Clair, pueden garantizar la buena calidad de las imágenes al compararlas con los puntos vulnerables (CVE) conocidos.
Esta lista no comprende todas las etapas de un canal, sino las más comunes. Su canal dependerá de los requisitos de la empresa.
Los contenedores y los canales de CI/CD
Si bien los sistemas tradicionales de CI/CD están diseñados para los canales que utilizan máquinas virtuales, el desarrollo de aplicaciones directamente en la nube ofrece muchas ventajas para los canales de CI/CD. ¿Cómo es un canal de CI/CD con contenedores?
OpenShift Pipelines
OpenShift Pipelines es una función de Red Hat OpenShift basada en Tekton, el cual es un proyecto open source que ofrece un marco para crear canales nativos de la nube de CI/CD con rapidez. Este proyecto es un marco de CI/CD para las plataformas de Kubernetes que brinda una experiencia de CI/CD original de la nube estándar con los contenedores y, como tal, permite realizar implementaciones con mayor facilidad en varios proveedores de nube o entornos híbridos. Tekton se basa en las definiciones de recursos personalizados (CRD) de Kubernetes para usar el plano de control de este en la ejecución de las tareas del canal. Asimismo, utiliza las especificaciones estándar del sector para lograr la compatibilidad con las herramientas actuales de CI/CD, como Jenkins, Jenkins X, Skaffold y Knative.