import hudson.model.Result import hudson.model.*; import jenkins.model.CauseOfInterruption node { } def skipbuild=0 def win_stop=0 def abortPreviousBuilds() { def currentJobName = env.JOB_NAME def currentBuildNumber = env.BUILD_NUMBER.toInteger() def jobs = Jenkins.instance.getItemByFullName(currentJobName) def builds = jobs.getBuilds() for (build in builds) { if (!build.isBuilding()) { continue; } if (currentBuildNumber == build.getNumber().toInteger()) { continue; } build.doKill() //doTerm(),doKill(),doTerm() } } // abort previous build abortPreviousBuilds() def abort_previous(){ def buildNumber = env.BUILD_NUMBER as int if (buildNumber > 1) milestone(buildNumber - 1) milestone(buildNumber) } def pre_test(){ sh 'hostname' sh ''' date sudo rmtaos || echo "taosd has not installed" ''' sh ''' killall -9 taosd ||echo "no taosd running" killall -9 gdb || echo "no gdb running" killall -9 python3.8 || echo "no python program running" cd ${WKC} ''' script { if (env.CHANGE_TARGET == 'master') { sh ''' cd ${WKC} git checkout master ''' } else if(env.CHANGE_TARGET == '2.0') { sh ''' cd ${WKC} git checkout 2.0 ''' } else if(env.CHANGE_TARGET == '3.0') { sh ''' cd ${WKC} git checkout 3.0 [ -d contrib/bdb ] && cd contrib/bdb && git clean -fxd && cd ../.. ''' } else { sh ''' cd ${WKC} git checkout develop ''' } } sh ''' cd ${WKC} git pull >/dev/null git fetch origin +refs/pull/${CHANGE_ID}/merge git checkout -qf FETCH_HEAD git submodule update --init --recursive ''' sh ''' cd ${WKC} export TZ=Asia/Harbin date rm -rf debug mkdir debug cd debug cmake .. > /dev/null make -j4> /dev/null ''' sh ''' cd ${WKPY} git reset --hard git pull pip3 install . ''' return 1 } def pre_test_win(){ bat ''' hostname date /t time /t taskkill /f /t /im python.exe taskkill /f /t /im bash.exe cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDengine rd /s /Q C:\\workspace\\%EXECUTOR_NUMBER%\\TDengine\\debug exit 0 ''' bat ''' cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDengine git reset --hard git fetch || git fetch git checkout -f ''' script { if (env.CHANGE_TARGET == 'master') { bat ''' cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDengine git checkout master ''' } else if(env.CHANGE_TARGET == '2.0') { bat ''' cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDengine git checkout 2.0 ''' } else if(env.CHANGE_TARGET == '3.0') { bat ''' cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDengine git checkout 3.0 ''' } else { bat ''' cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDengine git checkout develop ''' } } bat ''' cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDengine git branch git pull || git pull git fetch origin +refs/pull/%CHANGE_ID%/merge git checkout -qf FETCH_HEAD ''' } def pre_test_build_win() { bat ''' echo "building ..." time /t cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDengine mkdir debug cd debug call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat" x64 set CL=/MP8 cmake .. -G "NMake Makefiles JOM" jom -j 4 || exit 8 time /t ''' return 1 } pipeline { agent none options { skipDefaultCheckout() } environment{ WK = '/var/lib/jenkins/workspace/TDinternal' WKC= '/var/lib/jenkins/workspace/TDengine' WKPY= '/var/lib/jenkins/workspace/taos-connector-python' } stages { stage('run test') { parallel { stage('windows test') { agent {label " windows11 "} steps { pre_test_win() pre_test_build_win() } } stage('linux test') { agent{label " slave3_0 || slave15 || slave16 || slave17 "} options { skipDefaultCheckout() } when { changeRequest() } steps { timeout(time: 45, unit: 'MINUTES'){ pre_test() sh ''' cd ${WKC}/debug ctest -VV ''' sh ''' export LD_LIBRARY_PATH=${WKC}/debug/build/lib cd ${WKC}/tests/system-test ./fulltest.sh ''' sh ''' cd ${WKC}/tests ./test-all.sh b1fq ''' } } } } } } post { success { emailext ( subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' SUCCESS", body: """

构建信息
  • 构建名称>>分支:${env.BRANCH_NAME}
  • 构建结果: Successful
  • 构建编号:${BUILD_NUMBER}
  • 触发用户:${env.CHANGE_AUTHOR}
  • 提交信息:${env.CHANGE_TITLE}
  • 构建地址:${BUILD_URL}
  • 构建日志:${BUILD_URL}console
""", to: "${env.CHANGE_AUTHOR_EMAIL}", from: "support@taosdata.com" ) } failure { emailext ( subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' FAIL", body: """

构建信息
  • 构建名称>>分支:${env.BRANCH_NAME}
  • 构建结果: Failure
  • 构建编号:${BUILD_NUMBER}
  • 触发用户:${env.CHANGE_AUTHOR}
  • 提交信息:${env.CHANGE_TITLE}
  • 构建地址:${BUILD_URL}
  • 构建日志:${BUILD_URL}console
""", to: "${env.CHANGE_AUTHOR_EMAIL}", from: "support@taosdata.com" ) } } }