diff --git a/.gitmodules b/.gitmodules index 1ca7f30..44e3720 100644 --- a/.gitmodules +++ b/.gitmodules @@ -61,3 +61,6 @@ path = libraries/jemalloc url = https://github.com/jemalloc/jemalloc.git branch = dev +[submodule "Web-Client"] + path = Web-Client + url = https://github.com/TeaSpeak/TeaWeb.git diff --git a/Jenkinsfile b/Jenkinsfile index c044442..321ed7f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -5,7 +5,7 @@ pipeline { 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: ['all', 'x86_debug', 'x64_debug', 'x64_release'], description: 'Which target do you want to build?', name: 'target') + choice(defaultValue: 'none', 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 { @@ -22,105 +22,52 @@ pipeline { } stages { - stage ('build') { - parallel { - stage ('build::x86::debug') { - agent { - label 'linux && x84 && teaspeak' - } + /* first of all we have to update our libraries */ + stage ('libraries::update') { + when { + expression { params.target != 'none' } + } + + steps { + sh 'git reset --hard origin/master; git submodule update --init --remote --recursive --force' + sh 'git submodule update --merge' + sh './attach_modules.sh' + } + } + + /* 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" } + } + + stages { + stage ('build::x64::libraries') { when { - expression { params.target == "" || params.target == "all" || params.target == "x86_debug" } + expression { params.build_libraries } + } + + environment { + CMAKE_BUILD_TYPE="RelWithDebInfo" /* we build out libraries every time in release mode! (Performance improve) */ + BUILD_TARGET=params.target } - stages { - stage ('build::x86::debug::libraries') { - stages { - stage ('build::x86::debug::libraries::update') { - steps { - sh 'git reset --hard origin/master; git submodule update --init --remote --recursive --force' - sh 'git submodule update --merge' - sh './attach_modules.sh' - } - } - - stage ('build::x86::debug::libraries::build') { - when { - expression { params.build_libraries } - } - - environment { - CMAKE_BUILD_TYPE="Debug" - } - - steps { - sh 'cd libraries; ./build.sh' - } - } - } - } - - - stage ('build::x86::debug') { - environment { - TEASPEAK_BUILD_TYPE="Debug" - CMAKE_BUILD_TYPE="Debug" - } - - stages { - stage ('build::x86::debug::build') { - 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' - } - } - } - } + steps { + sh 'cd libraries; ./build.sh' } } - - stage ('build::amd64::debug') { - agent { - label 'linux && amd64 && teaspeak' - } + + + stage ('build::x64::debug') { when { - expression { params.target == "" || params.target == "all" || params.target == "x64_debug" } + expression { params.target == "x64_debug" } } - + stages { - stage ('build::amd64::debug::libraries') { - stages { - stage ('build::amd64::debug::libraries::update') { - steps { - sh 'git reset --hard origin/master; git submodule update --init --remote --recursive --force' - sh 'git submodule update --merge' - sh './attach_modules.sh' - } - } - - stage ('build::amd64::debug::libraries::build') { - when { - expression { params.build_libraries } - } - - environment { - CMAKE_BUILD_TYPE="Debug" - } - - steps { - sh 'cd libraries; ./build.sh' - } - } - } - } - - stage ('build::amd64::debug::build') { + stage ('build::x64::debug::build') { environment { TEASPEAK_BUILD_TYPE="Debug" CMAKE_BUILD_TYPE="Debug" @@ -142,44 +89,14 @@ pipeline { } } } - - stage ('build::amd64::release::deploy') { + + stage ('build::x64::release') { when { - expression { params.target == "all" || params.target == "x64_release" || params.build_optimized } + expression { params.target == "x64_release" } } - - agent { - label 'linux && amd64 && teaspeak' - } - + stages { - stage ('build::amd64::release::libraries') { - stages { - stage ('build::amd64::release::libraries::update') { - steps { - sh 'git reset --hard origin/master; git submodule update --init --remote --recursive --force' - sh 'git submodule update --merge' - sh './attach_modules.sh' - } - } - - stage ('build::amd64::release::libraries::build') { - when { - expression { params.build_libraries } - } - - environment { - CMAKE_BUILD_TYPE="RelWithDebInfo" - } - - steps { - sh 'cd libraries; ./build.sh' - } - } - } - } - - stage ('build::amd64::release::build') { + stage ('build::x64::release::build') { environment { TEASPEAK_BUILD_TYPE="Release" CMAKE_BUILD_TYPE="RelWithDebInfo" @@ -203,5 +120,91 @@ pipeline { } } } + + /* 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" } + } + + stages { + 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_TARGET=params.target + } + + 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" + } + + 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' + } + } + } + } + + 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" + } + + 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' + } + } + } + } + } + } } } diff --git a/Web-Client b/Web-Client new file mode 160000 index 0000000..a10e794 --- /dev/null +++ b/Web-Client @@ -0,0 +1 @@ +Subproject commit a10e794e3b5e98b807327bcfee321a649b0091a1