99 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
| pipeline {
 | |
| 	agent any
 | |
| 
 | |
|     parameters {
 | |
|        booleanParam(defaultValue: true, description: 'Deploy this build', name: 'deploy_build')
 | |
|        choice(choices: ['none', 'win32', 'linux'], description: 'Which os do you want to build?', name: 'os_type')
 | |
|        choice(choices: ['amd64'], description: 'Which target do you want to build?', name: 'os_arch')
 | |
|        choice(choices: ['release'], description: 'Target build channel', name: 'channel')
 | |
|        text(name: 'force_rebuild', defaultValue: '', description: 'Force rebuild libraries (Separate with a ";" | * = everything)')
 | |
|     }
 | |
| 
 | |
| 	environment {
 | |
| 		//General flags
 | |
| 		CXX_FLAGS = ''
 | |
| 		C_FLAGS = ''
 | |
| 
 | |
| 		//CMake specific flags
 | |
| 		CMAKE_OPTIONS = ''
 | |
| 		CMAKE_MAKE_OPTIONS = '-j12'
 | |
| 
 | |
| 		//Make specific flags
 | |
| 		MAKE_OPTIONS = '-j12'
 | |
| 
 | |
| 		force_rebuild="${params.force_rebuild}"
 | |
| 
 | |
| 		build_os_type="${params.os_type}"
 | |
| 		build_os_arch="${params.os_arch}"
 | |
|         teaclient_deploy_channel = "${params.deploy_build ? "${params.channel}" : ""}"
 | |
| 	}
 | |
| 
 | |
| 	stages {
 | |
| 		stage ('build::linux') {
 | |
|             when {
 | |
|                 expression { params.os_type == "linux" }
 | |
|             }
 | |
| 
 | |
| 		    stages {
 | |
|                 stage ('build::linux::amd64') {
 | |
|                     agent {
 | |
|                         label 'linux && amd64 && teaspeak-client'
 | |
|                     }
 | |
|                     when {
 | |
|                         expression { params.os_arch == "amd64" }
 | |
|                     }
 | |
| 
 | |
|                     environment {
 | |
|                         CMAKE_BUILD_TYPE="RelWithDebInfo" /* we build out libraries every time in release mode! (Performance improve) */
 | |
|                     }
 | |
| 
 | |
|                     stages {
 | |
|                         stage('build::linux::amd64::libraries') {
 | |
|                             steps {
 | |
|                                 sh 'git submodule update --init --recursive -f'
 | |
|                                 sh 'git submodule foreach git reset --hard'
 | |
|                                 sh './third_party/build.sh'
 | |
|                                 sh './build_shared.sh'
 | |
|                             }
 | |
|                         }
 | |
|                         stage('build::linux::amd64::build') {
 | |
|                             steps {
 | |
|                                 echo "Deploy channel (empty on no deploy): ${teaclient_deploy_channel}"
 | |
|                                 withCredentials([string(credentialsId: 'teaclient_deploy_secret', variable: 'teaclient_deploy_secret')]) {
 | |
|                                     sh './build_client.sh'
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
| 		}
 | |
| 		stage ('build::win32') {
 | |
|             when {
 | |
|                 expression { params.os_type == "win32" }
 | |
|             }
 | |
| 
 | |
| 		    stages {
 | |
|                 stage ('build::win32::amd64') {
 | |
|                     agent {
 | |
|                         label 'win32 && amd64 && teaspeak-client'
 | |
|                     }
 | |
|                     when {
 | |
|                         expression { params.os_arch == "amd64" }
 | |
|                     }
 | |
| 
 | |
|                     stages {
 | |
|                         stage('build::win32::amd64::libraries') {
 | |
|                             steps {
 | |
|                                 sh 'git submodule update --init --recursive -f'
 | |
|                                 sh 'git submodule foreach git reset --hard'
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 |