diff --git a/Jenkinsfile b/Jenkinsfile index a8c40fd3070b667b608e8002afb04a5347520838..b27ddfbce5ed57f3f5e2bb498d5dffa497b7709f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -61,7 +61,7 @@ pipeline { parallel( startGoofy: { - startGoofy(namespace, stageName, 'ea-values.yaml') + startGoofy(namespace, 'ea-values.yaml', IMAGE_TAG) }, startPluto: { startPluto(namespace, 'ea-values.yaml') @@ -103,7 +103,7 @@ pipeline { parallel( startGoofy: { - startGoofy(namespace, stageName, 'values.yaml') + startGoofy(namespace, 'values.yaml', IMAGE_TAG) }, startPluto: { startPluto(namespace, 'values.yaml') @@ -166,17 +166,17 @@ Void startPluto(String namespace, String values) { } } -Void startGoofy(String stageName, String namespace, String values) { +Void startGoofy(String namespace, String values, String imageTag) { container("k8s") { dir('goofy-client/apps/goofy-e2e/deployment-values/goofy') { withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { - sh "helm upgrade --install --create-namespace goofy goofy -f ${values} --set image.tag=${IMAGE_TAG} --namespace ${namespace}" + ' --repo https://nexus.ozg-sh.de/repository/ozg-base-apps --username ${USER} --password ${PASSWORD} --wait --wait-for-jobs' + sh "helm upgrade --install --create-namespace goofy goofy -f ${values} --set image.tag=${imageTag} --namespace ${namespace}" + ' --repo https://nexus.ozg-sh.de/repository/ozg-base-apps --username ${USER} --password ${PASSWORD} --wait --wait-for-jobs' } } - createKeycloakGroups(stageName) - generateKeycloakUserYaml(stageName) - applyKeycloakUser(stageName) + createKeycloakGroups(namespace) + generateKeycloakUserYaml(namespace) + applyKeycloakUser(namespace) } } @@ -195,7 +195,7 @@ Void shutdownEnvironment(String namespace) { sh "helm uninstall goofy --namespace ${namespace} --wait" sh "helm uninstall pluto --namespace ${namespace} --wait" - removeKeycloakUser(stageName) + removeKeycloakUser(namespace) sh "kubectl delete namespace ${namespace}" } @@ -212,8 +212,7 @@ String generateNamespaceName(String stage) { return "e2e-${branchName}${stageName}-dev" } -Void generateKeycloakUserYaml(String stage) { - def namespace = generateNamespaceName(stage) +Void generateKeycloakUserYaml(String namespace) { def e2eUserFiles = sh (script: 'ls goofy-client/apps/goofy-e2e/src/fixtures/user', returnStdout: true) e2eUserFiles.split("\\n").each { user -> @@ -252,7 +251,7 @@ Void createKeycloakGroups(String realm) { def groupFiles = sh (script: 'ls goofy-client/apps/goofy-e2e/src/fixtures/group', returnStdout: true) groupFiles.split("\\n").each { group -> - def groupJson = readJSON file: 'goofy-client/apps/goofy-e2e/src/fixtures/group/'+group + def groupJson = sh (script: "cat goofy-client/apps/goofy-e2e/src/fixtures/group/${group}", returnStdout: true) sh """curl -X POST 'https://sso.dev.ozg-sh.de/auth/admin/realms/${realm}/groups' \ -H 'Content-Type: application/json' \ @@ -262,8 +261,8 @@ Void createKeycloakGroups(String realm) { } } -Void applyKeycloakUser(String stage) { - dir(generateNamespaceName(stage)){ +Void applyKeycloakUser(String namespace) { + dir(namespace){ def kcUserFiles = sh (script: "ls", returnStdout: true) kcUserFiles.split("\\n").each { user -> @@ -272,8 +271,8 @@ Void applyKeycloakUser(String stage) { } } -Void removeKeycloakUser(String stage) { - dir(generateNamespaceName(stage)){ +Void removeKeycloakUser(String namespace) { + dir(namespace){ def kcUserFiles = sh (script: "ls", returnStdout: true) kcUserFiles.split("\\n").each { user -> @@ -293,7 +292,7 @@ String generateCypressConfig(String stage, String testFolder) { config.env.dbUrl = "mongodb+srv://pluto-database-user:XnHhfznNWg65NNd@pluto-database-svc.${namespace}.svc.cluster.local/admin?ssl=false" as String config.env.keycloakRealm = namespace as String config.env.keycloakClient = namespace + "-goofy" as String - config.env.sabineUuid = getKeycloakUuid(namespace, 'sabine') as String + config.env.sabineUuid = getKeycloakUuid(namespace, "sabine") as String config.integrationFolder = "./src/integration/${testFolder}" as String config.videosFolder = "./reports/${testFolder}/videos" as String config.screenshotsFolder = "./reports/${testFolder}/screenshots" as String @@ -306,22 +305,24 @@ String generateCypressConfig(String stage, String testFolder) { } String getKeycloakUuid(realm, userName) { - def users = sh (script: """curl -X POST 'https://sso.dev.ozg-sh.de/auth/admin/realms/${realm}/users' \ - -H 'Content-Type: application/json' \ - -H 'Authorization: bearer ${getKeycloakAccessToken()}' - """, returnStdout: true) - - users.each { user -> + def shScript = """curl -H 'Content-Type: application/json' \ + -H 'Authorization: bearer ${getKeycloakAccessToken()}' \ + 'https://sso.dev.ozg-sh.de/auth/admin/realms/${realm}/users' + """ + + def users = readJSON text: sh(script: shScript, returnStdout: true) + + for(user in users) { if (user.username == userName) { - return user.id + return user.id } } } String getKeycloakAccessToken() { withCredentials([usernamePassword(credentialsId: 'keycloak-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { - def token = sh (script: 'curl -d "client_id=admin-cli" -d "username=$USER" -d "password=$PASSWORD" -d "grant_type=password" "https://sso.dev.ozg-sh.de/auth/realms/master/protocol/openid-connect/token"', returnStdout: true) - - return access_token = token.split('"')[3] + def token = readJSON text: sh (script: 'curl -d "client_id=admin-cli" -d "username=$USER" -d "password=$PASSWORD" -d "grant_type=password" "https://sso.dev.ozg-sh.de/auth/realms/master/protocol/openid-connect/token"', returnStdout: true) + + return token.access_token } } \ No newline at end of file