Pipeline de Java de ejemplo

Descripción de la ilustración cicd-process-pipeline.png
Pipeline Orchestrator controla el proceso de pipeline de este ejemplo de pipeline de Java ilustrado con algunas herramientas que se utilizan con frecuencia. Los siguientes son los pasos del proceso:
- Código de cambio
Realiza comprobaciones de Git básicas para las credenciales mediante Static Application Security Testing (SAST) e inicia el pipeline. Utiliza el enfoque de Gitflow para manejar el repositorio de código según cómo se estructura el código mediante herramientas como GitLab o GithHub. El código se puede estructurar para tener bifurcación de versión, fusión y liberación para controlar los cambios de origen. El código se asigna a entornos como desarrollo, prueba, preproducción y producción. Las confirmaciones en las diferentes partes del repositorio disparan acciones Sast.
- Por ejemplo, GitHub incorpora la exploración de seguridad estática para buscar patrones que reconozcan contraseñas y tokens en los archivos de código y configuración.
- Código generación
Genera un JAR/WAR/EAR y extrae las dependencias necesarias. Puede utilizar herramientas como Java Apache Maven para compilar y crear el JAR (o los archivos de almacenamiento desplegables relacionados) y firmar el artefacto.
- Gestionar dependencias de terceros: gestiona las dependencias de código y las bibliotecas de terceros mediante herramientas como Snyk. Sincroniza las comprobaciones y garantiza que las dependencias sean correctas, desde un origen aceptado y busca contenido malicioso. Recupera, inspecciona, aprueba y almacena artefactos de dependencia externa. La gestión de dependencias de terceros le permite almacenar localmente nuestras dependencias mediante herramientas como Archiva, Nexus OSS, etc. También puede controlar las dependencias para asegurarse de que tienen orígenes de confianza. Esto puede garantizar que la dependencia no se haya visto comprometida con contenido malicioso mediante el uso de herramientas como Snyk, Nexus o scanOS.
- Compruebe la calidad y la conformidad
Busque los 10 problemas principales de OWASP y compruebe el cumplimiento de los estándares de codificación mediante herramientas como Sonarcube o Lint.
- Realizar Prueba de Unidad
Realice pruebas de unidad y capture datos de cobertura de código mediante JACOCO y JUnit. JACOCO proporciona la recopilación de cobertura, como busca qué líneas de código se ejecutaron y cuánto código se probó de manera estadística. JUnit ejecuta las pruebas de unidad. Puede ampliar la descripción si cree que es útil.
- Realizar pruebas de API
Prueba las API con datos de simulación y prueba los clientes mediante herramientas como Dredd, Apiary o Swagger Hub.
- Componentes de prueba y experiencia de usuario
Pruebe los componentes del cuadro negro y cualquier elemento de la interfaz de usuario. Mide el rendimiento para garantizar que no haya problemas básicos. Recopila métricas de cobertura de prueba mediante herramientas como Selenium y JMeter. JMeter realiza pruebas de rendimiento y experiencia de usuario, y prueba los flujos de trabajo del usuario. Selenium controla el ejercicio de los elementos de la interfaz de usuario.
- Probar seguridad
Pruebe el código para vulnerabilidades como, por ejemplo, cómo maneja llamadas de API ilegales, cargas útiles en exceso, ataques de inyección, etc. con Zap. Realice pruebas de seguridad comprobando si hay código redundante y sentencias SQL preparadas.
- Paquete para despliegue
Empaquete la solución como contenedor, valide el empaquetado y compruebe si hay problemas y mejores prácticas en los contenedores mediante herramientas como Docker Snyk.
- Generar Documentación
Genere documentación útil y póngala a disposición para su consumo. Firmar artefactos usando herramientas como Pandoc o Doxygen. Pandoc empuja el proyecto a la siguiente etapa y lo agrega al almacén de confianza, como un registro para utilizarlo en la siguiente fase.
Si alguno de estos pasos falla o el proceso identifica demasiadas advertencias, la creación falla. Las compilaciones pueden fallar en cualquier momento del proceso e impedir que los pasos posteriores continúen. Una creación fallida evita cualquier promoción de código automatizada que se haya configurado. Puede utilizar algunas de las herramientas recomendadas para compilaciones con varias fases para soportar la ejecución de pruebas en cada fase. Por ejemplo, las pruebas a nivel de sistema pueden utilizar herramientas de prueba de API para interactuar con el sistema como un servicio externo en lugar de simular las acciones de otro componente dentro de la solución empresarial.