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

L
liuyq-617 已提交
8
def skipbuild=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
    cd ${WK}
L
enhance  
liuyq-617 已提交
74
    git reset --hard HEAD~10
L
fix  
liuyq-617 已提交
75 76 77
    '''
    script {
      if (env.CHANGE_TARGET == 'master') {
L
fix  
liuyq-617 已提交
78
        sh '''
L
fix  
liuyq-617 已提交
79
        cd ${WK}
L
fix  
liuyq-617 已提交
80 81
        git checkout master
        '''
L
fix  
liuyq-617 已提交
82
        }
83 84 85 86 87 88 89
      else if(env.CHANGE_TARGET == '2.0'){
        sh '''
        cd ${WK}
        git checkout 2.0
        '''
      } 
      else{
L
fix  
liuyq-617 已提交
90
        sh '''
L
fix  
liuyq-617 已提交
91
        cd ${WK}
L
fix  
liuyq-617 已提交
92 93
        git checkout develop
        '''
L
fix  
liuyq-617 已提交
94 95 96
      } 
    }
    sh '''
97
    cd ${WK}
L
fix  
liuyq-617 已提交
98
    git pull >/dev/null 
L
fix  
liuyq-617 已提交
99

100 101
    export TZ=Asia/Harbin
    date
L
liuyq-617 已提交
102
    git clean -dfx
103 104 105 106 107 108
    mkdir debug
    cd debug
    cmake .. > /dev/null
    make > /dev/null
    make install > /dev/null
    cd ${WKC}/tests
L
liuyq-617 已提交
109
    pip3 install ${WKC}/src/connector/python/
L
liuyq-617 已提交
110
    '''
111 112
    return 1
}
113 114 115 116 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 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
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
    git reset --hard HEAD~10 >/dev/null
    '''
    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
    git pull >/dev/null
    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
    git pull >/dev/null 
L
liuyq-617 已提交
168

169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
    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 已提交
184
pipeline {
L
liuyq-617 已提交
185 186 187 188 189
  agent none
  environment{
      WK = '/var/lib/jenkins/workspace/TDinternal'
      WKC= '/var/lib/jenkins/workspace/TDinternal/community'
  }
Y
Yiqing Liu 已提交
190
  stages {
L
change  
liuyq-617 已提交
191
      stage('pre_build'){
192
          agent{label 'master'}
L
liuyq-617 已提交
193 194 195
          when {
              changeRequest()
          }
196
          steps {
L
change  
liuyq-617 已提交
197 198 199 200
            script{
              abort_previous()
              abortPreviousBuilds()
            }
L
liuyq-617 已提交
201
          sh'''
202
          rm -rf ${WORKSPACE}.tes
L
fix  
liuyq-617 已提交
203 204
          cp -r ${WORKSPACE} ${WORKSPACE}.tes
          cd ${WORKSPACE}.tes
L
test  
liuyq-617 已提交
205
          git fetch
206 207 208 209 210 211 212
          '''
          script {
            if (env.CHANGE_TARGET == 'master') {
              sh '''
              git checkout master
              '''
              }
L
test  
liuyq-617 已提交
213 214 215 216 217 218
            else if(env.CHANGE_TARGET == '2.0'){
              sh '''
              git checkout 2.0
              '''
            } 
            else{
219 220 221 222 223 224
              sh '''
              git checkout develop
              '''
            } 
          }
          sh'''
L
liuyq-617 已提交
225
          git fetch origin +refs/pull/${CHANGE_ID}/merge
226
          git checkout -qf FETCH_HEAD
L
fix  
liuyq-617 已提交
227
          '''     
228

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

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