diff --git a/Jenkinsfile b/Jenkinsfile index f35a459730ecc4cbcfb711a9811b7f3d3267fb76..d1511c9136efec0fd8a4e987bf57712fad262fbc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,21 +1,10 @@ def FAILED_STAGE pipeline { - agent any - tools { - maven 'maven3' - jdk 'jdk11' - nodejs 'node14' - } - //{ - // node { - // label 'goofy' - //} - //} - - environment { - //BLUE_OCEAN_URL = "https://jenkins-dev-tools.apps.lab.okd.local/blue/organizations/jenkins/OZG%2Fgoofy/detail/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/pipeline" - BLUE_OCEAN_URL = "https://jenkins.ozg-sh.de/blue/organizations/jenkins/OZG%2Fgoofy/detail/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/pipeline" + agent { + node { + label 'jenkins-worker' + } } options { @@ -27,13 +16,16 @@ pipeline { stages { stage('Client') { steps { -// container("nodejs"){ + container("nodejs"){ script { FAILED_STAGE=env.STAGE_NAME sh 'npm --version' dir('goofy-client') { - sh 'npm install' + sh 'echo "registry=http://nexus.ozg-sh.de/repository/npm-proxy" >> ~/.npmrc' + sh 'echo "_auth=amVua2luczpQaihzX0ZNNFU5ZC8=" >> ~/.npmrc' + + sh 'npm install --no-optional' if (env.BRANCH_NAME == 'release') { sh 'npm run ci-prodBuild' @@ -43,21 +35,15 @@ pipeline { } sh 'npm run ci-test' - - if (env.BRANCH_NAME == 'master') { - withSonarQubeEnv('sonarqube'){ - sh 'npm run ci-sonar' - } - } } } - //gi} + } } post { always{ junit testResults: 'goofy-client/test-report.xml', skipPublishingChecks: true } - } + } } stage('Server') { @@ -66,19 +52,9 @@ pipeline { FAILED_STAGE=env.STAGE_NAME } container("maven-11"){ - configFileProvider([configFile(fileId: '9aac2fac-7d8d-4128-846b-0a61951df703', variable: 'MAVEN_SETTINGS')]) { + configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { sh 'mvn --version' - sh 'mvn -s $MAVEN_SETTINGS -pl -goofy-client clean install' - - script { - if (env.BRANCH_NAME == 'master') { - dir('goofy-server'){ - withSonarQubeEnv('sonarqube'){ - sh 'mvn sonar:sonar' - } - } - } - } + sh 'mvn -s $MAVEN_SETTINGS -pl -goofy-client clean install spring-boot:build-image -Dspring-boot.build-image.imageName=docker.ozg-sh.de/goofy:build-latest' } } } @@ -87,34 +63,25 @@ pipeline { junit testResults: '**/target/surefire-reports/*.xml', skipPublishingChecks: true } } - } + } - stage('Openshift build') { + stage('Push Docker image') { steps { script { FAILED_STAGE=env.STAGE_NAME def pom = readMavenPom file: 'pom.xml' def version = pom.version - openshift.withCluster() { - openshift.withProject() { - dir('goofy-server') { - openshift.startBuild("goofy-builder", "--from-dir=.", "--follow", "--wait") - } - - openshift.tag("goofy-builder:build-latest", "goofy-builder:${env.BRANCH_NAME}-${version}") + container("docker") { + withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { + sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}' - if (env.BRANCH_NAME == 'release') { - openshift.tag("goofy-builder:${env.BRANCH_NAME}-${version}", "goofy-builder:latest") - } + sh "docker tag docker.ozg-sh.de/goofy:build-latest docker.ozg-sh.de/goofy:${env.BRANCH_NAME}-${version}" + sh "docker push docker.ozg-sh.de/goofy:${env.BRANCH_NAME}-${version}" if (env.BRANCH_NAME == 'master') { - def dc = openshift.selector('dc', 'goofy-e2e') - - openshift.tag("goofy-builder:${env.BRANCH_NAME}-${version}", "goofy-builder:snapshot-latest") - openshift.tag("goofy-builder:${env.BRANCH_NAME}-${version}", "goofy-builder:e2e-latest") - - dc.rollout().status() + sh 'docker tag docker.ozg-sh.de/goofy:build-latest docker.ozg-sh.de/goofy:e2e-test' + sh 'docker push docker.ozg-sh.de/goofy:e2e-test' } } } @@ -122,7 +89,7 @@ pipeline { } } - stage('E2E-Test') { + stage('E2E-Tests') { when { branch 'master' } @@ -130,10 +97,17 @@ pipeline { script { FAILED_STAGE=env.STAGE_NAME } - container("cypress"){ - sh 'npm --version' + + container("kubectl") { + sh 'kubectl rollout restart deployment/goofy -n sh-kiel-e2e' + sh 'kubectl rollout status deployment/goofy -n sh-kiel-e2e' + + sh 'kubectl rollout restart deployment/pluto -n sh-kiel-e2e' + sh 'kubectl rollout status deployment/pluto -n sh-kiel-e2e' + } + + container("cypress") { dir('goofy-client') { - sh 'npm install' sh 'npm run cypress:version' sh 'npm run cypress:ci-run' } @@ -153,7 +127,7 @@ pipeline { } } - stage('nexus deploy'){ + stage('Deploy Maven Artifacts to Nexus') { when { anyOf { branch 'master' @@ -165,55 +139,52 @@ pipeline { FAILED_STAGE = env.STAGE_NAME } container('maven-11') { - configFileProvider([configFile(fileId: '9aac2fac-7d8d-4128-846b-0a61951df703', variable: 'MAVEN_SETTINGS')]) { + configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { sh 'mvn -s $MAVEN_SETTINGS -pl -goofy-client -DskipTests deploy' } } } } - stage('Openshift deploy') { + stage('Deploy Goofy') { when { anyOf { - branch 'master'; + branch 'master' branch 'release' } } + steps { - script { - FAILED_STAGE=env.STAGE_NAME - def pom = readMavenPom file: 'pom.xml' - def version = pom.version - - openshift.withCluster() { - openshift.withProject() { - openshift.tag("goofy-builder:${env.BRANCH_NAME}-${version}", "sh-kiel-dev/goofy:${env.BRANCH_NAME}-${version}") + container("docker") { + script { + withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { + sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}' - if (env.BRANCH_NAME == 'master') { - openshift.tag("goofy-builder:snapshot-latest", "sh-kiel-dev/goofy:snapshot-latest") - } - if (env.BRANCH_NAME == 'release') { - openshift.tag("goofy-builder:latest", "sh-kiel-dev/goofy:latest") + sh 'docker tag docker.ozg-sh.de/goofy:build-latest docker.ozg-sh.de/goofy:latest' + sh 'docker push docker.ozg-sh.de/goofy:latest' } - } - if (env.BRANCH_NAME == 'master') { - openshift.withProject('sh-kiel-dev') { - def dc = openshift.selector('deployments', 'goofy') - dc.rollout().status() + if (env.BRANCH_NAME == 'master') { + sh 'docker tag docker.ozg-sh.de/goofy:build-latest docker.ozg-sh.de/goofy:snapshot-latest' + sh 'docker push docker.ozg-sh.de/goofy:snapshot-latest' } } } } - } - } - } - post { - failure { - script { - if (env.BRANCH_NAME == 'master') { - slackSend(color: "danger", message: "Goofy: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <${BLUE_OCEAN_URL}|${env.BUILD_NUMBER}>") + + container("kubectl"){ + script { + if (env.BRANCH_NAME == 'release') { + sh 'kubectl rollout restart deployment/goofy -n sh-kiel-test' + sh 'kubectl rollout status deployment/goofy -n sh-kiel-test' + } + + if (env.BRANCH_NAME == 'master') { + sh 'kubectl rollout restart deployment/goofy -n sh-kiel-dev' + sh 'kubectl rollout status deployment/goofy -n sh-kiel-dev' + } + } } } } diff --git a/goofy-client/apps/goofy-e2e/cypress-ci.json b/goofy-client/apps/goofy-e2e/cypress-ci.json index b885814e09290551c54cabf745fcfef7a99505ed..50d9684f04de44f6ded0b70eb26d439fd0a372c5 100644 --- a/goofy-client/apps/goofy-e2e/cypress-ci.json +++ b/goofy-client/apps/goofy-e2e/cypress-ci.json @@ -1,7 +1,7 @@ { - "baseUrl": "http://goofy-e2e-dev-tools.apps.lab.okd.local/", + "baseUrl": "https://kiel.e2e.ozg-sh.de", "env": { - "dbUrl": "e2e-test:sadf3tr%2Cmb4%25.@172.30.190.222:27017", + "dbUrl": "e2e-test:JkejFfXD@192.168.101.11:30423", "database": "sh-kiel-e2e-test", "keycloakRealm": "sh-kiel-dev", "keycloakUrl": "https://sso.ozg-sh.de/", diff --git a/goofy-client/package.json b/goofy-client/package.json index 23ccedb799db9e711ee875cd814224b0b488353d..b132de455917cad83ee8c29c69397116400bebf7 100644 --- a/goofy-client/package.json +++ b/goofy-client/package.json @@ -93,7 +93,6 @@ "@typescript-eslint/eslint-plugin": "4.3.0", "@typescript-eslint/parser": "4.3.0", "codelyzer": "6.0.1", - "cypress": "^6.6.0", "cypress-mochawesome-reporter": "^1.3.0", "dotenv": "6.2.0", "eslint": "7.10.0", @@ -111,5 +110,8 @@ "ts-node": "9.1.1", "tslint": "6.1.3", "typescript": "^4.0.7" + }, + "optionalDependencies": { + "cypress": "^6.6.0" } }