492 lines
18 KiB
Plaintext
492 lines
18 KiB
Plaintext
import hudson.model.Result
|
|
import hudson.model.*;
|
|
import jenkins.model.CauseOfInterruption
|
|
node {
|
|
}
|
|
|
|
win_test_stage = 0
|
|
linux_ready = 0
|
|
linux_node_ip = ""
|
|
linux_node_pass = ""
|
|
|
|
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
|
|
date
|
|
'''
|
|
sh '''
|
|
cd ${WK}
|
|
git reset --hard
|
|
git fetch || git fetch
|
|
cd ${WKC}
|
|
git reset --hard
|
|
git fetch || git fetch
|
|
'''
|
|
script {
|
|
if (env.CHANGE_TARGET == 'master') {
|
|
sh '''
|
|
cd ${WK}
|
|
git checkout master
|
|
cd ${WKC}
|
|
git checkout master
|
|
'''
|
|
} else if(env.CHANGE_TARGET == '2.0') {
|
|
sh '''
|
|
cd ${WK}
|
|
git checkout 2.0
|
|
cd ${WKC}
|
|
git checkout 2.0
|
|
'''
|
|
} else if(env.CHANGE_TARGET == '3.0') {
|
|
sh '''
|
|
cd ${WK}
|
|
git checkout 3.0
|
|
cd ${WKC}
|
|
git checkout 3.0
|
|
'''
|
|
} else {
|
|
sh '''
|
|
cd ${WK}
|
|
git checkout develop
|
|
cd ${WKC}
|
|
git checkout develop
|
|
'''
|
|
}
|
|
}
|
|
if (env.CHANGE_URL =~ /\/TDengine\//) {
|
|
sh '''
|
|
cd ${WKC}
|
|
git pull >/dev/null
|
|
git fetch origin +refs/pull/${CHANGE_ID}/merge
|
|
git checkout -qf FETCH_HEAD
|
|
git log -5
|
|
cd ${WK}
|
|
git pull >/dev/null
|
|
git log -5
|
|
'''
|
|
} else if (env.CHANGE_URL =~ /\/TDinternal\//) {
|
|
sh '''
|
|
cd ${WK}
|
|
git pull >/dev/null
|
|
git fetch origin +refs/pull/${CHANGE_ID}/merge
|
|
git checkout -qf FETCH_HEAD
|
|
git log -5
|
|
cd ${WKC}
|
|
git pull >/dev/null
|
|
git log -5
|
|
'''
|
|
} else {
|
|
sh '''
|
|
echo "unmatched reposiotry ${CHANGE_URL}"
|
|
'''
|
|
}
|
|
sh '''
|
|
cd ${WKC}
|
|
git submodule update --init --recursive
|
|
'''
|
|
sh '''
|
|
cd ${WKPY}
|
|
git reset --hard
|
|
git pull
|
|
'''
|
|
return 1
|
|
}
|
|
def pre_test_win(){
|
|
bat '''
|
|
hostname
|
|
ipconfig
|
|
set
|
|
date /t
|
|
time /t
|
|
rd /s /Q C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\debug || exit 0
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal
|
|
git reset --hard
|
|
git fetch || git fetch
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community
|
|
git reset --hard
|
|
git fetch || git fetch
|
|
'''
|
|
script {
|
|
if (env.CHANGE_TARGET == 'master') {
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal
|
|
git checkout master
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community
|
|
git checkout master
|
|
'''
|
|
} else if(env.CHANGE_TARGET == '2.0') {
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal
|
|
git checkout 2.0
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community
|
|
git checkout 2.0
|
|
'''
|
|
} else if(env.CHANGE_TARGET == '3.0') {
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal
|
|
git checkout 3.0
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community
|
|
git checkout 3.0
|
|
'''
|
|
} else {
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal
|
|
git checkout develop
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community
|
|
git checkout develop
|
|
'''
|
|
}
|
|
}
|
|
script {
|
|
if (env.CHANGE_URL =~ /\/TDengine\//) {
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal
|
|
git pull
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community
|
|
git pull
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community
|
|
git fetch origin +refs/pull/%CHANGE_ID%/merge
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community
|
|
git checkout -qf FETCH_HEAD
|
|
'''
|
|
} else if (env.CHANGE_URL =~ /\/TDinternal\//) {
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal
|
|
git pull
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal
|
|
git fetch origin +refs/pull/%CHANGE_ID%/merge
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal
|
|
git checkout -qf FETCH_HEAD
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community
|
|
git pull
|
|
'''
|
|
} else {
|
|
bat '''
|
|
echo "unmatched reposiotry %CHANGE_URL%"
|
|
'''
|
|
}
|
|
}
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal
|
|
git branch
|
|
git log -5
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community
|
|
git branch
|
|
git log -5
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community
|
|
git submodule update --init --recursive
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\taos-connector-python
|
|
git branch
|
|
git reset --hard
|
|
git pull
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\taos-connector-python
|
|
git log -5
|
|
'''
|
|
}
|
|
def pre_test_build_win() {
|
|
bat '''
|
|
echo "building ..."
|
|
time /t
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal
|
|
mkdir debug
|
|
cd debug
|
|
time /t
|
|
call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat" x64
|
|
set CL=/MP8
|
|
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> cmake"
|
|
time /t
|
|
cmake .. -G "NMake Makefiles JOM" || exit 7
|
|
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> jom -j 6"
|
|
time /t
|
|
jom -j 6 || exit 8
|
|
time /t
|
|
'''
|
|
bat '''
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\taos-connector-python
|
|
python -m pip install .
|
|
xcopy /e/y/i/f C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\debug\\build\\lib\\taos.dll C:\\Windows\\System32
|
|
'''
|
|
return 1
|
|
}
|
|
def run_win_ctest() {
|
|
bat '''
|
|
echo "windows ctest ..."
|
|
time /t
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\debug
|
|
ctest -j 1 || exit 7
|
|
time /t
|
|
'''
|
|
}
|
|
def run_win_test() {
|
|
echo "LINUX NODE: ${linux_node_ip} - ${linux_node_pass}"
|
|
bat '''
|
|
echo "windows test ..."
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\taos-connector-python
|
|
python -m pip install .
|
|
xcopy /e/y/i/f C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\debug\\build\\lib\\taos.dll C:\\Windows\\System32
|
|
ls -l C:\\Windows\\System32\\taos.dll
|
|
time /t
|
|
cd C:\\workspace\\%EXECUTOR_NUMBER%\\TDinternal\\community\\tests\\system-test
|
|
echo "node: ''' + linux_node_ip + ''':''' + linux_node_pass + '''"
|
|
echo "testing ..."
|
|
test-all.bat "{\\\"host\\\":\\\"''' + linux_node_ip + '''\\\",\\\"port\\\":22,\\\"user\\\":\\\"root\\\",\\\"password\\\":\\\"''' + linux_node_pass + '''\\\",\\\"path\\\":\\\"/var/lib/jenkins/workspace/TDinternal\\\"}"
|
|
time /t
|
|
'''
|
|
}
|
|
|
|
pipeline {
|
|
agent none
|
|
options { skipDefaultCheckout() }
|
|
environment{
|
|
WKDIR = '/var/lib/jenkins/workspace'
|
|
WK = '/var/lib/jenkins/workspace/TDinternal'
|
|
WKC = '/var/lib/jenkins/workspace/TDinternal/community'
|
|
WKPY = '/var/lib/jenkins/workspace/taos-connector-python'
|
|
}
|
|
stages {
|
|
stage('run test') {
|
|
parallel {
|
|
stage('windows test') {
|
|
agent{label " windows10_01 || windows10_02 || windows10_03 || windows10_04 "}
|
|
steps {
|
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
|
timeout(time: 55, unit: 'MINUTES'){
|
|
pre_test_win()
|
|
pre_test_build_win()
|
|
run_win_ctest()
|
|
script {
|
|
while(linux_ready == 0) {
|
|
sleep(8)
|
|
}
|
|
}
|
|
run_win_test()
|
|
}
|
|
}
|
|
script {
|
|
win_test_stage = 1
|
|
}
|
|
}
|
|
}
|
|
stage('linux test') {
|
|
agent{label " worker03 || slave215 || slave217 || slave219 "}
|
|
options { skipDefaultCheckout() }
|
|
when {
|
|
changeRequest()
|
|
}
|
|
steps {
|
|
script {
|
|
linux_node_ip = sh (
|
|
script: 'jq .ip /home/node_info.json | sed "s/\\\"//g"',
|
|
returnStdout: true
|
|
).trim()
|
|
linux_node_pass = sh (
|
|
script: 'jq .password /home/node_info.json | sed "s/\\\"//g" |sed "s/\\!/^^^^^^^^\\!/g"',
|
|
returnStdout: true
|
|
).trim()
|
|
echo "${linux_node_ip}:${linux_node_pass}"
|
|
}
|
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
|
timeout(time: 40, unit: 'MINUTES'){
|
|
pre_test()
|
|
script {
|
|
sh '''
|
|
date
|
|
rm -rf ${WKC}/debug
|
|
cd ${WKC}/tests/parallel_test
|
|
time ./container_build.sh -w ${WKDIR} -t 8 -e
|
|
rm -f /tmp/cases.task
|
|
./collect_cases.sh -e
|
|
'''
|
|
sh '''
|
|
cd ${WKC}/tests/parallel_test
|
|
export DEFAULT_RETRY_TIME=2
|
|
date
|
|
timeout 2100 time ./run.sh -e -m /home/m.json -t /tmp/cases.task -b ${BRANCH_NAME}_${BUILD_ID} -l ${WKDIR}/log -o 480
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
|
timeout(time: 15, unit: 'MINUTES'){
|
|
script {
|
|
sh '''
|
|
echo "packaging ..."
|
|
date
|
|
rm -rf ${WKC}/release/*
|
|
cd ${WKC}/packaging
|
|
./release.sh -v cluster -n 3.0.0.100 -s static
|
|
'''
|
|
sh '''
|
|
echo "install ..."
|
|
cd ${WKC}/release
|
|
tar xzf TDengine-enterprise-server-3.0.0.100-Linux-x64.tar.gz
|
|
cd TDengine-enterprise-server-3.0.0.100
|
|
service taosd stop || :
|
|
rm -rf /var/lib/taos
|
|
./install.sh -e no
|
|
'''
|
|
sh '''
|
|
echo "checking ..."
|
|
which taos
|
|
which taosd
|
|
rm -rf ${WK}/debug
|
|
mv ${WKC}/debug ${WK}/
|
|
'''
|
|
sh '''
|
|
echo "install taospy ..."
|
|
cd ${WKPY}
|
|
pip3 install .
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
script {
|
|
linux_ready = 1
|
|
}
|
|
script {
|
|
while(win_test_stage == 0){
|
|
sleep(12)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
success {
|
|
emailext (
|
|
subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' SUCCESS",
|
|
body: """<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
</head>
|
|
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
|
|
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 16pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
|
|
<tr>
|
|
<td><br />
|
|
<b><font color="#0B610B"><font size="6">构建信息</font></font></b>
|
|
<hr size="2" width="100%" align="center" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<ul>
|
|
<div style="font-size:18px">
|
|
<li>构建名称>>分支:${env.BRANCH_NAME}</li>
|
|
<li>构建结果:<span style="color:green"> Successful </span></li>
|
|
<li>构建编号:${BUILD_NUMBER}</li>
|
|
<li>触发用户:${env.CHANGE_AUTHOR}</li>
|
|
<li>提交信息:${env.CHANGE_TITLE}</li>
|
|
<li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
|
|
<li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
|
|
|
|
</div>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
</table></font>
|
|
</body>
|
|
</html>""",
|
|
to: "${env.CHANGE_AUTHOR_EMAIL}",
|
|
from: "support@taosdata.com"
|
|
)
|
|
}
|
|
failure {
|
|
emailext (
|
|
subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' FAIL",
|
|
body: """<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
</head>
|
|
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
|
|
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 16pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
|
|
<tr>
|
|
<td><br />
|
|
<b><font color="#0B610B"><font size="6">构建信息</font></font></b>
|
|
<hr size="2" width="100%" align="center" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<ul>
|
|
<div style="font-size:18px">
|
|
<li>构建名称>>分支:${env.BRANCH_NAME}</li>
|
|
<li>构建结果:<span style="color:red"> Failure </span></li>
|
|
<li>构建编号:${BUILD_NUMBER}</li>
|
|
<li>触发用户:${env.CHANGE_AUTHOR}</li>
|
|
<li>提交信息:${env.CHANGE_TITLE}</li>
|
|
<li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
|
|
<li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
|
|
|
|
</div>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
</table></font>
|
|
</body>
|
|
</html>""",
|
|
to: "${env.CHANGE_AUTHOR_EMAIL}",
|
|
from: "support@taosdata.com"
|
|
)
|
|
}
|
|
}
|
|
}
|