From 872318a00c9d15048d24284bea81c239f035ac2b Mon Sep 17 00:00:00 2001 From: alexm Date: Thu, 13 Feb 2025 09:38:09 +0100 Subject: [PATCH] refactor: refs #6695 improve parallel test execution logic in Jenkinsfile --- Jenkinsfile | 66 ++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3bf0b5103..feb17f36a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -186,43 +186,43 @@ def cleanDockerE2E() { def runTestsInParallel(int numParallelGroups) { def folders = sh(script: "ls -d test/cypress/integration/*/ || echo ''", returnStdout: true).trim().split('\n').findAll { it } - // if (folders.isEmpty()) { - // echo "No se encontraron carpetas de pruebas." - // return - // } + if (folders.isEmpty()) { + echo "No se encontraron carpetas de pruebas." + return + } - // // Divide las carpetas en grupos para paralelizar - // def groupSize = Math.ceil(folders.size() / numParallelGroups).toInteger() - // def groups = folders.collate(groupSize) - // def tasks = [:] + // Divide las carpetas en grupos para paralelizar + def groupSize = Math.ceil((folders.size() as double) / numParallelGroups).toInteger() + def groups = folders.collate(groupSize) + def tasks = [:] - // groups.eachWithIndex { group, index -> - // tasks["parallel_group_${index + 1}"] = { - // script { - // group.each { testFolder -> - // def folderName = testFolder.replaceAll('test/cypress/integration/', '').replaceAll('/', '') - // folderName = folderName.replaceAll('[^a-zA-Z0-9_-]', '') // Sanitización de nombres + groups.eachWithIndex { group, index -> + tasks["parallel_group_${index + 1}"] = { + script { + group.each { testFolder -> + def folderName = testFolder.replaceAll('test/cypress/integration/', '').replaceAll('/', '') + folderName = folderName.replaceAll('[^a-zA-Z0-9_-]', '') // Sanitización de nombres - // stage("Run ${folderName}") { - // try { - // env.CYPRESS_SPEC = "test/cypress/integration/${folderName}/**/*.spec.js" - // sh "docker-compose -p ${env.NETWORK}_${folderName} -f docker-compose.e2e.yml up -d back" - // sh "docker-compose -p ${env.NETWORK}_${folderName} -f docker-compose.e2e.yml up -d front" - // sh "CYPRESS_SPEC=test/cypress/integration/${folderName}/**/*.spec.js docker-compose -p ${env.NETWORK}_${folderName} -f docker-compose.e2e.yml up e2e" - // checkErrors(folderName) - // } catch (Exception e) { - // echo "Error en la ejecución de ${folderName}: ${e.message}" - // currentBuild.result = 'UNSTABLE' - // } finally { - // sh "docker-compose -p ${env.NETWORK}_${folderName} -f docker-compose.e2e.yml down || true" - // } - // } - // } - // } - // } - // } + stage("Run ${folderName}") { + try { + env.CYPRESS_SPEC = "test/cypress/integration/${folderName}/**/*.spec.js" + sh "docker-compose -p ${env.NETWORK}_${folderName} -f docker-compose.e2e.yml up -d back" + sh "docker-compose -p ${env.NETWORK}_${folderName} -f docker-compose.e2e.yml up -d front" + sh "CYPRESS_SPEC=test/cypress/integration/${folderName}/**/*.spec.js docker-compose -p ${env.NETWORK}_${folderName} -f docker-compose.e2e.yml up e2e" + checkErrors(folderName) + } catch (Exception e) { + echo "Error en la ejecución de ${folderName}: ${e.message}" + currentBuild.result = 'UNSTABLE' + } finally { + sh "docker-compose -p ${env.NETWORK}_${folderName} -f docker-compose.e2e.yml down || true" + } + } + } + } + } + } - // parallel tasks + parallel tasks }