def getWorkspace() { pwd().replace("%2F", "_") } def buildWindows(jobname, cmakeEnv) { def destination = new File('/b/' + jobname + '_' + env.BRANCH_NAME.replace("/", "_")) if(destination.exists()) destination.deleteDir() bat 'buildscripts/build_windows.cmd' + ' "' + cmakeEnv + '" ' + destination.absolutePath + ' ' + pwd() } def build_MinGW32(jobname) { node('windows') { ws(getWorkspace()) { stage("Checkout") { checkout scm } stage("Build MinGW32") { withEnv(["PATH+MINGW=C:/Program Files (x86)/mingw-w64/i686-6.2.0-posix-dwarf-rt_v5-rev0/mingw32/bin"]) { buildWindows(jobname, "MinGW Makefiles") } } } } } def build_Linux(jobname) { node('linux') { ws(getWorkspace()) { stage("Checkout") { checkout scm } stage("Build Linux Release") { sh 'chmod +x buildscripts/build_linux_release.sh' sh 'buildscripts/build_linux_release.sh' } stage("Build Linux Debug Coverage") { sh 'chmod +x buildscripts/build_linux_debug_coverage.sh' sh 'buildscripts/build_linux_debug_coverage.sh' } } } } def build_VS2015_32(jobname) { node('windows') { ws(getWorkspace()) { stage("Checkout") { checkout scm } stage("Build VS2015") { buildWindows(jobname, "Visual Studio 14 2015") } } } } def build_VS2015_64(jobname) { node('windows') { ws(getWorkspace()) { stage("Checkout") { checkout scm } stage("Build VS2015") { buildWindows(jobname, "Visual Studio 14 2015 Win64") } } } } def buildAndTest(jobname) { echo jobname if (jobname.toLowerCase().endsWith("all")){ build_MinGW32(jobname) build_Linux(jobname) build_VS2015_32(jobname) build_VS2015_64(jobname) } if (jobname.toLowerCase().endsWith("mingw32")){ build_MinGW32(jobname) } if (jobname.toLowerCase().endsWith("linux")){ build_Linux(jobname) } if (jobname.toLowerCase().endsWith("vs2015")){ build_VS2015_32(jobname) } if (jobname.toLowerCase().endsWith("vs2015_32")){ build_VS2015_32(jobname) } if (jobname.toLowerCase().endsWith("vs2015_64")){ build_VS2015_64(jobname) } } buildAndTest("${env.JOB_NAME}".tokenize( '/' )[0])