CI + QA
La Integración Continua (CI) y el Aseguramiento de la Calidad (QA) constituyen pilares fundamentales en nuestro ciclo de vida de desarrollo. Buscamos automatizar al máximo para entregar software de alta calidad de manera rápida y consistente.
Pipeline de Integración Continua (CI)
Utilizamos GitLab CI/CD como nuestra plataforma de CI. Cada proyecto en GitLab debe contener un archivo
.gitlab-ci.yml que define el pipeline. Un pipeline típico incluye las siguientes etapas:
-
Build:
- El código fuente es compilado.
- Se construyen los artefactos necesarios (ej. un archivo JAR para una aplicación Java).
- Se construye la imagen de Docker de la aplicación.
-
Test:
- Pruebas Unitarias: Se ejecutan pruebas unitarias para verificar el comportamiento de los componentes individuales. Buscamos una cobertura de código superior al 80%.
- Pruebas de Integración: Se realizan pruebas que verifican la interacción entre diferentes componentes del sistema.
-
Code Quality & Security:
- Análisis Estático de Código (SAST): Utilizamos herramientas como SonarQube para analizar el código en busca de bugs, vulnerabilidades y "code smells". El pipeline fallará si no se cumplen los umbrales de calidad definidos.
- Análisis de Dependencias: Escaneamos las dependencias del proyecto en busca de vulnerabilidades conocidas utilizando herramientas como OWASP Dependency-Check o Snyk.
-
Push to Registry:
- Si todas las etapas anteriores son exitosas, la imagen de Docker es etiquetada y subida a Google Artifact Registry.
Estrategia de Ramas (Branching Strategy)
Seguimos una estrategia basada en GitFlow, pero simplificada:
master: Contiene código estable que se despliega al entorno de integración (UAT) para validación, y luego a producción. Solo se mezcla desdedevelopa través de Merge Requests.develop: Es la rama principal de desarrollo. Contiene las últimas funcionalidades que están listas para ser probadas.feature/<nombre-feature>: Cada nueva funcionalidad se desarrolla en su propia rama a partir dedevelop. Una vez completada, se crea un Merge Request para fusionarla de vuelta adevelop.
Los Merge Requests deben ser revisados y aprobados por al menos otro miembro del equipo antes de ser fusionados. Esto asegura la calidad y el conocimiento compartido del código.
