diff --git a/spring-jenkins-pipeline/pom.xml b/spring-jenkins-pipeline/pom.xml index 1c35f0f73b..9b4727a235 100644 --- a/spring-jenkins-pipeline/pom.xml +++ b/spring-jenkins-pipeline/pom.xml @@ -21,6 +21,7 @@ UTF-8 UTF-8 1.8 + 2.17 @@ -48,7 +49,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 2.17 + ${checkstyle.version} diff --git a/spring-jenkins-pipeline/scripted-pipeline-unix-nonunix b/spring-jenkins-pipeline/scripted-pipeline-unix-nonunix new file mode 100644 index 0000000000..861c38c8a2 --- /dev/null +++ b/spring-jenkins-pipeline/scripted-pipeline-unix-nonunix @@ -0,0 +1,91 @@ +node { + stage 'Clone the project' + git 'https://github.com/dassiorleando/tutorials.git' + + dir('spring-jenkins-pipeline') { + stage("Compilation and Analysis") { + parallel 'Compilation': { + if (isUnix()) { + sh "./mvnw clean install -DskipTests" + } else { + bat "./mvnw.cmd clean install -DskipTests" + } + }, 'Static Analysis': { + stage("Checkstyle") { + if (isUnix()) { + sh "./mvnw checkstyle:checkstyle" + + step([$class: 'CheckStylePublisher', + canRunOnFailed: true, + defaultEncoding: '', + healthy: '100', + pattern: '**/target/checkstyle-result.xml', + unHealthy: '90', + useStableBuildAsReference: true + ]) + } else { + bat "./mvnw.cmd checkstyle:checkstyle" + + step([$class: 'CheckStylePublisher', + canRunOnFailed: true, + defaultEncoding: '', + healthy: '100', + pattern: '**\target\checkstyle-result.xml', + unHealthy: '90', + useStableBuildAsReference: true + ]) + } + } + } + } + + stage("Tests and Deployment") { + parallel 'Unit tests': { + stage("Runing unit tests") { + if (isUnix()) { + sh "./mvnw test -Punit" + + step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*UnitTest.xml']) + } else { + bat "./mvnw.cmd test -Punit" + + step([$class: 'JUnitResultArchiver', testResults: '**\target\surefire-reports\TEST-*UnitTest.xml']) + } + } + }, 'Integration tests': { + stage("Runing integration tests") { + if (isUnix()) { + sh "./mvnw test -Pintegration" + + step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*IntegrationTest.xml']) + } else { + bat "./mvnw.cmd test -Pintegration" + + step([$class: 'JUnitResultArchiver', testResults: '**\target\surefire-reports\TEST-*IntegrationTest.xml']) + } + } + }, 'Deployment': { + stage("Staging") { + if (isUnix()) { + sh "pid=\$(lsof -i:8989 -t); kill -TERM \$pid || kill -KILL \$pid" + } else { + bat "FOR /F 'tokens=5 delims= ' %%P IN ('netstat -ano ^| findstr :8989') DO TaskKill.exe /PID %%P" + } + + withEnv(['JENKINS_NODE_COOKIE=dontkill']) { + if (isUnix()) { + sh 'nohup ./mvnw spring-boot:run -Dserver.port=8989 &' + sh "while ! httping -qc1 http://localhost:8989 ; do sleep 1 ; done" + sh "curl http://localhost:8989" + } else { + bat 'start ./mvnw.cmd spring-boot:run -Dserver.port=8989' + // Here we need to check(loop) if localhost:8989 is up + // Once it's we continue de script + bat "curl.exe http://localhost:8989" + } + } + } + } + } + } +} \ No newline at end of file