From a243751baeeceae47b8c16d5f51e4ba0db10095a Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Thu, 26 Sep 2024 11:24:40 +0200 Subject: [PATCH] OZG-6592: Change Jenkinsfile for new directory/script structure --- alfa-client/Jenkinsfile.e2e | 96 ++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 45 deletions(-) diff --git a/alfa-client/Jenkinsfile.e2e b/alfa-client/Jenkinsfile.e2e index 04cd7e1083..da6cb44df7 100644 --- a/alfa-client/Jenkinsfile.e2e +++ b/alfa-client/Jenkinsfile.e2e @@ -254,7 +254,7 @@ pipeline { Integer mongoDbPort = forwardMongoDbPort(generateNamespace(bezeichner)) - runTests(bezeichner, 'einheitlicher-ansprechpartner', mongoDbPort, env.STAGE_NAME) + runTests(bezeichner, 'alfa-e2e','einheitlicher-ansprechpartner', mongoDbPort, env.STAGE_NAME) stopForwardMongoDbPort(generateNamespace(bezeichner)) } @@ -285,7 +285,7 @@ pipeline { Integer mongoDbPort = forwardMongoDbPort(generateNamespace(bezeichner)) - runTests(bezeichner, 'main-tests', mongoDbPort, env.STAGE_NAME) + runTests(bezeichner, 'alfa-e2e','main-tests', mongoDbPort, env.STAGE_NAME) stopForwardMongoDbPort(generateNamespace(bezeichner)) } @@ -311,11 +311,11 @@ pipeline { steps { catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') { script { - def bezeichner = env.MAIN_BEZEICHNER + String bezeichner = env.MAIN_BEZEICHNER Integer mongoDbPort = forwardMongoDbPort(generateNamespace(bezeichner)) - runTests(bezeichner, 'main-tests', mongoDbPort, env.STAGE_NAME) + runTests(bezeichner, 'admin-e2e','main-tests', mongoDbPort, env.STAGE_NAME) stopForwardMongoDbPort(generateNamespace(bezeichner)) } @@ -329,7 +329,7 @@ pipeline { } always { script { - publishAdminE2ETestResult("main-tests", "Admin E2E-Tests main") + publishAdminE2ETestResult() } } } @@ -612,15 +612,17 @@ Void waitForHealthyStatus(String bezeichner, String application) { sh "kubectl wait --for=jsonpath='{.status.health.status}'=Healthy applications/by-${bezeichner}-dev-${application} -n argocd --timeout=900s" } -Void publishAlfaE2ETestResult(String reportFolder, String reportName) { - publishE2ETestResult2("alfa-client/apps/alfa-e2e/reports/${reportFolder}", reportName) +Void publishAlfaE2ETestResult(String appVariant, String reportName) { + publishE2ETestResult("alfa-e2e", appVariant, reportName); } -Void publishAdminE2ETestResult(String reportFolder, String reportName) { - publishE2ETestResult2("alfa-client/apps/admin-e2e/reports/${reportFolder}", reportName) +Void publishAdminE2ETestResult() { + publishE2ETestResult("admin-e2e", "main-tests", "Admin E2E-Tests main"); } -Void publishE2ETestResult2(String reportDir, String reportName) { +Void publishE2ETestResult(String appName, String appVariant, String reportName) { + def reportDir = "alfa-client/apps/${appName}/reports/${appVariant}"; + publishHTML ( target: [ allowMissing: false, @@ -633,19 +635,21 @@ Void publishE2ETestResult2(String reportDir, String reportName) { ) } -String runTests(String bezeichner, String reportFolder, Integer dbPort, String stageName) { - def config = generateCypressConfig(bezeichner, reportFolder, dbPort) - - try { - dir('alfa-client'){ - sh "npm run cypress:version" - sh "apps/alfa-e2e/run-tests.sh ${reportFolder} ${config}" - } - } catch (Exception e) { - printNpmDebugLog() - - error("Fehler in Stage ${stageName}") +// runTests(env.EA_BEZEICHNER, 'alfa-e2e', 'einheitlicher-ansprechpartner', mongoDbPort, env.STAGE_NAME +// runTests(env.EA_BEZEICHNER, 'alfa-e2e', 'main-tests', mongoDbPort, env.STAGE_NAME +// runTests(env.EA_BEZEICHNER, 'admin-e2e', 'main-tests', mongoDbPort, env.STAGE_NAME +String runTests(String bezeichner, String appName, String appVariant, Integer dbPort, String stageName) { + def config = generateCypressConfig(bezeichner, appName, appVariant, dbPort) + try { + dir('alfa-client'){ + sh "npm run cypress:version" + sh "apps/run-tests.sh ${appName} ${appVariant} ${config}" } + } catch (Exception e) { + printNpmDebugLog() + + error("Fehler in Stage ${stageName}") + } } Void printNpmDebugLog() { @@ -676,39 +680,41 @@ String cutBranchNameForKeycloakRealm(String branchName, String stageName) { return branchName.take(cutBranchNamePosition) } -String generateCypressConfig(String bezeichner, String testFolder, Integer dbPort) { - def namespace = generateNamespace(bezeichner) - def configName = "cypress-ci-"+testFolder+".json" +String generateCypressConfig(String bezeichner, String appName, String appVariant, Integer dbPort) { + def namespace = generateNamespace(bezeichner) + def configName = "cypress-ci-"+appVariant+".json" - dir('alfa-client/apps/alfa-e2e/'){ - def config = readJSON file: 'cypress-ci.json' + dir('alfa-client/apps/${appName}/'){ + def config = readJSON file: 'cypress-ci.json' - def vorgangManagerDatabaseSecret = getVorgangManagerDatabaseSecret(namespace); - def decodedPassword = decodeString(vorgangManagerDatabaseSecret.password); - def parsablePassword = makePasswordUrlConform(decodedPassword); + def vorgangManagerDatabaseSecret = getVorgangManagerDatabaseSecret(namespace); + def decodedPassword = decodeString(vorgangManagerDatabaseSecret.password); + def parsablePassword = makePasswordUrlConform(decodedPassword); - config.baseUrl = "https://${bezeichner}.${env.CLUSTER_BASE_URL}" as String - config.env.dbUrl = "mongodb://${decodeString(vorgangManagerDatabaseSecret.username)}:${parsablePassword}@localhost:${dbPort}/admin?ssl=false&directConnection=true&socketTimeoutMS=30000&heartbeatFrequencyMS=10000" as String - config.env.keycloakUrl = "https://${env.SSO_URL}/" as String - config.env.keycloakRealm = namespace as String - config.videosFolder = "./reports/${testFolder}/videos" as String - config.screenshotsFolder = "./reports/${testFolder}/screenshots" as String - config.reporterOptions.reportDir = "./reports/${testFolder}/mochawesome-report" as String + config.baseUrl = "https://${bezeichner}.${env.CLUSTER_BASE_URL}" as String + config.env.dbUrl = "mongodb://${decodeString(vorgangManagerDatabaseSecret.username)}:${parsablePassword}@localhost:${dbPort}/admin?ssl=false&directConnection=true&socketTimeoutMS=30000&heartbeatFrequencyMS=10000" as String + config.env.keycloakUrl = "https://${env.SSO_URL}/" as String + config.env.keycloakRealm = namespace as String + config.videosFolder = "./reports/${appVariant}/videos" as String + config.screenshotsFolder = "./reports/${appVariant}/screenshots" as String + config.reporterOptions.reportDir = "./reports/${appVariant}/mochawesome-report" as String - config.specPattern = "src/e2e/${testFolder}/**/*.cy.{js,jsx,ts,tsx}" as String + config.specPattern = "src/e2e/${appVariant}/**/*.cy.{js,jsx,ts,tsx}" as String - config.env.put("search", getElasticsearchEnv(namespace)) - config.env.put("userManager", getUserManagerEnv(namespace, dbPort)) - config.env.put("smocker", getSmockerEnv(namespace)) + config.env.put("search", getElasticsearchEnv(namespace)) + config.env.put("userManager", getUserManagerEnv(namespace, dbPort)) + config.env.put("smocker", getSmockerEnv(namespace)) - writeJSON file: configName, json: config + writeJSON file: configName, json: config - sh "cat ${configName}" - } + sh "cat ${configName}" + } - return "cypress-ci-"+testFolder+".config.ts" + return "cypress-ci-"+appVariant+".config.ts" } + + String makePasswordUrlConform(String password) { return sh (script: "printf %s ${password} | jq -sRr @uri", returnStdout: true); } -- GitLab