refactor: refs #6695 update Jenkinsfile to run E2E tests in parallel and simplify docker-compose command
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details

This commit is contained in:
Alex Moreno 2025-02-13 09:54:09 +01:00
parent 5dc73614a3
commit cbccf89b6f
1 changed files with 39 additions and 49 deletions

88
Jenkinsfile vendored
View File

@ -107,17 +107,7 @@ pipeline {
}
}
// stage('E2E: Basic') {
// steps {
// script {
// runTestsInParallel([
// // 'test/cypress/integration/vnComponent/',
// 'test/cypress/integration/outLogin/',
// ])
// }
// }
// }
stage('E2E: Sections') {
stage('Run') {
steps {
script {
sh "docker-compose -p ${env.NETWORK} -f docker-compose.e2e.yml up -d back"
@ -185,49 +175,49 @@ def cleanDockerE2E() {
}
}
def runTestsInParallel(int numParallelGroups) {
def folders = sh(script: "ls -d test/cypress/integration/*/ || echo ''", returnStdout: true).trim().split('\n').findAll { it }
// 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() as double) / 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}"] = {
stage("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}"] = {
// stage("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
// }
def checkErrors(String folderName){