Integrar CI de C4C7OPS a un servicio y extenderlo

El objetivo de este blog es mostrarte cómo puedes activar un flujo de CI en la plataforma de C4C7OPS y extenderlo para mejorar la calidad del código mediante pruebas unitarias y de integración.

¿Que se necesita para activar CI en un servicio por primera vez?

A continuación detallaremos los pasos a seguir para integrar tus servicios con CI:

  1. Configurar los archivos necesarios para generar un coverage
  2. Subir los archivos a tu proveedor de Git
  3. Activar CI para ese servicio desde C4C7OPS
  4. Lanzar un pull request desde tu proveedor de Git para disparar CI por primera vez

Siguiendo estos pasos ya tendremos configurado el servicio para que con cada Pull request se dispare un pipeline que ejecute nuestras pruebas y genere un coverage para validar el porcentaje de código que se probó y si todas las pruebas fueron exitosas.

1. Configurar los archivos necesarios para generar un coverage.

Lo primero que debemos hacer es crear los siguientes archivos en la base del proyecto:

1.1 docker-compose-ci.yml:

Este será el encargado de disparar la ejecución de las pruebas y generar un coverage, varía de lenguaje a lenguaje y en este caso usaremos una base de Node js para este ejemplo, usualmente tendremos que modificar la “image” y el “command” para poder adaptarlo al lenguaje que estemos usando.

docker-compose-ci.yml

version: "3.9"
services: test: network_mode: host" image: node:16" working_dir: /code" volumes:" - ./:/code" command: sh -c "npm install && npm run test:coverage""

1.2 sonar-project.properties:

Este archivo será el que permita a C4C7OPS leer el coverage que generará el archivo del paso anterior y compararlo con los archivos del proyecto para determinar si cumple o no con los estándares para ser aprobado, podemos adaptarlo a básicamente cualquiera de los lenguajes que soportamos pero en este caso para Typescript sería algo parecido a esto.

sonar-project.properties

sonar.sources=src sonar.tests=src sonar.test.inclusions=**/*.test.tsx,**/*.test.ts sonar.javascript.lcov.reportPaths=coverage/lcov.info sonar.exclusions=**/mocks.ts,**/*.scss,**/*.md,**/*.css,**/*.test.tsx,**/*.test.ts,**/langs/**,**/node_modules/**,**/dist/**,**/coverage/**,**/public/**,**/src/App.tsx,**/src/**/setupTests.ts,**/src/**/react-app-env.d.ts,**/routes,**/assets

2. Subir los archivos a tu proveedor de Git.

Este es un proceso relativamente sencillo en el que se deben ejecutar los comandos básicos para subir un archivo a tu rama principal.

2.1. Creamos un commit y lo subimos:

git add .

git commit -m "Add docker-compose-ci.yml and sonar-project.properties"

git push origin

2.2. Después de esto debemos dejar nuestros archivos en la rama principal del proyecto:

Bitbucket main branch

3. Activar CI para ese servicio desde C4C7OPS.

El siguiente paso es ingresar a C4C7OPS y buscar el servicio al que deseamos agregarle CI, ya sea un backend o un frontend y activarlo:

3.1. Presionamos el botón “Actions” del servicio al que deseamos activar CI:

C4C7OPS frontends console

3.2. Seleccionamos la opción “Pipelines”.

C4C7OPS frontends console

3.3. Por último oprimimos el botón “Yes” para activar CI en tu servicio:

C4C7OPS frontends console

4. Lanzar un pull request desde tu proveedor de Git para disparar CI por primera vez.

Para concluir debes dirigirte a tu proveedor de git, buscar el proyecto, crear una rama, hacer un cambio y lanzar un pull request para que se ejecuten los pipelines del servicio desde C4C7OPS:

4.1. Buscamos el proyecto en tu proveedor de git:

C4C7OPS frontends console

4.2. Nos dirigimos a la sección de “pull requests” y presionamos “Create pull request”:

C4C7OPS frontends console

4.3. Confirmamos el “pull request” y lo creamos:

C4C7OPS frontends console

4.4. Si todo sale bien veremos reflejado el “pipeline” bajo el nombre de “console”:

C4C7OPS frontends console

4.5. Volvemos a C4C7OPS y presionamos de nuevo en “Pipelines”:

C4C7OPS frontends console

4.6. Aquí podremos ver la ejecución del nuevo “Pipeline”:

C4C7OPS frontends console

C4C7OPS frontends console

5. Para concluir:

Una vez terminado el flujo completo de configuración, tendríamos lista la integración con el proveedor de git para este repositorio junto con la imagen de docker que ejecuta los test y genera el coverage y la configuración de sonar para que interprete este coverage.

Los pipelines se ejecutarán automáticamente cuando un usuario cree un pull request desde el proveedor de Git, validando así el coverage y la ejecución exitosa de las pruebas del proyecto 😊.

Usamos cookies para mejorar su experiencia en nuestro sitio y personalizar el contenido a sus necesidades. Al hacer clic en "Aceptar", usted acepta. Lea nuestra Política de Cookies y nuestra Política de Privacidad y Datos, y nuestros Términos y condiciones para más información.