El pipeline de Jenkins de automation-arqc automatiza por completo la ejecución de la suite E2E de Playwright: desde la limpieza del workspace hasta la generación del reporte Allure y el archivo de artefactos. Soporta dos modos de operación (Libre y Despliegue), detecta cambios de forma inteligente en push automáticos y gestiona credenciales por entidad con fallback seguro — todo sin necesidad de intervención manual en el agente.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Giofelix/Proyecto-automatizacion-Empresa/llms.txt
Use this file to discover all available pages before exploring further.
Configuración global
La configuración base del pipeline se define en el bloque superior delJenkinsfile y aplica a todas las ejecuciones independientemente del modo.
| Propiedad | Valor |
|---|---|
| Agente | automatico_196 |
| Herramienta Node | node20 |
| Timeout máximo | 90 minutos |
| Builds conservados | últimos 20 |
| Artefactos conservados | últimos 10 builds |
| Cache de navegadores | /home/ubuntu/.cache/playwright-browsers |
Variable CI | true |
integration terminan bastante antes.
Etapas del pipeline
Limpiar Workspace
Invoca
cleanWs() para eliminar todos los archivos y artefactos que hayan quedado de builds anteriores en el agente. Esto garantiza que cada ejecución parte de un estado limpio y que no haya contaminación cruzada entre builds.Checkout SCM
Clona la rama que disparó el pipeline usando
checkout scm. El checkout predeterminado está deshabilitado (skipDefaultCheckout(true)) para que este stage controle explícitamente cuándo se hace la clonación — siempre después de limpiar el workspace.🔍 Información del Build
Inspecciona las causas del build (
En Modo Despliegue el nombre y la descripción del build se actualizan automáticamente al formato
getBuildCauses()) para determinar si el disparador fue manual (un usuario en la UI) o automático (un push). Con esa información establece tres variables de entorno clave:| Variable | Descripción |
|---|---|
IS_MANUAL_BUILD | true si fue lanzado por un usuario, false si fue por push |
IS_MASTER | true si la rama activa es master |
PIPELINE_MODE | DEPLOYMENT si se recibieron PROJECT_NAME + ENTITIES; FREE en caso contrario |
{VERSION} | {PROJECT_NAME} | {ENTIDADES} para identificarlo fácilmente en el historial de Jenkins. Luego imprime en consola un bloque de diagnóstico con todos los parámetros activos.🔒 Control de Rama
Actúa como guardián para la rama
master: si el pipeline corre en master pero el modo detectado es FREE (faltan ENTITIES y/o PROJECT_NAME), el build se marca inmediatamente como NOT_BUILT y ningún stage posterior se ejecuta.Este comportamiento es intencional:
master representa producción y solo debe ejecutarse con un despliegue real identificado. Ver Modos de ejecución para más detalles.✅ Validación Modo Despliegue
Solo se activa cuando el modo es
DEPLOYMENT. Valida que cada microservicio especificado en PROJECT_NAME exista en getMicroservicioToTagMap() y que cada entidad de ENTITIES figure en getEntidadesValidas(). Si alguna validación falla, el pipeline lanza un error inmediatamente con la lista de problemas encontrados.Si la validación es exitosa, almacena los tags de módulo resueltos en RESOLVED_MODULE_TAGS y las entidades normalizadas en RESOLVED_ENTITIES como variables de entorno para los stages posteriores.🧐 Detección de Cambios
Este stage solo se activa cuando el build es automático (push), el modo es
FREE y FORCE_FULL_SUITE está desactivado. Primero revisa si el mensaje del commit contiene [ci skip] o [skip ci] — si lo hace, el build se marca NOT_BUILT sin correr ninguna prueba.Si no hay skip, llama a analyzeChanges() para clasificar los archivos modificados en tres categorías:| Resultado | Condición | Efecto |
|---|---|---|
RUN_ALL | Cambios en playwright/, pages/login/, pages/common/, fixtures/index.js, fixtures/auth.fixture.js, suites/config-ambientes/, package.json, package-lock.json | Ejecuta la suite completa |
RUN_TARGET | Cambios en pages/modulos/<modulo>/, suites/<Modulo>/, o specs específicos | Ejecuta solo el módulo o spec afectado |
SKIP | Solo cambios en archivos ignorados: .md, .gitignore, Jenkinsfile, specs/, docs/ | Marca el build como NOT_BUILT |
📦 Instalación de Dependencias
Verifica las versiones de Node y npm, luego ejecuta Si falla, las causas más habituales son:
npm ci para una instalación completamente reproducible desde package-lock.json. Si este stage falla, el pipeline imprime un diagnóstico con las causas más comunes.package-lock.jsondesactualizado o corrupto- Sin acceso a
registry.npmjs.orgdesde el agente - Versión de Node incompatible con la declarada en
package.json
🌐 Preparación de Navegadores
Verifica si existe el directorio de caché en
/home/ubuntu/.cache/playwright-browsers. Si no existe, lo crea. Luego instala el binario de Chromium con npx playwright install chromium. En la mayoría de ejecuciones la descarga se salta porque el binario ya está en caché.🚀 Ejecución Modo Despliegue
Solo se activa cuando el modo es
DEPLOYMENT. Itera sobre las entidades resueltas según el valor de EXECUTION_MODE:per_entity— ejecuta una corrida de Playwright independiente por cada entidad. Por cada una: construye la URL base comohttp://172.17.1.214:9080/{entidad}/, resuelve credenciales conresolveCredentialIds()(específicas por entidad o genéricas), construye un patrón grep compuesto (módulo + entidad + tipo de prueba) y guarda los resultados Allure en un subdirectorio propio. Si alguna entidad falla, el pipeline continúa con las demás y al final lanza un error con el resumen de fallos.all_entities_together— incluye todas las entidades como filtrosORen un único patrón grep junto con@todas_entidades, y usa credenciales genéricas directamente.
allure-results/ para el reporte unificado final.🎯 Resolución de Filtros
Solo se activa en Modo Libre. Construye el patrón
Si se especifica
--grep que se pasará a Playwright según la combinación de parámetros activos. En builds manuales o con FORCE_FULL_SUITE, usa los parámetros del formulario (TEST_SUITE, MODULE, EXTRA_GREP). En builds automáticos usa la decisión tomada por analyzeChanges().TEST_SUITE | Patrón grep generado |
|---|---|
smoke | (?=.*@smoke) |
regression | (?=.*@regression|@smoke|@critical) |
all | (sin filtro — todas las pruebas) |
auto | Resuelve a all en la rama integration |
MODULE, añade (?=.*@{modulo}) al patrón. Si se especifica EXTRA_GREP, también se incluye como lookahead adicional.🚀 Ejecución de Pruebas
Solo se activa en Modo Libre. Inyecta las credenciales Si el stage falla, el bloque
USER_GENERIC y PASSWORD_UNIVERSAL desde el almacén de Jenkins y ejecuta Playwright con el patrón grep y las rutas de specs resueltos en el stage anterior:post { failure } imprime un diagnóstico con pasos para investigar: revisar el reporte Allure, descargar test-results.zip e inspeccionar traces con npx playwright show-trace.Post-acciones
El bloquepost del pipeline se ejecuta siempre al final, independientemente del resultado.
| Bloque | Cuándo se activa | Qué hace |
|---|---|---|
always | Siempre | Genera el reporte Allure desde allure-results/, archiva playwright-report/** y test-results/** (ambos con allowEmptyArchive: true), imprime la duración total del build |
success | Build exitoso | Si el resultado es NOT_BUILT imprime un mensaje de “sin ejecución de pruebas”; si hay pruebas exitosas muestra el número de build y la ruta al reporte Allure |
failure | Build fallido | Imprime un bloque de diagnóstico con pasos para investigar: reporte Allure, descarga de test-results.zip, inspección de traces con npx playwright show-trace |
unstable | Build inestable | Imprime una advertencia indicando que algunas pruebas fallaron pero el pipeline completó |
Si el mensaje del commit contiene
[ci skip] o [skip ci] (sin distinción de mayúsculas), el stage 🧐 Detección de Cambios interrumpe el build marcándolo como NOT_BUILT. Esto evita consumir tiempo de agente en cambios que no requieren pruebas, como actualizaciones de documentación o ajustes al Jenkinsfile.Modos de ejecución
Cómo configurar y diferenciar el Modo Libre y el Modo Despliegue, con todos sus parámetros y comportamientos.
Credenciales
Cómo registrar y gestionar las credenciales de Jenkins para automation-arqc, incluyendo el mecanismo de fallback por entidad.