Jenkinsfile 16.6 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 6
node {
}

L
liuyq-617 已提交
7
def skipbuild=0
L
liuyq-617 已提交
8
def win_stop=0
L
liuyq-617 已提交
9

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

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

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

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

L
liuyq-617 已提交
178 179 180 181 182 183
    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" 
L
liuyq-617 已提交
184 185
    nmake || exit 8
    nmake install || exit 8
L
liuyq-617 已提交
186
    xcopy /e/y/i/f C:\\workspace\\TDinternal\\debug\\build\\lib\\taos.dll C:\\Windows\\System32 || exit 8
L
liuyq-617 已提交
187 188 189 190 191 192
    cd C:\\workspace\\TDinternal\\community\\src\\connector\\python
    python -m pip install .
    
    '''
    return 1
}
Y
Yiqing Liu 已提交
193
pipeline {
L
liuyq-617 已提交
194
  agent none
195
  options { skipDefaultCheckout() } 
L
liuyq-617 已提交
196 197 198 199
  environment{
      WK = '/var/lib/jenkins/workspace/TDinternal'
      WKC= '/var/lib/jenkins/workspace/TDinternal/community'
  }
Y
Yiqing Liu 已提交
200
  stages {
L
change  
liuyq-617 已提交
201
      stage('pre_build'){
202
          agent{label 'master'}
203
          options { skipDefaultCheckout() } 
L
liuyq-617 已提交
204 205 206
          when {
              changeRequest()
          }
207
          steps {
L
change  
liuyq-617 已提交
208 209 210 211
            script{
              abort_previous()
              abortPreviousBuilds()
            }
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
          //   sh'''
          // rm -rf ${WORKSPACE}.tes
          // cp -r ${WORKSPACE} ${WORKSPACE}.tes
          // cd ${WORKSPACE}.tes
          // git fetch
          // '''
          // script {
          //   if (env.CHANGE_TARGET == 'master') {
          //     sh '''
          //     git checkout master
          //     '''
          //     }
          //   else if(env.CHANGE_TARGET == '2.0'){
          //     sh '''
          //     git checkout 2.0
          //     '''
          //   } 
          //   else{
          //     sh '''
          //     git checkout develop
          //     '''
          //   } 
          // }
          // sh'''
          // git fetch origin +refs/pull/${CHANGE_ID}/merge
          // git checkout -qf FETCH_HEAD
          // '''     
239

240 241 242 243 244 245 246 247 248
          // 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
          // }
          // sh'''
          // rm -rf ${WORKSPACE}.tes
          // '''
          // }       
249 250
          }
      }
L
change  
liuyq-617 已提交
251
      stage('Parallel test stage') {
L
liuyq-617 已提交
252
        //only build pr
253
        options { skipDefaultCheckout() } 
L
liuyq-617 已提交
254
        when {
L
liuyq-617 已提交
255
          allOf{
L
liuyq-617 已提交
256
              changeRequest()
257
              not{ expression { env.CHANGE_BRANCH =~ /docs\// }}
L
liuyq-617 已提交
258
            }
L
liuyq-617 已提交
259
          }
Y
Yiqing Liu 已提交
260
      parallel {
L
liuyq-617 已提交
261
        stage('python_1_s1') {
L
liuyq-617 已提交
262
          agent{label " slave1 || slave11 "}
L
liuyq-617 已提交
263
          steps {
L
liuyq-617 已提交
264
            
265
            pre_test()
L
liuyq-617 已提交
266
            timeout(time: 55, unit: 'MINUTES'){
L
liuyq-617 已提交
267
              sh '''
L
liuyq-617 已提交
268
              date
L
liuyq-617 已提交
269 270 271 272 273
              cd ${WKC}/tests
              ./test-all.sh p1
              date'''
            }
            
L
liuyq-617 已提交
274 275
          }
        }
L
liuyq-617 已提交
276
        stage('python_2_s5') {
L
liuyq-617 已提交
277
          agent{label " slave5 || slave15 "}
L
liuyq-617 已提交
278 279 280
          steps {
            
            pre_test()
L
liuyq-617 已提交
281
            timeout(time: 55, unit: 'MINUTES'){
282 283 284 285 286
                sh '''
                date
                cd ${WKC}/tests
                ./test-all.sh p2
                date'''
L
liuyq-617 已提交
287 288 289 290
            }
          }
        }
        stage('python_3_s6') {
L
liuyq-617 已提交
291
          agent{label " slave6 || slave16 "}
L
liuyq-617 已提交
292
          steps {     
L
liuyq-617 已提交
293
            timeout(time: 55, unit: 'MINUTES'){       
L
liuyq-617 已提交
294 295 296 297 298 299 300
              pre_test()
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh p3
              date'''
            }
L
liuyq-617 已提交
301 302
          }
        }
L
liuyq-617 已提交
303
        stage('test_b1_s2') {
L
liuyq-617 已提交
304
          agent{label " slave2 || slave12 "}
L
liuyq-617 已提交
305
          steps {     
L
liuyq-617 已提交
306
            timeout(time: 55, unit: 'MINUTES'){       
L
liuyq-617 已提交
307
              pre_test()
L
liuyq-617 已提交
308 309 310 311 312 313 314 315 316 317
              sh '''
                rm -rf /var/lib/taos/*
                rm -rf /var/log/taos/*
                nohup taosd >/dev/null &
                sleep 10
              '''
              sh '''
              cd ${WKC}/tests/examples/nodejs
              npm install td2.0-connector > /dev/null 2>&1
              node nodejsChecker.js host=localhost
318 319 320 321 322 323 324 325 326 327 328
              node test1970.js
	      cd ${WKC}/tests/connectorTest/nodejsTest/nanosupport
	      npm install td2.0-connector > /dev/null 2>&1
              node nanosecondTest.js
              '''
              sh '''
              cd ${WKC}/src/connector/node-rest/
              npm install
              npm run build 
              npm run build:test
              npm run test
L
liuyq-617 已提交
329 330
              '''
              sh '''
L
liuyq-617 已提交
331 332
              cd ${WKC}/tests/examples/C#/taosdemo
              mcs -out:taosdemo *.cs > /dev/null 2>&1
333 334 335 336
                echo '' |./taosdemo -c /etc/taos
                cd ${WKC}/tests/connectorTest/C#Test/nanosupport
                mcs -out:nano *.cs > /dev/null 2>&1
                echo '' |./nano
L
liuyq-617 已提交
337 338 339 340 341
              '''
              sh '''
                cd ${WKC}/tests/gotest
                bash batchtest.sh
              '''
L
liuyq-617 已提交
342 343 344 345 346
              sh '''
              cd ${WKC}/tests
              ./test-all.sh b1fq
              date'''
            }
Y
Yiqing Liu 已提交
347 348
          }
        }
L
liuyq-617 已提交
349
        stage('test_crash_gen_s3') {
L
liuyq-617 已提交
350
          agent{label " slave3 || slave13 "}
351
          
Y
Yiqing Liu 已提交
352
          steps {
353
            pre_test()
L
liuyq-617 已提交
354 355 356 357 358
            timeout(time: 60, unit: 'MINUTES'){
              sh '''
              cd ${WKC}/tests/pytest
              ./crash_gen.sh -a -p -t 4 -s 2000
              '''
359 360
            }
            timeout(time: 60, unit: 'MINUTES'){
P
Ping Xiao 已提交
361 362 363 364 365 366
              sh '''
              cd ${WKC}/tests/pytest
              rm -rf /var/lib/taos/*
              rm -rf /var/log/taos/*
              ./handle_crash_gen_val_log.sh
              '''
367 368 369 370 371 372
              sh '''
              cd ${WKC}/tests/pytest
              rm -rf /var/lib/taos/*
              rm -rf /var/log/taos/*
              ./handle_taosd_val_log.sh
              '''
L
liuyq-617 已提交
373
            }
L
liuyq-617 已提交
374
            timeout(time: 55, unit: 'MINUTES'){
375 376 377 378 379 380
                sh '''
                date
                cd ${WKC}/tests
                ./test-all.sh b2fq
                date
                '''
L
test  
liuyq-617 已提交
381
            }                     
Y
Yiqing Liu 已提交
382 383
          }
        }
L
liuyq-617 已提交
384
        stage('test_valgrind_s4') {
L
liuyq-617 已提交
385
          agent{label " slave4 || slave14 "}
L
liuyq-617 已提交
386

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