110 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
| pipeline {
 | |
|     agent any
 | |
|     tools {
 | |
|         maven '3.9.6'
 | |
|     }
 | |
|     stages {
 | |
|         stage('Setup') {
 | |
|             steps {
 | |
|                 sh "chmod +x -R ${env.WORKSPACE}"
 | |
|                 sh "git submodule update --init --recursive" // make sure submodules are also checked out
 | |
|             }
 | |
|         }
 | |
|         stage ('Check Environment') {
 | |
|             steps {
 | |
|                 sh 'mvn --version'
 | |
|                 sh 'java -version'
 | |
|                 sh 'echo $JAVA_HOME'
 | |
|                 sh 'echo $JAVA_INCLUDE_PATH'
 | |
|             }
 | |
|         }
 | |
|         stage('Build (Engine)') {
 | |
|             steps {
 | |
|                 sh 'mvn -B -DskipTests clean package'
 | |
|             }
 | |
|         }
 | |
|         stage('Build (Documentation)') {
 | |
|             steps {
 | |
|                 sh 'cd ./docs && doxygen ./Doxyfile'
 | |
|                 sh 'rm -rf /docs/*'
 | |
|                 sh 'cd ./docs-dist/html && rm -f ./docs.tar.gz'
 | |
|                 sh 'cd ./docs-dist/html && tar -czvf ./docs.tar.gz ./*'
 | |
|                 sh 'cp ./docs-dist/html/docs.tar.gz /docs/docs.tar.gz && cd /docs/ && tar -xzvf ./docs.tar.gz'
 | |
|             }
 | |
|         }
 | |
|         stage('Test') {
 | |
|             steps {
 | |
|                 wrap(
 | |
|                     [
 | |
|                         $class: 'Xvfb',
 | |
|                         additionalOptions: '',
 | |
|                         assignedLabels: '',
 | |
|                         autoDisplayName: true,
 | |
|                         debug: true,
 | |
|                         displayNameOffset: 0,
 | |
|                         installationName: 'Default',
 | |
|                         parallelBuild: true,
 | |
|                         screen: '1920x1080x24',
 | |
|                         timeout: 25
 | |
|                     ]
 | |
|                 ) {
 | |
|                     script {
 | |
|                         sh 'rm -f ./testsuccess'
 | |
|                         catchError {
 | |
|                             //-fae "fail-at-end", tells maven to not fail the job until all tests have been run
 | |
|                             sh 'mvn test -P integration -fae && touch ./testsuccess'
 | |
|                         }
 | |
|                         // sh 'if ! grep -q "Errors: 2" ./target/surefire-reports/*; then touch ./testsuccess; fi'
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             post {
 | |
|                 always {
 | |
|                     junit testResults: 'target/surefire-reports/*.xml', keepLongStdio: true, testDataPublishers: [[$class:'AttachmentPublisher']]
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         stage('DebugTests') {
 | |
|             when {
 | |
|                 expression {
 | |
|                     !fileExists('./testsuccess')
 | |
|                 }
 | |
|             }
 | |
|             steps {
 | |
|                 wrap(
 | |
|                     [
 | |
|                         $class: 'Xvfb',
 | |
|                         additionalOptions: '',
 | |
|                         assignedLabels: '',
 | |
|                         autoDisplayName: true,
 | |
|                         debug: true,
 | |
|                         displayNameOffset: 0,
 | |
|                         installationName: 'Default',
 | |
|                         parallelBuild: true,
 | |
|                         screen: '1920x1080x24',
 | |
|                         timeout: 25
 | |
|                     ]
 | |
|                 ) {
 | |
|                     script {
 | |
|                         sh 'curl https://build.lwjgl.org/addons/lwjglx-debug/lwjglx-debug-1.0.0.jar -v -L > ./lwjglx-debug-1.0.0.jar'
 | |
|                         sh 'mvn clean test -P integrationDebug -DmaxLogs -fae'
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         stage('Test (Native)') {
 | |
|             steps {
 | |
|                 script {
 | |
|                     catchError {
 | |
|                         sh 'cd ./out/build && ctest --output-junit ./Testing/testRes.xml && cd ../..'
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             post {
 | |
|                 always {
 | |
|                     junit testResults: 'out/build/Testing/**.xml', keepLongStdio: true, testDataPublishers: [[$class:'AttachmentPublisher']]
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| } |