Jenkinsfile 10.7 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 skipstage=0
L
liuyq-617 已提交
9 10 11 12 13 14 15 16 17 18
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;
    }
19

L
liuyq-617 已提交
20 21 22
    if (currentBuildNumber == build.getNumber().toInteger()) {
      continue;
    }
23

L
liuyq-617 已提交
24 25 26
    build.doKill()    //doTerm(),doKill(),doTerm()
  }
}
L
liuyq-617 已提交
27

28 29 30 31 32 33
def pre_test(){
    catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                sh '''
                sudo rmtaos
                '''
    }
L
liuyq-617 已提交
34
    sh '''
L
liuyq-617 已提交
35
    
36
    cd ${WKC}
L
liuyq-617 已提交
37
    git checkout develop
38
    git reset --hard HEAD~10 >/dev/null 
L
liuyq-617 已提交
39
    git pull
L
liuyq-617 已提交
40
    git fetch origin +refs/pull/${CHANGE_ID}/merge
41
    git checkout -qf FETCH_HEAD
L
test  
liuyq-617 已提交
42
    git --no-pager diff --name-only FETCH_HEAD $(git merge-base FETCH_HEAD develop)|grep -v -E '.*md|//src//connector|Jenkinsfile' || exit 0
L
liuyq-617 已提交
43
    find ${WKC}/tests/pytest -name \'*\'.sql -exec rm -rf {} \\;
44
    cd ${WK}
L
enhance  
liuyq-617 已提交
45
    git reset --hard HEAD~10
46 47 48 49 50 51 52 53 54 55 56 57
    git checkout develop
    git pull
    cd ${WK}
    export TZ=Asia/Harbin
    date
    rm -rf ${WK}/debug
    mkdir debug
    cd debug
    cmake .. > /dev/null
    make > /dev/null
    make install > /dev/null
    cd ${WKC}/tests
L
liuyq-617 已提交
58
    '''
59 60
    return 1
}
L
liuyq-617 已提交
61

Y
Yiqing Liu 已提交
62
pipeline {
L
liuyq-617 已提交
63
  agent none
L
liuyq-617 已提交
64
  
L
liuyq-617 已提交
65 66 67 68
  environment{
      WK = '/var/lib/jenkins/workspace/TDinternal'
      WKC= '/var/lib/jenkins/workspace/TDinternal/community'
  }
L
liuyq-617 已提交
69
  
Y
Yiqing Liu 已提交
70
  stages {
L
change  
liuyq-617 已提交
71
      stage('pre_build'){
72
          agent{label 'master'}
L
liuyq-617 已提交
73 74 75
          when {
              changeRequest()
          }
76
          steps {
L
liuyq-617 已提交
77
          sh'''
L
fix  
liuyq-617 已提交
78 79
          cp -r ${WORKSPACE} ${WORKSPACE}.tes
          cd ${WORKSPACE}.tes
80 81
          git checkout develop
          git pull
L
liuyq-617 已提交
82
          git fetch origin +refs/pull/${CHANGE_ID}/merge
83
          git checkout -qf FETCH_HEAD
L
liuyq-617 已提交
84
          '''
85
          script{
L
balance  
liuyq-617 已提交
86
            env.skipstage=sh(script:"cd ${WORKSPACE}.tes && git --no-pager diff --name-only FETCH_HEAD develop|grep -v -E '.*md|//src//connector|Jenkinsfile|test-all.sh' || echo 0 ",returnStdout:true) 
87
          }
L
balance  
liuyq-617 已提交
88
          println env.skipstage
L
fix  
liuyq-617 已提交
89
          sh'''
L
liuyq-617 已提交
90
          rm -rf ${WORKSPACE}.tes
L
fix  
liuyq-617 已提交
91
          '''
92 93
          }
      }
L
change  
liuyq-617 已提交
94 95
    
      stage('Parallel test stage') {
L
liuyq-617 已提交
96 97 98
        //only build pr
        when {
              changeRequest()
99
               expression {
L
fix  
liuyq-617 已提交
100
                    env.skipstage != 0
101
              }
L
liuyq-617 已提交
102
          }
Y
Yiqing Liu 已提交
103
      parallel {
L
liuyq-617 已提交
104
        stage('python_1_s1') {
L
liuyq-617 已提交
105
          agent{label 'p1'}
L
liuyq-617 已提交
106
          steps {
L
liuyq-617 已提交
107
            
108
            pre_test()
L
liuyq-617 已提交
109
            timeout(time: 45, unit: 'MINUTES'){
L
liuyq-617 已提交
110
              sh '''
L
liuyq-617 已提交
111
              date
L
liuyq-617 已提交
112 113 114 115 116
              cd ${WKC}/tests
              ./test-all.sh p1
              date'''
            }
            
L
liuyq-617 已提交
117 118
          }
        }
L
liuyq-617 已提交
119
        stage('python_2_s5') {
L
liuyq-617 已提交
120 121 122 123
          agent{label 'p2'}
          steps {
            
            pre_test()
L
liuyq-617 已提交
124
            timeout(time: 45, unit: 'MINUTES'){
125 126 127 128 129
                sh '''
                date
                cd ${WKC}/tests
                ./test-all.sh p2
                date'''
L
liuyq-617 已提交
130 131 132 133 134 135 136 137 138 139 140 141 142 143
            }
          }
        }
        stage('python_3_s6') {
          agent{label 'p3'}
          steps {     
            timeout(time: 45, unit: 'MINUTES'){       
              pre_test()
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh p3
              date'''
            }
L
liuyq-617 已提交
144 145
          }
        }
L
liuyq-617 已提交
146
        stage('test_b1_s2') {
147
          agent{label 'b1'}
L
liuyq-617 已提交
148
          steps {     
149
            timeout(time: 45, unit: 'MINUTES'){       
L
liuyq-617 已提交
150 151 152 153 154 155
              pre_test()
              sh '''
              cd ${WKC}/tests
              ./test-all.sh b1fq
              date'''
            }
Y
Yiqing Liu 已提交
156 157 158
          }
        }

L
liuyq-617 已提交
159
        stage('test_crash_gen_s3') {
160
          agent{label "b2"}
161
          
Y
Yiqing Liu 已提交
162
          steps {
163
            pre_test()
L
liuyq-617 已提交
164 165 166 167 168 169
            catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                sh '''
                cd ${WKC}/tests/pytest
                ./crash_gen.sh -a -p -t 4 -s 2000
                '''
            }
170 171 172 173 174 175 176

            sh '''
            cd ${WKC}/tests/pytest
            rm -rf /var/lib/taos/*
            rm -rf /var/log/taos/*
            ./handle_crash_gen_val_log.sh
            '''
177 178 179 180 181 182 183 184 185
            timeout(time: 45, unit: 'MINUTES'){
                sh '''
                date
                cd ${WKC}/tests
                ./test-all.sh b2fq
                date
                '''
            }         
            
Y
Yiqing Liu 已提交
186 187 188
          }
        }

L
liuyq-617 已提交
189
        stage('test_valgrind_s4') {
190
          agent{label "b3"}
L
liuyq-617 已提交
191

Y
Yiqing Liu 已提交
192
          steps {
193 194 195 196 197 198 199
            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 已提交
200
            }     
L
liuyq-617 已提交
201
            timeout(time: 45, unit: 'MINUTES'){      
L
liuyq-617 已提交
202 203 204 205 206 207
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh b3fq
              date'''
            }
Y
Yiqing Liu 已提交
208 209
          }
        }
L
liuyq-617 已提交
210 211 212 213 214 215 216 217 218
        stage('test_b4_s7') {
          agent{label 'b4'}
          steps {     
            timeout(time: 45, unit: 'MINUTES'){       
              pre_test()
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh b4fq
L
fix  
liuyq-617 已提交
219
              cd ${WKC}/tests
L
liuyq-617 已提交
220
              ./test-all.sh p4
221 222
              cd ${WKC}/tests
              ./test-all.sh full jdbc
P
Ping Xiao 已提交
223 224
              cd ${WKC}/tests
              ./test-all.sh full unit
L
liuyq-617 已提交
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267
              date'''
            }
          }
        }
        stage('test_b5_s8') {
          agent{label 'b5'}
          steps {     
            timeout(time: 45, unit: 'MINUTES'){       
              pre_test()
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh b5fq
              date'''
            }
          }
        }
        stage('test_b6_s9') {
          agent{label 'b6'}
          steps {     
            timeout(time: 45, unit: 'MINUTES'){       
              pre_test()
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh b6fq
              date'''
            }
          }
        }
        stage('test_b7_s10') {
          agent{label 'b7'}
          steps {     
            timeout(time: 45, unit: 'MINUTES'){       
              pre_test()
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh b7fq
              date'''
            }
          }
        }        
Y
Yiqing Liu 已提交
268 269
    }
  }
L
liuyq-617 已提交
270 271 272 273 274 275 276 277 278 279 280
  stage('after_build'){
          agent{label 'master'}
          when {
              changeRequest()
          }
          steps {
          sh'''
          df -h
          '''
          }
      }
L
liuyq-617 已提交
281
  }
L
liuyq-617 已提交
282
  post {  
283 284
        success {
            emailext (
285 286
                subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' SUCCESS",
                body: """<!DOCTYPE html>
287 288 289 290 291 292 293 294 295 296 297 298 299 300 301
                <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">
302
                                    <li>构建名称>>分支:${env.BRANCH_NAME}</li>
303 304
                                    <li>构建结果:<span style="color:green"> Successful </span></li>
                                    <li>构建编号:${BUILD_NUMBER}</li>
305
                                    <li>触发用户:${env.CHANGE_AUTHOR}</li>
L
fix  
liuyq-617 已提交
306
                                    <li>提交信息:${env.CHANGE_TITLE}</li>
307 308
                                    <li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
                                    <li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
309
                                    
310 311 312 313 314 315
                                </div>
                                </ul>
                            </td>
                        </tr>
                    </table></font>
                </body>
316
                </html>""",
L
liuyq-617 已提交
317
                to: "${env.CHANGE_AUTHOR_EMAIL}",
318 319 320 321 322
                from: "support@taosdata.com"
            )
        }
        failure {
            emailext (
323 324
                subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' FAIL",
                body: """<!DOCTYPE html>
325 326 327 328 329 330 331 332 333 334 335 336 337 338 339
                <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">
340
                                    <li>构建名称>>分支:${env.BRANCH_NAME}</li>
L
liuyq-617 已提交
341
                                    <li>构建结果:<span style="color:red"> Failure </span></li>
342
                                    <li>构建编号:${BUILD_NUMBER}</li>
343
                                    <li>触发用户:${env.CHANGE_AUTHOR}</li>
L
fix  
liuyq-617 已提交
344
                                    <li>提交信息:${env.CHANGE_TITLE}</li>
345 346
                                    <li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
                                    <li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
347
                                    
348 349 350 351 352 353
                                </div>
                                </ul>
                            </td>
                        </tr>
                    </table></font>
                </body>
354
                </html>""",
L
liuyq-617 已提交
355
                to: "${env.CHANGE_AUTHOR_EMAIL}",
356 357 358 359
                from: "support@taosdata.com"
            )
        }
    }
L
liuyq-617 已提交
360
   
361
}