Jenkinsfile 14.3 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
liuyq-617 已提交
59 60 61 62 63 64
      }
      else if(env.CHANGE_TARGET == '3.0'){
        sh '''
        cd ${WKC}
        git checkout 3.0
        '''
L
fix  
liuyq-617 已提交
65
      } 
66 67 68 69 70 71
      else{
        sh '''
        cd ${WKC}
        git checkout develop
        '''
      }
L
fix  
liuyq-617 已提交
72 73
    }
    sh'''
L
fix  
liuyq-617 已提交
74
    cd ${WKC}
L
liuyq-617 已提交
75
    git pull >/dev/null
L
liuyq-617 已提交
76
    git fetch origin +refs/pull/${CHANGE_ID}/merge
77
    git checkout -qf FETCH_HEAD
L
liuyq-617 已提交
78
    git clean -dfx
79
    cd ${WK}
L
enhance  
liuyq-617 已提交
80
    git reset --hard HEAD~10
L
fix  
liuyq-617 已提交
81 82 83
    '''
    script {
      if (env.CHANGE_TARGET == 'master') {
L
fix  
liuyq-617 已提交
84
        sh '''
L
fix  
liuyq-617 已提交
85
        cd ${WK}
L
fix  
liuyq-617 已提交
86 87
        git checkout master
        '''
L
fix  
liuyq-617 已提交
88
        }
89 90 91 92 93 94
      else if(env.CHANGE_TARGET == '2.0'){
        sh '''
        cd ${WK}
        git checkout 2.0
        '''
      } 
L
liuyq-617 已提交
95 96 97 98 99 100
      else if(env.CHANGE_TARGET == '3.0'){
        sh '''
        cd ${WK}
        git checkout 3.0
        '''
      } 
101
      else{
L
fix  
liuyq-617 已提交
102
        sh '''
L
fix  
liuyq-617 已提交
103
        cd ${WK}
L
fix  
liuyq-617 已提交
104 105
        git checkout develop
        '''
L
fix  
liuyq-617 已提交
106 107 108
      } 
    }
    sh '''
109
    cd ${WK}
L
fix  
liuyq-617 已提交
110
    git pull >/dev/null 
L
fix  
liuyq-617 已提交
111

112 113
    export TZ=Asia/Harbin
    date
L
liuyq-617 已提交
114
    git clean -dfx
115 116 117 118 119 120
    mkdir debug
    cd debug
    cmake .. > /dev/null
    make > /dev/null
    make install > /dev/null
    cd ${WKC}/tests
L
liuyq-617 已提交
121
    pip3 install ${WKC}/src/connector/python/
L
liuyq-617 已提交
122
    '''
123 124
    return 1
}
L
liuyq-617 已提交
125

Y
Yiqing Liu 已提交
126
pipeline {
L
liuyq-617 已提交
127 128 129 130 131
  agent none
  environment{
      WK = '/var/lib/jenkins/workspace/TDinternal'
      WKC= '/var/lib/jenkins/workspace/TDinternal/community'
  }
Y
Yiqing Liu 已提交
132
  stages {
L
change  
liuyq-617 已提交
133
      stage('pre_build'){
134
          agent{label 'master'}
L
liuyq-617 已提交
135 136 137
          when {
              changeRequest()
          }
138
          steps {
L
change  
liuyq-617 已提交
139 140 141 142
            script{
              abort_previous()
              abortPreviousBuilds()
            }
L
liuyq-617 已提交
143
          sh'''
144
          rm -rf ${WORKSPACE}.tes
L
fix  
liuyq-617 已提交
145 146
          cp -r ${WORKSPACE} ${WORKSPACE}.tes
          cd ${WORKSPACE}.tes
L
test  
liuyq-617 已提交
147
          git fetch
148 149 150 151 152 153 154
          '''
          script {
            if (env.CHANGE_TARGET == 'master') {
              sh '''
              git checkout master
              '''
              }
L
test  
liuyq-617 已提交
155 156 157 158 159
            else if(env.CHANGE_TARGET == '2.0'){
              sh '''
              git checkout 2.0
              '''
            } 
L
liuyq-617 已提交
160 161 162 163 164
            else if(env.CHANGE_TARGET == '3.0'){
              sh '''
              git checkout 3.0
              '''
            } 
L
test  
liuyq-617 已提交
165
            else{
166 167 168 169 170 171
              sh '''
              git checkout develop
              '''
            } 
          }
          sh'''
L
liuyq-617 已提交
172
          git fetch origin +refs/pull/${CHANGE_ID}/merge
173
          git checkout -qf FETCH_HEAD
L
fix  
liuyq-617 已提交
174
          '''     
175

L
liuyq-617 已提交
176 177 178 179
          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
180
          }
L
fix  
liuyq-617 已提交
181
          sh'''
L
liuyq-617 已提交
182
          rm -rf ${WORKSPACE}.tes
L
fix  
liuyq-617 已提交
183
          '''
184 185
          }
      }
L
change  
liuyq-617 已提交
186
      stage('Parallel test stage') {
L
liuyq-617 已提交
187 188
        //only build pr
        when {
L
liuyq-617 已提交
189
          allOf{
L
liuyq-617 已提交
190
              changeRequest()
L
liuyq-617 已提交
191 192
               expression{
                return skipbuild.trim() == '2'
193
              }
L
liuyq-617 已提交
194
            }
L
liuyq-617 已提交
195
          }
Y
Yiqing Liu 已提交
196
      parallel {
L
liuyq-617 已提交
197
        stage('python_1_s1') {
L
liuyq-617 已提交
198
          agent{label " slave1 || slave11 "}
L
liuyq-617 已提交
199
          steps {
L
liuyq-617 已提交
200
            
201
            pre_test()
L
liuyq-617 已提交
202 203 204 205 206 207 208
            // timeout(time: 55, unit: 'MINUTES'){
            //   sh '''
            //   date
            //   cd ${WKC}/tests
            //   ./test-all.sh p1
            //   date'''
            // }
L
liuyq-617 已提交
209
            
L
liuyq-617 已提交
210 211
          }
        }
L
liuyq-617 已提交
212
        stage('python_2_s5') {
L
liuyq-617 已提交
213
          agent{label " slave5 || slave15 "}
L
liuyq-617 已提交
214 215 216
          steps {
            
            pre_test()
L
liuyq-617 已提交
217 218 219 220 221 222 223
            // timeout(time: 55, unit: 'MINUTES'){
            //     sh '''
            //     date
            //     cd ${WKC}/tests
            //     ./test-all.sh p2
            //     date'''
            // }
L
liuyq-617 已提交
224 225 226
          }
        }
        stage('python_3_s6') {
L
liuyq-617 已提交
227
          agent{label " slave6 || slave16 "}
L
liuyq-617 已提交
228 229 230 231 232 233 234 235 236 237
          steps {  
            pre_test()   
            // timeout(time: 55, unit: 'MINUTES'){       
              
            //   sh '''
            //   date
            //   cd ${WKC}/tests
            //   ./test-all.sh p3
            //   date'''
            // }
L
liuyq-617 已提交
238 239
          }
        }
L
liuyq-617 已提交
240
        stage('test_b1_s2') {
L
liuyq-617 已提交
241
          agent{label " slave2 || slave12 "}
L
liuyq-617 已提交
242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259
          steps {   
            pre_test()  
        //     timeout(time: 55, unit: 'MINUTES'){       
              
        //       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
        //       node test1970.js
	      // cd ${WKC}/tests/connectorTest/nodejsTest/nanosupport
	      // npm install td2.0-connector > /dev/null 2>&1
        //       node nanosecondTest.js
260

L
liuyq-617 已提交
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
        //       '''
        //       sh '''
        //         cd ${WKC}/tests/examples/C#/taosdemo
        //         mcs -out:taosdemo *.cs > /dev/null 2>&1
        //         echo '' |./taosdemo -c /etc/taos
        //         cd ${WKC}/tests/connectorTest/C#Test/nanosupport
        //         mcs -out:nano *.cs > /dev/null 2>&1
        //         echo '' |./nano
        //       '''
        //       sh '''
        //         cd ${WKC}/tests/gotest
        //         bash batchtest.sh
        //       '''
        //       sh '''
        //       cd ${WKC}/tests
        //       ./test-all.sh b1fq
        //       date'''
        //     }
Y
Yiqing Liu 已提交
279 280
          }
        }
L
liuyq-617 已提交
281
        stage('test_crash_gen_s3') {
L
liuyq-617 已提交
282
          agent{label " slave3 || slave13 "}
283
          
Y
Yiqing Liu 已提交
284
          steps {
285
            pre_test()
L
liuyq-617 已提交
286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313
            // timeout(time: 60, unit: 'MINUTES'){
            //   sh '''
            //   cd ${WKC}/tests/pytest
            //   ./crash_gen.sh -a -p -t 4 -s 2000
            //   '''
            // }
            // timeout(time: 60, unit: 'MINUTES'){
            //   // sh '''
            //   // cd ${WKC}/tests/pytest
            //   // rm -rf /var/lib/taos/*
            //   // rm -rf /var/log/taos/*
            //   // ./handle_crash_gen_val_log.sh
            //   // '''
            //   sh '''
            //   cd ${WKC}/tests/pytest
            //   rm -rf /var/lib/taos/*
            //   rm -rf /var/log/taos/*
            //   ./handle_taosd_val_log.sh
            //   '''
            // }
            // timeout(time: 55, unit: 'MINUTES'){
            //     sh '''
            //     date
            //     cd ${WKC}/tests
            //     ./test-all.sh b2fq
            //     date
            //     '''
            // }                     
Y
Yiqing Liu 已提交
314 315
          }
        }
L
liuyq-617 已提交
316
        stage('test_valgrind_s4') {
L
liuyq-617 已提交
317
          agent{label " slave4 || slave14 "}
L
liuyq-617 已提交
318

Y
Yiqing Liu 已提交
319
          steps {
320
            pre_test()
L
liuyq-617 已提交
321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339
            // catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
            //     sh '''
            //     cd ${WKC}/tests/pytest
            //     ./valgrind-test.sh 2>&1 > mem-error-out.log
            //     ./handle_val_log.sh
            //     '''
            // }     
            // timeout(time: 55, unit: 'MINUTES'){      
            //   sh '''
            //   date
            //   cd ${WKC}/tests
            //   ./test-all.sh b3fq
            //   date'''
            //   sh '''
            //   date
            //   cd ${WKC}/tests
            //   ./test-all.sh full example
            //   date'''
            // }
Y
Yiqing Liu 已提交
340 341
          }
        }
L
liuyq-617 已提交
342
        stage('test_b4_s7') {
L
liuyq-617 已提交
343
          agent{label " slave7 || slave17 "}
L
liuyq-617 已提交
344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359
          steps {  
            pre_test()   
            // timeout(time: 55, unit: 'MINUTES'){       
              
            //   sh '''
            //   date
            //   cd ${WKC}/tests
            //   ./test-all.sh b4fq
            //   cd ${WKC}/tests
            //   ./test-all.sh p4
            //   cd ${WKC}/tests
            //   ./test-all.sh full jdbc
            //   cd ${WKC}/tests
            //   ./test-all.sh full unit
            //   date'''
            // }
L
liuyq-617 已提交
360 361 362
          }
        }
        stage('test_b5_s8') {
L
liuyq-617 已提交
363
          agent{label " slave8 || slave18 "}
L
liuyq-617 已提交
364 365 366 367 368 369 370 371 372 373
          steps { 
            pre_test()    
            // timeout(time: 55, unit: 'MINUTES'){       
              
            //   sh '''
            //   date
            //   cd ${WKC}/tests
            //   ./test-all.sh b5fq
            //   date'''
            // }
L
liuyq-617 已提交
374 375 376
          }
        }
        stage('test_b6_s9') {
L
liuyq-617 已提交
377
          agent{label " slave9 || slave19 "}
L
liuyq-617 已提交
378 379 380 381 382 383 384 385 386 387
          steps { 
            pre_test()    
            // timeout(time: 55, unit: 'MINUTES'){       
              
            //   sh '''
            //   date
            //   cd ${WKC}/tests
            //   ./test-all.sh b6fq
            //   date'''
            // }
L
liuyq-617 已提交
388 389 390
          }
        }
        stage('test_b7_s10') {
L
liuyq-617 已提交
391
          agent{label " slave10 || slave20 "}
L
liuyq-617 已提交
392 393 394 395 396 397 398 399 400 401
          steps {  
            pre_test()   
            // timeout(time: 55, unit: 'MINUTES'){       
              
            //   sh '''
            //   date
            //   cd ${WKC}/tests
            //   ./test-all.sh b7fq
            //   date'''              
            // }
L
liuyq-617 已提交
402 403
          }
        }        
Y
Yiqing Liu 已提交
404 405
    }
  }
L
liuyq-617 已提交
406
  }
L
liuyq-617 已提交
407
  post {  
408 409
        success {
            emailext (
410 411
                subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' SUCCESS",
                body: """<!DOCTYPE html>
412 413 414 415 416 417 418 419 420 421 422 423 424 425 426
                <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">
427
                                    <li>构建名称>>分支:${env.BRANCH_NAME}</li>
428 429
                                    <li>构建结果:<span style="color:green"> Successful </span></li>
                                    <li>构建编号:${BUILD_NUMBER}</li>
430
                                    <li>触发用户:${env.CHANGE_AUTHOR}</li>
L
fix  
liuyq-617 已提交
431
                                    <li>提交信息:${env.CHANGE_TITLE}</li>
432 433
                                    <li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
                                    <li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
434
                                    
435 436 437 438 439 440
                                </div>
                                </ul>
                            </td>
                        </tr>
                    </table></font>
                </body>
441
                </html>""",
L
liuyq-617 已提交
442
                to: "${env.CHANGE_AUTHOR_EMAIL}",
443 444 445 446 447
                from: "support@taosdata.com"
            )
        }
        failure {
            emailext (
448 449
                subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' FAIL",
                body: """<!DOCTYPE html>
450 451 452 453 454 455 456 457 458 459 460 461 462 463 464
                <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">
465
                                    <li>构建名称>>分支:${env.BRANCH_NAME}</li>
L
liuyq-617 已提交
466
                                    <li>构建结果:<span style="color:red"> Failure </span></li>
467
                                    <li>构建编号:${BUILD_NUMBER}</li>
468
                                    <li>触发用户:${env.CHANGE_AUTHOR}</li>
L
fix  
liuyq-617 已提交
469
                                    <li>提交信息:${env.CHANGE_TITLE}</li>
470 471
                                    <li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
                                    <li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
472
                                    
473 474 475 476 477 478
                                </div>
                                </ul>
                            </td>
                        </tr>
                    </table></font>
                </body>
479
                </html>""",
L
liuyq-617 已提交
480
                to: "${env.CHANGE_AUTHOR_EMAIL}",
481 482 483
                from: "support@taosdata.com"
            )
        }
L
liuyq-617 已提交
484
    } 
X
xiaolei li 已提交
485
}