Jenkinsfile 15.5 KB
Newer Older
L
liuyq-617 已提交
1
import hudson.model.Result
L
liuyq-617 已提交
2
import hudson.model.*;
L
liuyq-617 已提交
3
import jenkins.model.CauseOfInterruption
4 5
properties([pipelineTriggers([githubPush()])])
node {
L
liuyq-617 已提交
6
    git url: 'https://github.com/taosdata/TDengine.git'
7 8
}

L
liuyq-617 已提交
9
def skipbuild=0
L
liuyq-617 已提交
10
def win_stop=0
L
liuyq-617 已提交
11

L
recover  
liuyq-617 已提交
12 13 14 15 16
def abortPreviousBuilds() {
  def currentJobName = env.JOB_NAME
  def currentBuildNumber = env.BUILD_NUMBER.toInteger()
  def jobs = Jenkins.instance.getItemByFullName(currentJobName)
  def builds = jobs.getBuilds()
17

L
recover  
liuyq-617 已提交
18 19 20 21
  for (build in builds) {
    if (!build.isBuilding()) {
      continue;
    }
L
liuyq-617 已提交
22

L
recover  
liuyq-617 已提交
23 24 25 26 27 28 29 30 31 32 33 34 35 36
    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)
}
37
def pre_test(){
L
liuyq-617 已提交
38
    sh'hostname'
L
liuyq-617 已提交
39 40 41
    sh '''
    sudo rmtaos || echo "taosd has not installed"
    '''
L
liuyq-617 已提交
42
    sh '''
L
fix  
liuyq-617 已提交
43 44
    killall -9 taosd ||echo "no taosd running"
    killall -9 gdb || echo "no gdb running"
L
liuyq-617 已提交
45
    killall -9 python3.8 || echo "no python program running"
46
    cd ${WKC}
L
fix  
liuyq-617 已提交
47 48 49 50
    git reset --hard HEAD~10 >/dev/null
    '''
    script {
      if (env.CHANGE_TARGET == 'master') {
L
fix  
liuyq-617 已提交
51 52 53 54
        sh '''
        cd ${WKC}
        git checkout master
        '''
L
fix  
liuyq-617 已提交
55
        }
56
      else if(env.CHANGE_TARGET == '2.0'){
L
fix  
liuyq-617 已提交
57 58
        sh '''
        cd ${WKC}
59
        git checkout 2.0
L
fix  
liuyq-617 已提交
60
        '''
L
fix  
liuyq-617 已提交
61
      } 
62 63 64 65 66 67
      else{
        sh '''
        cd ${WKC}
        git checkout develop
        '''
      }
L
fix  
liuyq-617 已提交
68 69
    }
    sh'''
L
fix  
liuyq-617 已提交
70
    cd ${WKC}
L
liuyq-617 已提交
71
    git pull >/dev/null
L
liuyq-617 已提交
72
    git fetch origin +refs/pull/${CHANGE_ID}/merge
73
    git checkout -qf FETCH_HEAD
L
liuyq-617 已提交
74
    git clean -dfx
75
    cd ${WK}
L
enhance  
liuyq-617 已提交
76
    git reset --hard HEAD~10
L
fix  
liuyq-617 已提交
77 78 79
    '''
    script {
      if (env.CHANGE_TARGET == 'master') {
L
fix  
liuyq-617 已提交
80
        sh '''
L
fix  
liuyq-617 已提交
81
        cd ${WK}
L
fix  
liuyq-617 已提交
82 83
        git checkout master
        '''
L
fix  
liuyq-617 已提交
84
        }
85 86 87 88 89 90 91
      else if(env.CHANGE_TARGET == '2.0'){
        sh '''
        cd ${WK}
        git checkout 2.0
        '''
      } 
      else{
L
fix  
liuyq-617 已提交
92
        sh '''
L
fix  
liuyq-617 已提交
93
        cd ${WK}
L
fix  
liuyq-617 已提交
94 95
        git checkout develop
        '''
L
fix  
liuyq-617 已提交
96 97 98
      } 
    }
    sh '''
99
    cd ${WK}
L
fix  
liuyq-617 已提交
100
    git pull >/dev/null 
L
fix  
liuyq-617 已提交
101

102 103
    export TZ=Asia/Harbin
    date
L
liuyq-617 已提交
104
    git clean -dfx
105 106 107 108 109 110
    mkdir debug
    cd debug
    cmake .. > /dev/null
    make > /dev/null
    make install > /dev/null
    cd ${WKC}/tests
L
liuyq-617 已提交
111
    pip3 install ${WKC}/src/connector/python/
L
liuyq-617 已提交
112
    '''
113 114
    return 1
}
115 116 117 118 119 120 121
def pre_test_win(){
    bat '''
    cd C:\\
    rd /s /Q C:\\TDengine
    cd C:\\workspace\\TDinternal
    rd /s /Q C:\\workspace\\TDinternal\\debug
    cd C:\\workspace\\TDinternal\\community
L
liuyq-617 已提交
122
    git reset --hard HEAD~10 
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
    '''
    script {
      if (env.CHANGE_TARGET == 'master') {
        bat '''
        git checkout master
        '''
        }
      else if(env.CHANGE_TARGET == '2.0'){
        bat '''
        git checkout 2.0
        '''
      } 
      else{
        bat '''
        git checkout develop
        '''
      }
    }
    bat'''
    cd C:\\workspace\\TDinternal\\community
L
liuyq-617 已提交
143
    git pull 
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
    git fetch origin +refs/pull/${CHANGE_ID}/merge
    git checkout -qf FETCH_HEAD
    git clean -dfx
    cd C:\\workspace\\TDinternal
    git reset --hard HEAD~10
    '''
    script {
      if (env.CHANGE_TARGET == 'master') {
        bat '''
        git checkout master
        '''
        }
      else if(env.CHANGE_TARGET == '2.0'){
        bat '''
        git checkout 2.0
        '''
      } 
      else{
        bat '''
        git checkout develop
        '''
      } 
    }
    bat '''
    cd C:\\workspace\\TDinternal
L
liuyq-617 已提交
169
    git pull 
L
liuyq-617 已提交
170

171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
    export TZ=Asia/Harbin
    date
    git clean -dfx
    mkdir debug
    cd debug
    call "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat" amd64
    cmake ../ -G "NMake Makefiles" 
    nmake
    nmake install 
    cd C:\\workspace\\TDinternal\\community\\src\\connector\\python
    python -m pip install .
    xcopy /e/y/i/f C:\\workspace\\TDinternal\\debug\\build\\lib\\taos.dll C:\\Windows\\System32
    '''
    return 1
}
Y
Yiqing Liu 已提交
186
pipeline {
L
liuyq-617 已提交
187 188 189 190 191
  agent none
  environment{
      WK = '/var/lib/jenkins/workspace/TDinternal'
      WKC= '/var/lib/jenkins/workspace/TDinternal/community'
  }
Y
Yiqing Liu 已提交
192
  stages {
L
change  
liuyq-617 已提交
193
      stage('pre_build'){
194
          agent{label 'master'}
L
liuyq-617 已提交
195 196 197
          when {
              changeRequest()
          }
198
          steps {
L
change  
liuyq-617 已提交
199 200 201 202
            script{
              abort_previous()
              abortPreviousBuilds()
            }
L
liuyq-617 已提交
203
          sh'''
204
          rm -rf ${WORKSPACE}.tes
L
fix  
liuyq-617 已提交
205 206
          cp -r ${WORKSPACE} ${WORKSPACE}.tes
          cd ${WORKSPACE}.tes
L
test  
liuyq-617 已提交
207
          git fetch
208 209 210 211 212 213 214
          '''
          script {
            if (env.CHANGE_TARGET == 'master') {
              sh '''
              git checkout master
              '''
              }
L
test  
liuyq-617 已提交
215 216 217 218 219 220
            else if(env.CHANGE_TARGET == '2.0'){
              sh '''
              git checkout 2.0
              '''
            } 
            else{
221 222 223 224 225 226
              sh '''
              git checkout develop
              '''
            } 
          }
          sh'''
L
liuyq-617 已提交
227
          git fetch origin +refs/pull/${CHANGE_ID}/merge
228
          git checkout -qf FETCH_HEAD
L
fix  
liuyq-617 已提交
229
          '''     
230

L
liuyq-617 已提交
231 232 233 234
          script{  
            skipbuild='2'     
            skipbuild=sh(script: "git log -2 --pretty=%B | fgrep -ie '[skip ci]' -e '[ci skip]' && echo 1 || echo 2", returnStdout:true)
            println skipbuild
235
          }
L
fix  
liuyq-617 已提交
236
          sh'''
L
liuyq-617 已提交
237
          rm -rf ${WORKSPACE}.tes
L
fix  
liuyq-617 已提交
238
          '''
239 240
          }
      }
L
change  
liuyq-617 已提交
241
      stage('Parallel test stage') {
L
liuyq-617 已提交
242 243
        //only build pr
        when {
L
liuyq-617 已提交
244
          allOf{
L
liuyq-617 已提交
245
              changeRequest()
L
liuyq-617 已提交
246 247
               expression{
                return skipbuild.trim() == '2'
248
              }
L
liuyq-617 已提交
249
            }
L
liuyq-617 已提交
250
          }
Y
Yiqing Liu 已提交
251
      parallel {
L
liuyq-617 已提交
252
        stage('python_1_s1') {
L
liuyq-617 已提交
253
          agent{label " slave1 || slave11 "}
L
liuyq-617 已提交
254
          steps {
L
liuyq-617 已提交
255
            
256
            pre_test()
L
liuyq-617 已提交
257
            timeout(time: 55, unit: 'MINUTES'){
L
liuyq-617 已提交
258
              sh '''
L
liuyq-617 已提交
259
              date
L
liuyq-617 已提交
260 261 262 263 264
              cd ${WKC}/tests
              ./test-all.sh p1
              date'''
            }
            
L
liuyq-617 已提交
265 266
          }
        }
L
liuyq-617 已提交
267
        stage('python_2_s5') {
L
liuyq-617 已提交
268
          agent{label " slave5 || slave15 "}
L
liuyq-617 已提交
269 270 271
          steps {
            
            pre_test()
L
liuyq-617 已提交
272
            timeout(time: 55, unit: 'MINUTES'){
273 274 275 276 277
                sh '''
                date
                cd ${WKC}/tests
                ./test-all.sh p2
                date'''
L
liuyq-617 已提交
278 279 280 281
            }
          }
        }
        stage('python_3_s6') {
L
liuyq-617 已提交
282
          agent{label " slave6 || slave16 "}
L
liuyq-617 已提交
283
          steps {     
L
liuyq-617 已提交
284
            timeout(time: 55, unit: 'MINUTES'){       
L
liuyq-617 已提交
285 286 287 288 289 290 291
              pre_test()
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh p3
              date'''
            }
L
liuyq-617 已提交
292 293
          }
        }
L
liuyq-617 已提交
294
        stage('test_b1_s2') {
L
liuyq-617 已提交
295
          agent{label " slave2 || slave12 "}
L
liuyq-617 已提交
296
          steps {     
L
liuyq-617 已提交
297
            timeout(time: 55, unit: 'MINUTES'){       
L
liuyq-617 已提交
298
              pre_test()
L
liuyq-617 已提交
299 300 301
              sh '''
                rm -rf /var/lib/taos/*
                rm -rf /var/log/taos/*
L
update  
liuyq-617 已提交
302
                nohup taosd >/dev/null &
L
liuyq-617 已提交
303 304 305 306
                sleep 10
              '''
              sh '''
              cd ${WKC}/tests/examples/nodejs
L
update  
liuyq-617 已提交
307
              npm install td2.0-connector > /dev/null 2>&1
L
liuyq-617 已提交
308
              node nodejsChecker.js host=localhost
R
root 已提交
309
              node test1970.js
L
liuyq-617 已提交
310 311 312
              '''
              sh '''
                cd ${WKC}/tests/examples/C#/taosdemo
L
update  
liuyq-617 已提交
313
                mcs -out:taosdemo *.cs > /dev/null 2>&1
R
root 已提交
314
                echo '' |./taosdemo -c /etc/taos
L
liuyq-617 已提交
315 316 317 318 319
              '''
              sh '''
                cd ${WKC}/tests/gotest
                bash batchtest.sh
              '''
L
liuyq-617 已提交
320 321 322 323 324
              sh '''
              cd ${WKC}/tests
              ./test-all.sh b1fq
              date'''
            }
Y
Yiqing Liu 已提交
325 326
          }
        }
L
liuyq-617 已提交
327
        stage('test_crash_gen_s3') {
L
liuyq-617 已提交
328
          agent{label " slave3 || slave13 "}
329
          
Y
Yiqing Liu 已提交
330
          steps {
331
            pre_test()
332 333 334
            timeout(time: 60, unit: 'MINUTES'){
              sh '''
              cd ${WKC}/tests/pytest
L
liuyq-617 已提交
335
              ./crash_gen.sh -a -p -t 4 -s 2000
336 337 338
              '''
            }
            timeout(time: 60, unit: 'MINUTES'){
L
liuyq-617 已提交
339 340 341 342 343 344
              sh '''
              cd ${WKC}/tests/pytest
              rm -rf /var/lib/taos/*
              rm -rf /var/log/taos/*
              ./handle_crash_gen_val_log.sh
              '''
345 346 347 348 349 350
              sh '''
              cd ${WKC}/tests/pytest
              rm -rf /var/lib/taos/*
              rm -rf /var/log/taos/*
              ./handle_taosd_val_log.sh
              '''
L
liuyq-617 已提交
351
            }
L
liuyq-617 已提交
352
            timeout(time: 55, unit: 'MINUTES'){
353 354 355 356 357 358
                sh '''
                date
                cd ${WKC}/tests
                ./test-all.sh b2fq
                date
                '''
L
test  
liuyq-617 已提交
359
            }                     
Y
Yiqing Liu 已提交
360 361
          }
        }
L
liuyq-617 已提交
362
        stage('test_valgrind_s4') {
L
liuyq-617 已提交
363
          agent{label " slave4 || slave14 "}
L
liuyq-617 已提交
364

Y
Yiqing Liu 已提交
365
          steps {
366 367 368 369 370 371 372
            pre_test()
            catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                sh '''
                cd ${WKC}/tests/pytest
                ./valgrind-test.sh 2>&1 > mem-error-out.log
                ./handle_val_log.sh
                '''
L
liuyq-617 已提交
373
            }     
L
liuyq-617 已提交
374
            timeout(time: 55, unit: 'MINUTES'){      
L
liuyq-617 已提交
375 376 377 378 379
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh b3fq
              date'''
P
change  
Ping Xiao 已提交
380 381 382 383 384
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh full example
              date'''
L
liuyq-617 已提交
385
            }
Y
Yiqing Liu 已提交
386 387
          }
        }
L
liuyq-617 已提交
388
        stage('test_b4_s7') {
L
liuyq-617 已提交
389
          agent{label " slave7 || slave17 "}
L
liuyq-617 已提交
390
          steps {     
L
liuyq-617 已提交
391
            timeout(time: 55, unit: 'MINUTES'){       
L
liuyq-617 已提交
392 393 394 395 396
              pre_test()
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh b4fq
L
fix  
liuyq-617 已提交
397
              cd ${WKC}/tests
L
liuyq-617 已提交
398
              ./test-all.sh p4
399 400
              cd ${WKC}/tests
              ./test-all.sh full jdbc
P
Ping Xiao 已提交
401 402
              cd ${WKC}/tests
              ./test-all.sh full unit
L
liuyq-617 已提交
403 404 405 406 407
              date'''
            }
          }
        }
        stage('test_b5_s8') {
L
liuyq-617 已提交
408
          agent{label " slave8 || slave18 "}
L
liuyq-617 已提交
409
          steps {     
L
liuyq-617 已提交
410
            timeout(time: 55, unit: 'MINUTES'){       
L
liuyq-617 已提交
411 412 413 414 415 416 417 418 419 420
              pre_test()
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh b5fq
              date'''
            }
          }
        }
        stage('test_b6_s9') {
L
liuyq-617 已提交
421
          agent{label " slave9 || slave19 "}
L
liuyq-617 已提交
422
          steps {     
L
liuyq-617 已提交
423
            timeout(time: 55, unit: 'MINUTES'){       
L
liuyq-617 已提交
424 425 426 427 428 429 430 431 432 433
              pre_test()
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh b6fq
              date'''
            }
          }
        }
        stage('test_b7_s10') {
L
liuyq-617 已提交
434
          agent{label " slave10 || slave20 "}
L
liuyq-617 已提交
435
          steps {     
L
liuyq-617 已提交
436
            timeout(time: 55, unit: 'MINUTES'){       
L
liuyq-617 已提交
437 438 439 440 441
              pre_test()
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh b7fq
P
change  
Ping Xiao 已提交
442
              date'''              
L
liuyq-617 已提交
443 444
            }
          }
445
        } 
L
liuyq-617 已提交
446 447
        
        stage('build'){
448 449 450
          agent{label " crashgen "}
          steps {
            pre_test()
L
liuyq-617 已提交
451 452 453 454 455 456
            script{             
                while(win_stop == 0){
                  sleep(1)
                  }
              }
            }
L
liuyq-617 已提交
457 458
        }
        stage('test'){
459 460 461
          agent{label "win"}
          steps{
            pre_test_win()
L
liuyq-617 已提交
462 463 464
            catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
                bat'''
                cd C:\\workspace\\TDinternal\\community\\tests\\pytest
L
liuyq-617 已提交
465
                test-all.bat Wintest
L
liuyq-617 已提交
466 467
                '''
            }     
L
liuyq-617 已提交
468 469 470 471
            script{
              win_stop=1
              println win_stop
            }
472
          }
L
liuyq-617 已提交
473 474 475
        }
          
               
Y
Yiqing Liu 已提交
476 477
    }
  }
L
liuyq-617 已提交
478
  }
L
liuyq-617 已提交
479
  post {  
480 481
        success {
            emailext (
482 483
                subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' SUCCESS",
                body: """<!DOCTYPE html>
484 485 486 487 488 489 490 491 492 493 494 495 496 497 498
                <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">
499
                                    <li>构建名称>>分支:${env.BRANCH_NAME}</li>
500 501
                                    <li>构建结果:<span style="color:green"> Successful </span></li>
                                    <li>构建编号:${BUILD_NUMBER}</li>
502
                                    <li>触发用户:${env.CHANGE_AUTHOR}</li>
L
fix  
liuyq-617 已提交
503
                                    <li>提交信息:${env.CHANGE_TITLE}</li>
504 505
                                    <li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
                                    <li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
506
                                    
507 508 509 510 511 512
                                </div>
                                </ul>
                            </td>
                        </tr>
                    </table></font>
                </body>
513
                </html>""",
L
liuyq-617 已提交
514
                to: "${env.CHANGE_AUTHOR_EMAIL}",
515 516 517 518 519
                from: "support@taosdata.com"
            )
        }
        failure {
            emailext (
520 521
                subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' FAIL",
                body: """<!DOCTYPE html>
522 523 524 525 526 527 528 529 530 531 532 533 534 535 536
                <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">
537
                                    <li>构建名称>>分支:${env.BRANCH_NAME}</li>
L
liuyq-617 已提交
538
                                    <li>构建结果:<span style="color:red"> Failure </span></li>
539
                                    <li>构建编号:${BUILD_NUMBER}</li>
540
                                    <li>触发用户:${env.CHANGE_AUTHOR}</li>
L
fix  
liuyq-617 已提交
541
                                    <li>提交信息:${env.CHANGE_TITLE}</li>
542 543
                                    <li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
                                    <li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
544
                                    
545 546 547 548 549 550
                                </div>
                                </ul>
                            </td>
                        </tr>
                    </table></font>
                </body>
551
                </html>""",
L
liuyq-617 已提交
552
                to: "${env.CHANGE_AUTHOR_EMAIL}",
553 554 555
                from: "support@taosdata.com"
            )
        }
L
liuyq-617 已提交
556
    } 
X
xiaolei li 已提交
557
}