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