pipeline { agent any parameters { booleanParam(defaultValue: true, 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') } stages { stage ('build') { parallel { stage ('x86') { agent { label 'linux && x84 && teaspeak' } environment { //General flags CXX_FLAGS = '' C_FLAGS = '' //CMake specific flags CMAKE_OPTIONS = '' CMAKE_MAKE_OPTIONS = '-j 12' //Make specific flags MAKE_OPTIONS = '-j 12' } stages { stage ('Initialize libraries') { when { expression { params.build_libraries } } steps { sh 'apt-get update' sh 'git reset --hard origin/master; git submodule update --init --remote --recursive --force' sh 'git submodule update --merge' sh './attach_modules.sh' sh 'cd libraries; ./build.sh' } } stage ('Build TeaSpeak Debug') { environment { TEASPEAK_BUILD_TYPE="Debug" } stages { stage ('build') { steps { sh './build_teaspeak.sh' } } stage ('deploy') { when { expression { params.deploy_build } } steps { sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/x86' } } } } } } stage ('amd64') { agent { label 'linux && amd64 && teaspeak' } environment { //General flags CXX_FLAGS = '' C_FLAGS = '' //CMake specific flags CMAKE_OPTIONS = '' CMAKE_MAKE_OPTIONS = '-j 12' //Make specific flags MAKE_OPTIONS = '-j 12' } stages { stage ('Initialize libraries') { when { expression { params.build_libraries } } steps { sh 'apt-get update' sh 'git reset --hard origin/master; git submodule update --init --remote --recursive --force' sh 'git submodule update --merge' sh './attach_modules.sh' sh 'cd libraries; ./build.sh' } } stage ('Build TeaSpeak') { parallel { stage ('Build TeaSpeak Debug') { environment { TEASPEAK_BUILD_TYPE="Debug" } stages { stage ('build') { steps { sh './build_teaspeak.sh' } } stage ('deploy') { when { expression { params.deploy_build } } steps { sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/amd64' } } } } stage ('Build TeaSpeak Release') { when { expression { params.build_optimized } } environment { TEASPEAK_BUILD_TYPE="Release" } stages { stage ('build') { steps { sh './build_teaspeak.sh' } } stage ('deploy') { when { expression { params.deploy_build == true } } steps { sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/amd64_optimized' } } } } } } } } } } } }