293 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			293 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
| pipeline {
 | |
|     agent any
 | |
| 
 | |
|     parameters {
 | |
|        booleanParam(defaultValue: false, description: 'Enabled/disables the building of an optimized build', name: 'build_optimized')
 | |
|        booleanParam(defaultValue: true, description: 'Build the libraries as well', name: 'build_libraries')
 | |
|        booleanParam(defaultValue: true, description: 'Deploy this build', name: 'deploy_build')
 | |
|        choice(choices: ['none', 'x86_debug', 'x86_release', 'x86_stable', 'x64_debug', 'x64_release', 'x64_stable'], description: 'Which target do you want to build?', name: 'target')
 | |
|     }
 | |
| 
 | |
| 	environment {
 | |
| 		//General flags
 | |
| 		CXX_FLAGS = ''
 | |
| 		C_FLAGS = ''
 | |
| 
 | |
| 		//CMake specific flags
 | |
| 		CMAKE_OPTIONS = ''
 | |
| 		CMAKE_MAKE_OPTIONS = '-j 12'
 | |
| 
 | |
| 		//Make specific flags
 | |
| 		MAKE_OPTIONS = '-j 12'
 | |
| 		
 | |
| 		JENKINS_BUILD_TARGET="${params.target}"
 | |
| 	}
 | |
| 	
 | |
| 	stages {
 | |
| 		/* build all amd64 stuff */
 | |
| 		stage ('build::x64') {
 | |
| 			agent {
 | |
| 				label 'linux && amd64 && teaspeak'
 | |
| 			}
 | |
| 			when {
 | |
| 				expression { params.target == "x64_debug" || params.target == "x64_release" || params.target == "x64_stable" }
 | |
| 			}
 | |
| 						
 | |
| 			environment {
 | |
| 				build_os_type="linux"
 | |
| 				build_os_type="x64"
 | |
| 			}
 | |
| 			
 | |
| 			stages {	
 | |
| 				/* first of all we have to update our libraries */
 | |
| 				stage ('libraries::update') {
 | |
| 					steps {
 | |
| 						sh './attach_modules.sh'
 | |
| 					}
 | |
| 				}
 | |
| 
 | |
| 				stage ('build::x64::libraries') {
 | |
| 					when {
 | |
| 						expression { params.build_libraries }
 | |
| 					}
 | |
| 						
 | |
| 					environment {
 | |
| 						CMAKE_BUILD_TYPE="RelWithDebInfo" /* we build out libraries every time in release mode! (Performance improve) */
 | |
| 					}
 | |
| 
 | |
| 					steps {
 | |
| 						sh 'cd libraries; ./build.sh'
 | |
| 					}
 | |
| 				}
 | |
| 				
 | |
| 				
 | |
| 				stage ('build::x64::debug') {
 | |
| 					when {
 | |
| 						expression { params.target == "x64_debug" }
 | |
| 					}
 | |
| 					
 | |
| 					stages {
 | |
| 						stage ('build::x64::debug::build') {
 | |
| 							environment {
 | |
| 								TEASPEAK_BUILD_TYPE="Debug"
 | |
| 								CMAKE_BUILD_TYPE="Debug"
 | |
| 								
 | |
| 								TEASPEAK_DEPLOY_TYPE_SPECIFIER="-DBUILD_TYPE=1 -DBUILD_TYPE_NAME='beta'"
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh './build_teaspeak.sh'
 | |
| 							}
 | |
| 						}
 | |
| 
 | |
| 						stage ('build::amd64::debug::deploy') {
 | |
| 							when {
 | |
| 								expression { params.deploy_build }
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/amd64_debug'
 | |
| 							}
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 				
 | |
| 				stage ('build::x64::release') {
 | |
| 					when {
 | |
| 						expression { params.target == "x64_release" }
 | |
| 					}
 | |
| 					
 | |
| 					stages {
 | |
| 						stage ('build::x64::release::build') {
 | |
| 							environment {
 | |
| 								TEASPEAK_BUILD_TYPE="Release"
 | |
| 								CMAKE_BUILD_TYPE="RelWithDebInfo"
 | |
| 								
 | |
| 								TEASPEAK_DEPLOY_TYPE_SPECIFIER="-DBUILD_TYPE=1 -DBUILD_TYPE_NAME='beta'"
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh './build_teaspeak.sh'
 | |
| 							}
 | |
| 						}
 | |
| 
 | |
| 						stage ('build::amd64::release::deploy') {
 | |
| 							when {
 | |
| 								expression { params.deploy_build }
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/amd64_optimized'
 | |
| 							}
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 				
 | |
| 				stage ('build::x64::stable') {
 | |
| 					when {
 | |
| 						expression { params.target == "x64_stable" }
 | |
| 					}
 | |
| 					
 | |
| 					stages {
 | |
| 						stage ('build::x64::stable::build') {
 | |
| 							environment {
 | |
| 								TEASPEAK_BUILD_TYPE="Release"
 | |
| 								CMAKE_BUILD_TYPE="RelWithDebInfo"
 | |
| 								
 | |
| 								TEASPEAK_DEPLOY_TYPE_SPECIFIER="-DBUILD_TYPE=0 -DBUILD_TYPE_NAME=''"
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh './build_teaspeak.sh'
 | |
| 							}
 | |
| 						}
 | |
| 
 | |
| 						stage ('build::amd64::stable::deploy') {
 | |
| 							when {
 | |
| 								expression { params.deploy_build }
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/amd64_stable'
 | |
| 							}
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		/* build all x86 stuff */
 | |
| 		stage ('build::x86') {
 | |
| 			agent {
 | |
| 				label 'linux && x86 && teaspeak'
 | |
| 			}
 | |
| 			when {
 | |
| 				expression { params.target == "x86_debug" || params.target == "x86_release" || params.target == "x86_stable" }
 | |
| 			}
 | |
| 						
 | |
| 			environment {
 | |
| 				build_os_type="linux"
 | |
| 				build_os_type="x86"
 | |
| 			}
 | |
| 			
 | |
| 			stages {
 | |
| 				/* first of all we have to update our libraries */
 | |
| 				stage ('libraries::update') {
 | |
| 					steps {
 | |
| 						sh './attach_modules.sh'
 | |
| 					}
 | |
| 				}
 | |
| 				
 | |
| 				stage ('build::x86::libraries') {
 | |
| 					when {
 | |
| 						expression { params.build_libraries }
 | |
| 					}
 | |
| 						
 | |
| 					environment {
 | |
| 						CMAKE_BUILD_TYPE="RelWithDebInfo" /* we build out libraries every time in release mode! (Performance improve) */
 | |
| 						BUILD_ARCH_TARGET="x86"
 | |
| 					}
 | |
| 
 | |
| 					steps {
 | |
| 						sh 'cd libraries; ./build.sh'
 | |
| 					}
 | |
| 				}
 | |
| 				
 | |
| 				
 | |
| 				stage ('build::x86::debug') {
 | |
| 					when {
 | |
| 						expression { params.target == "x86_debug" }
 | |
| 					}
 | |
| 					
 | |
| 					stages {
 | |
| 						stage ('build::x86::debug::build') {
 | |
| 							environment {
 | |
| 								TEASPEAK_BUILD_TYPE="Debug"
 | |
| 								CMAKE_BUILD_TYPE="Debug"
 | |
| 								
 | |
| 								TEASPEAK_DEPLOY_TYPE_SPECIFIER="-DBUILD_TYPE=1 -DBUILD_TYPE_NAME='beta'"
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh './build_teaspeak.sh'
 | |
| 							}
 | |
| 						}
 | |
| 
 | |
| 						stage ('build::amd64::debug::deploy') {
 | |
| 							when {
 | |
| 								expression { params.deploy_build }
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/x86_debug'
 | |
| 							}
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 				
 | |
| 				stage ('build::x86::release') {
 | |
| 					when {
 | |
| 						expression { params.target == "x86_release" }
 | |
| 					}
 | |
| 					
 | |
| 					stages {
 | |
| 						stage ('build::x86::release::build') {
 | |
| 							environment {
 | |
| 								TEASPEAK_BUILD_TYPE="Release"
 | |
| 								CMAKE_BUILD_TYPE="RelWithDebInfo"
 | |
| 								
 | |
| 								TEASPEAK_DEPLOY_TYPE_SPECIFIER="-DBUILD_TYPE=1 -DBUILD_TYPE_NAME='beta'"
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh './build_teaspeak.sh'
 | |
| 							}
 | |
| 						}
 | |
| 
 | |
| 						stage ('build::amd64::release::deploy') {
 | |
| 							when {
 | |
| 								expression { params.deploy_build }
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/x86_optimized'
 | |
| 							}
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 				
 | |
| 				stage ('build::x64::stable') {
 | |
| 					when {
 | |
| 						expression { params.target == "x86_stable" }
 | |
| 					}
 | |
| 					
 | |
| 					stages {
 | |
| 						stage ('build::x86::stable::build') {
 | |
| 							environment {
 | |
| 								TEASPEAK_BUILD_TYPE="Release"
 | |
| 								CMAKE_BUILD_TYPE="RelWithDebInfo"
 | |
| 								
 | |
| 								TEASPEAK_DEPLOY_TYPE_SPECIFIER="-DBUILD_TYPE=0 -DBUILD_TYPE_NAME=''"
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh './build_teaspeak.sh'
 | |
| 							}
 | |
| 						}
 | |
| 
 | |
| 						stage ('build::amd64::stable::deploy') {
 | |
| 							when {
 | |
| 								expression { params.deploy_build }
 | |
| 							}
 | |
| 
 | |
| 							steps {
 | |
| 								sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/x86_stable'
 | |
| 							}
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |