| 
									
										
										
										
											2019-10-31 20:43:47 -05:00
										 |  |  | node { | 
					
						
							|  |  |  |     stage 'Clone the project' | 
					
						
							|  |  |  |     git 'https://github.com/eugenp/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" | 
					
						
							|  |  |  |                     } 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("Running unit tests") { | 
					
						
							|  |  |  |                     try { | 
					
						
							|  |  |  |                         if (isUnix()) { | 
					
						
							|  |  |  |                             sh "./mvnw test -Punit" | 
					
						
							|  |  |  |                         } else { | 
					
						
							|  |  |  |                             bat "./mvnw.cmd test -Punit" | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                     } catch(err) { | 
					
						
							|  |  |  |                         step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*UnitTest.xml']) | 
					
						
							|  |  |  |                         throw err | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                     step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*UnitTest.xml']) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             }, 'Integration tests': { | 
					
						
							|  |  |  |                 stage("Running integration tests") { | 
					
						
							|  |  |  |                     try { | 
					
						
							|  |  |  |                         if (isUnix()) { | 
					
						
							|  |  |  |                             sh "./mvnw test -Pintegration" | 
					
						
							|  |  |  |                         } else { | 
					
						
							|  |  |  |                             bat "./mvnw.cmd test -Pintegration" | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                     } catch(err) { | 
					
						
							|  |  |  |                         step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*IntegrationTest.xml']) | 
					
						
							|  |  |  |                         throw err | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                     step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*IntegrationTest.xml']) | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             stage("Staging") { | 
					
						
							|  |  |  |                 if (isUnix()) { | 
					
						
							|  |  |  |                     sh "pid=\$(lsof -i:8989 -t); kill -TERM \$pid || kill -KILL \$pid" | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     bat "FOR /F \"tokens=5 delims= \" %%G IN (\"netstat -a | findstr :8989\") DO TaskKill.exe /PID %%G /fi \"memusage gt 0\"" | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 withEnv(['JENKINS_NODE_COOKIE=dontkill']) { | 
					
						
							|  |  |  |                     if (isUnix()) { | 
					
						
							|  |  |  |                         sh 'nohup ./mvnw spring-boot:run -Dserver.port=8989 &' | 
					
						
							|  |  |  |                     } else { | 
					
						
							| 
									
										
										
										
											2020-03-18 16:27:58 +01:00
										 |  |  |                         bat 'start mvnw.cmd spring-boot:run -Dserver.port=8989' | 
					
						
							| 
									
										
										
										
											2019-10-31 20:43:47 -05:00
										 |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |