Pipelines de aplicación¶
Backend y frontend comparten la misma composición: cada .gitlab-ci.yml importa build.yml, test.yml y deploy.yml desde cicd-templates. Sólo cambia la URL del repositorio de manifiestos. En ambos proyectos, DEPLOY_TARGET vale gke en el snapshot.
Etapas y jobs¶
| Etapa declarada | Jobs propios o importados | Resultado |
|---|---|---|
quality |
code_quality |
Informe de calidad |
security |
secret_detection |
Informe de secretos |
test |
Analizadores de SAST importados | Informe estático; semgrep-sast en las ejecuciones observadas |
results-scanners |
results-code-quality, results-secret-detection |
Resúmenes legibles en el log |
build |
generate-maven-jar, generate-image |
JAR y publicación de imagen |
container-security |
container_scanning |
Análisis de la imagen publicada |
container-security-results |
results-container-scanning |
Resumen del análisis de contenedor |
deploy |
update-k8s-manifests, deploy |
Commit de imagen y aplicación de manifiestos |
La lista de etapas del proyecto consumidor completa y prevalece sobre las listas parciales de las plantillas. El job SAST concreto depende de las plantillas de GitLab, los archivos detectados y la configuración de la instancia; no está definido directamente en test.yml.
Reglas de ejecución¶
| Familia | Condición versionada | Comportamiento |
|---|---|---|
| Construcción | Referencia protegida | Reglas con when: always |
| Calidad y su resultado | Referencia protegida y ENABLE_QUALITY == 'true' |
Ejecución condicionada |
| Secretos y contenedores | Referencia protegida y ENABLE_SECURITY == 'true' |
Ejecución condicionada |
| SAST | Reglas de las plantillas importadas | Revisar configuración expandida |
| Actualización y despliegue | Referencia protegida y rama literal main |
Automático con la semántica de éxito por defecto |
No se ha implementado una política completa de validación de merge requests en las plantillas propias. Una rama no protegida no ejecuta los jobs protegidos aunque tenga cambios relevantes. La rama de despliegue está escrita como main, no como $CI_DEFAULT_BRANCH.
Dependencias reales¶
generate-image necesita el artefacto de generate-maven-jar; los dos pertenecen a build. deploy necesita update-k8s-manifests con optional: true. Los jobs que no usan needs siguen la secuencia de etapas. Por tanto, el orden visual de las columnas no basta para deducir todas las dependencias ni los bloqueos.
La construcción usa when: always, y los resultados de seguridad heredan allow_failure: true. La política efectiva no constituye una barrera de seguridad que impida entregar cualquier versión con hallazgos. Los detalles están en calidad y seguridad.
Evidencia pública de ejecución¶
| Servicio | Pipeline observado | Resultado | Commit |
|---|---|---|---|
| Backend | 2604545913 | 11 jobs correctos | 2c8e6ef861de7 |
| Frontend | 2604607441 | 11 jobs correctos | 1e56e856d4cf3 |
La consulta del 26 de octubre de 2026 confirma estado de jobs, no el contenido de todos los informes ni la salud actual de los servicios. El job de despliegue no espera el rollout ni ejecuta pruebas HTTP: un pipeline correcto tiene ese alcance concreto.
La infraestructura y la documentación tienen pipelines independientes y otras reglas.