pipeline { agent any parameters { booleanParam(defaultValue: true, description: 'Deploy this build', name: 'deploy_build') choice(choices: ['none', 'x86_debug', 'x86_release', 'x86_stable', 'amd64_debug', 'amd64_release', 'amd64_stable', 'arm32v7_debug', 'arm32v7_release', 'arm32v7_stable'], description: 'Which target do you want to build?', name: 'target') } environment { //CMake specific flags CMAKE_OPTIONS = '' CMAKE_MAKE_OPTIONS = '-j32' //Make specific flags MAKE_OPTIONS = '-j32' JENKINS_BUILD_TARGET="${params.target}" } stages { /* build all amd64 stuff */ stage ('build::amd64') { agent { label 'linux && amd64 && teaspeak' } when { expression { params.target == "amd64_debug" || params.target == "amd64_release" || params.target == "amd64_stable" } } environment { build_os_type="linux" build_os_arch="amd64" } stages { stage ('build::amd64::libraries') { environment { CMAKE_BUILD_TYPE="RelWithDebInfo" /* we build out libraries every time in release mode! (Performance improve) */ } steps { sh './attach_modules.sh' sh 'cd libraries; ./build.sh' } } stage ('build::amd64::debug') { when { expression { params.target == "amd64_debug" } } stages { stage ('build::amd64::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::amd64::release') { when { expression { params.target == "amd64_release" } } stages { stage ('build::amd64::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::amd64::stable') { when { expression { params.target == "amd64_stable" } } stages { stage ('build::amd64::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_arch="x86" } stages { stage ('build::x86::libraries') { environment { CMAKE_BUILD_TYPE="RelWithDebInfo" /* we build out libraries every time in release mode! (Performance improve) */ BUILD_ARCH_TARGET="x86" } steps { sh './attach_modules.sh' 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::x86::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::x86::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::x86::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::x86::stable::deploy') { when { expression { params.deploy_build } } steps { sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/x86_stable' } } } } } } /* build all arm32v7 stuff */ stage ('build::arm32v7') { agent { label 'linux && arm32v7 && teaspeak' } when { expression { params.target == "arm32v7_debug" || params.target == "arm32v7_release" || params.target == "arm32v7_stable" } } environment { build_os_type="linux" build_os_arch="arm32v7" } stages { stage ('build::arm32v7::libraries') { environment { CMAKE_BUILD_TYPE="RelWithDebInfo" /* we build out libraries every time in release mode! (Performance improve) */ } steps { sh './attach_modules.sh' sh 'cd libraries; ./build.sh' } } stage ('build::arm32v7::debug') { when { expression { params.target == "arm32v7_debug" } } stages { stage ('build::amd64::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/arm32v7_debug' } } } } stage ('build::arm32v7::release') { when { expression { params.target == "arm32v7_release" } } stages { stage ('build::arm32v7::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::arm32v7::release::deploy') { when { expression { params.deploy_build } } steps { sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/arm32v7_optimized' } } } } stage ('build::arm32v7::stable') { when { expression { params.target == "arm32v7_stable" } } stages { stage ('build::arm32v7::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::arm32v7::stable::deploy') { when { expression { params.deploy_build } } steps { sh 'cd TeaSpeak/server/repro/; chmod 400 build_private_key; ./build.sh linux/arm32v7_stable' } } } } } } } }