Herramientas CI/CD en la Plataforma Pre-Cloud

Contenido

Una plataforma de integración continua (CI) y entrega continua (CD) es un conjunto de herramientas y procesos utilizados para automatizar las distintas etapas del ciclo de vida de un proyecto software, tales como compilación, pruebas, despliegue, etc. Esto permite a los desarrolladores detectar y corregir errores y problemas de forma temprana en el ciclo de vida del desarrollo, mejorando la calidad del software y aumentando la eficiencia del equipo de desarrollo.

 

Una plataforma de CI/CD suele incluir elementos como:

  • Control de versiones para rastrear los cambios en el código fuente
  • Herramientas de construcción para compilar el código y generar paquetes ejecutables
  • Sistemas de automatización de pruebas para ejecutar pruebas unitarias, de integración, etc.
  • Integración con herramientas para validar distintos aspectos relacionados con la calidad y seguridad del software desarrollado.
  • Integración con herramientas de despliegue para automatizar el proceso de desplegar el software en diferentes entornos
  • etc.

La idea principal  es permitir que los desarrolladores integren y validen su trabajo de manera continua y automatizada, lo que permite detectar y resolver problemas en fases iniciales, aumentando la confiabilidad y calidad del software  permitiendo así un proceso de entrega más rápido y eficiente. A continuación se enumeran las principales herramientas utilizadas en el proceso de CI/CD en la Plataforma Pre-Cloud y sus enlaces.

Enlaces

HerramientaEnlace
GitLab - Repositorio de Códigohttps://fuentes.juntadeandalucia.es/
Artifactory - Repositorio de Artefactoshttps://binarios.juntadeandalucia.es/artifactory/ja-internal
Tekton - Motor de Integración Continuahttps://console-openshift-console.apps.paas-pro.junta-andalucia.es/
ArgoCD - Motor de Entrega Continuahttps://argocd.apps.paas-pro.junta-andalucia.es

Los enlaces anteriores solo están accesibles desde RCJA (Red Corporativa de la Junta de Andalucía)

Repositorio de Código (GitLab)

El repositorio de código es el lugar donde se custodiará y se versionará el código fuente del software desarrollado. Está basado en GitLab, que es una plataforma de código abierto para el control de versiones y la gestión de proyectos de desarrollo. Ofrece características como repositorio de código, seguimiento de errores, integración continua y despliegue, gestión de tareas, almacenamiento de documentos y colaboración en equipo. Es compatible con Git, el sistema de control de versiones más popular, y se puede utilizar tanto en instalaciones locales como en la nube. GitLab es ampliamente utilizado en la industria para colaborar y automatizar procesos de desarrollo de software.

Todo componente software desarrollado estará ubicado en el repositorio de código GitLab. Se tiene que utilizar dentro de RCJA, si se utiliza desde fuera será necesario conexión vía VPN.

Para más información consultar ¿Qué es el Repositorio de Código asociado a la Plataforma Pre-Cloud y cómo se usa?

Repositorio de Artefactos (Jfrog Artifactory)

El repositorio de artefactos es el lugar donde se custodiarán y se distribuirán los binarios del software construido. Adicionalmente, contendrá y podrá distribuir todo el software de terceros necesario para la construcción de proyectos software. Está basado en Jfrog Artifactory, que es un sistema de almacenamiento y gestión de paquetes de código abierto. Sirve como un repositorio central para almacenar y compartir paquetes de software, incluyendo artefactos de construcción de aplicaciones, librerías y dependencias. Además, permite la integración con herramientas de automatización de construcción y despliegue, y proporciona características de seguridad y cumplimiento. Artifactory es ampliamente utilizado en la industria para simplificar el proceso de distribución y actualización de paquetes de software, y para mejorar la colaboración en equipos de desarrollo.

Todos los componentes construidos y necesarios para la construcción de otros componentes, estarán ubicados en el repositorio de artefactos. Se tiene que utilizar dentro de RCJA, si se utiliza desde fuera será necesario conexión vía VPN.

Para más información consultar ¿Qué es el Repositorio de Artefactos asociado a la Plataforma Pre-Cloud y cómo se usa?

Pipeline integración continua (CI)

Un pipeline de integración continua es una práctica clave en el desarrollo de software que se utiliza para automatizar y simplificar el proceso de integración, pruebas y entrega de código a lo largo del ciclo de vida de desarrollo de una aplicación. El objetivo principal de un pipeline de integración continua es detectar y abordar problemas de manera temprana en el desarrollo de software, lo que mejora la calidad del código y acelera la entrega de software funcional y confiable. A continuación, se detallan algunos componentes adicionales con los que se interacciona y cómo funciona en general:

  • Control de Versiones: Un sistema de control de versiones, como Git, se utiliza para gestionar los cambios en el código fuente y colaborar de manera efectiva en un equipo de desarrollo.
  • Motor de Integración Continua: Se utiliza un motor de integración continua, como Jenkins,  GitLab CI/CD, o Tekton, que automatiza una serie de tareas relacionadas con el ciclo de vida de sofware (como construcción y pruebas).
  • Herramientas adicionales: Se utilizan herramientas adicionales (como SonarQube, DependencyTrack, etc), para realizar pruebas exhaustivas al software y obtener información de estado sobre la calidad del mismo, posibles vulnerabilidades identificadas en las dependencias utilizadas, etc.

Para más información consultar Fases que deben conformar el pipeline

Motor de Integración Continua (Tekton)

Como motor de integración continua se utiliza Tekton. Tekton es un sistema de automatización de construcción y despliegue de código abierto.

Se utiliza para automatizar tareas comunes en el ciclo de vida de una aplicación software, tales como, construcción, lanzamiento de pruebas (unitarias, integración, interfaz, etc), construcción de imágenes de contenedores, etc. Orquestará todo el proceso de integración continua. Tekton es nativo en Kubernetes, lo que significa que está diseñado específicamente para funcionar en entornos de Kubernetes y utiliza las características propias del orquestador para automatizar tareas relacionadas con la construcción y el despliegue de software.

Motor de Entrega Continua (ArgoCD)

ArgoCD es una herramienta de código abierto para la gestión de aplicaciones en Kubernetes. Es un sistema de entrega continua (CD) que ayuda a los equipos a automatizar el despliegue y a la actualización de aplicaciones en un cluster de Kubernetes. Algunas de las características clave de ArgoCD incluyen:

  • Sincronización en tiempo real: monitorea los repositorios de código y sincroniza automáticamente los cambios con el cluster de Kubernetes.
  • Control de versiones: permite a los equipos controlar las versiones de las aplicaciones desplegadas y revertir a versiones anteriores si es necesario.
  • Interfaz gráfica de usuario: tiene una interfaz gráfica de usuario que permite a los equipos ver el estado actual de las aplicaciones y realizar cambios en tiempo real.
  • Seguridad: proporciona características de seguridad para asegurar que solo los usuarios autorizados pueden realizar cambios en las aplicaciones.
  • Integración con Git: se integra con Git, lo que permite a los equipos automatizar el proceso de construcción y despliegue utilizando ramas y etiquetas de Git.

Análisis Estático de Código (SonarQube)

La herramienta SonarQube es la herramienta utilizada para analizar la calidad del código fuente de los sistemas de información, principalmente con tecnología Java que trabajan en integración continua. Este análisis se realiza dentro de una de las tareas del pipeline configurado en el motor de integración continua de la Plataforma CI/CD.

En Umbrales de Aceptación permitidos por SonarQube Quality Gates se definen umbrales de calidad del código, que serán evaluados con la herramienta de análisis estático de código SonarQube, y ayudan a mejorar la calidad del código permitiendo la detección de errores y vulnerabilidades, así como la corrección continua de estos. 

En Certificación de Calidad Estática de Código se define el servicio prestado por la Oficina de Calidad para analizar la calidad del código fuente de los sistemas de información.

Índice