Jenkinsfile 10.8 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 27 28 29 30 31 32 33
    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)
}
34
def pre_test(){
L
liuyq-617 已提交
35 36

    sh '''
L
fix  
liuyq-617 已提交
37
    sudo rmtaos || echo "taosd has not installed"
L
liuyq-617 已提交
38
    '''
L
liuyq-617 已提交
39
    sh '''
L
liuyq-617 已提交
40
    
41
    cd ${WKC}
L
liuyq-617 已提交
42
    git checkout develop
43
    git reset --hard HEAD~10 >/dev/null 
L
liuyq-617 已提交
44
    git pull >/dev/null
L
liuyq-617 已提交
45
    git fetch origin +refs/pull/${CHANGE_ID}/merge
46
    git checkout -qf FETCH_HEAD
L
liuyq-617 已提交
47
    git --no-pager diff --name-only FETCH_HEAD $(git merge-base FETCH_HEAD develop)|grep -v -E '.*md|//src//connector|Jenkinsfile'
L
liuyq-617 已提交
48
    find ${WKC}/tests/pytest -name \'*\'.sql -exec rm -rf {} \\;
49
    cd ${WK}
L
enhance  
liuyq-617 已提交
50
    git reset --hard HEAD~10
L
liuyq-617 已提交
51 52 53 54 55 56 57 58 59 60
    '''
    script {
      if (env.CHANGE_TARGET == 'master') {
        sh 'git checkout master'
        }
      else {
        sh 'git checkout develop'
      } 
    }
    sh '''
L
fix  
liuyq-617 已提交
61
    git pull >/dev/null 
62 63 64 65 66 67 68 69 70 71
    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 已提交
72
    '''
73 74
    return 1
}
L
liuyq-617 已提交
75

Y
Yiqing Liu 已提交
76
pipeline {
L
liuyq-617 已提交
77
  agent none
L
liuyq-617 已提交
78
  
L
liuyq-617 已提交
79 80 81 82
  environment{
      WK = '/var/lib/jenkins/workspace/TDinternal'
      WKC= '/var/lib/jenkins/workspace/TDinternal/community'
  }
L
liuyq-617 已提交
83
  
Y
Yiqing Liu 已提交
84
  stages {
L
change  
liuyq-617 已提交
85
      stage('pre_build'){
86
          agent{label 'master'}
L
liuyq-617 已提交
87 88 89
          when {
              changeRequest()
          }
90
          steps {
L
liuyq-617 已提交
91
          sh'''
L
fix  
liuyq-617 已提交
92 93
          cp -r ${WORKSPACE} ${WORKSPACE}.tes
          cd ${WORKSPACE}.tes
94 95
          git checkout develop
          git pull
L
liuyq-617 已提交
96
          git fetch origin +refs/pull/${CHANGE_ID}/merge
97
          git checkout -qf FETCH_HEAD
L
liuyq-617 已提交
98 99
          '''     
          
100
          script{
L
balance  
liuyq-617 已提交
101
            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) 
102
          }
L
balance  
liuyq-617 已提交
103
          println env.skipstage
L
fix  
liuyq-617 已提交
104
          sh'''
L
liuyq-617 已提交
105
          rm -rf ${WORKSPACE}.tes
L
fix  
liuyq-617 已提交
106
          '''
107 108
          }
      }
L
change  
liuyq-617 已提交
109 110
    
      stage('Parallel test stage') {
L
liuyq-617 已提交
111 112 113
        //only build pr
        when {
              changeRequest()
114
               expression {
L
fix  
liuyq-617 已提交
115
                    env.skipstage != 0
116
              }
L
liuyq-617 已提交
117
          }
Y
Yiqing Liu 已提交
118
      parallel {
L
liuyq-617 已提交
119
        stage('python_1_s1') {
L
liuyq-617 已提交
120
          agent{label 'p1'}
L
liuyq-617 已提交
121
          steps {
L
liuyq-617 已提交
122
            
123
            pre_test()
L
liuyq-617 已提交
124
            timeout(time: 45, unit: 'MINUTES'){
L
liuyq-617 已提交
125
              sh '''
L
liuyq-617 已提交
126
              date
L
liuyq-617 已提交
127 128 129 130 131
              cd ${WKC}/tests
              ./test-all.sh p1
              date'''
            }
            
L
liuyq-617 已提交
132 133
          }
        }
L
liuyq-617 已提交
134
        stage('python_2_s5') {
L
liuyq-617 已提交
135 136 137 138
          agent{label 'p2'}
          steps {
            
            pre_test()
L
liuyq-617 已提交
139
            timeout(time: 45, unit: 'MINUTES'){
140 141 142 143 144
                sh '''
                date
                cd ${WKC}/tests
                ./test-all.sh p2
                date'''
L
liuyq-617 已提交
145 146 147 148 149 150 151 152 153 154 155 156 157 158
            }
          }
        }
        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 已提交
159 160
          }
        }
L
liuyq-617 已提交
161
        stage('test_b1_s2') {
162
          agent{label 'b1'}
L
liuyq-617 已提交
163
          steps {     
164
            timeout(time: 45, unit: 'MINUTES'){       
L
liuyq-617 已提交
165 166 167 168 169 170
              pre_test()
              sh '''
              cd ${WKC}/tests
              ./test-all.sh b1fq
              date'''
            }
Y
Yiqing Liu 已提交
171 172 173
          }
        }

L
liuyq-617 已提交
174
        stage('test_crash_gen_s3') {
175
          agent{label "b2"}
176
          
Y
Yiqing Liu 已提交
177
          steps {
178
            pre_test()
L
liuyq-617 已提交
179 180 181 182 183 184
            catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                sh '''
                cd ${WKC}/tests/pytest
                ./crash_gen.sh -a -p -t 4 -s 2000
                '''
            }
185 186 187 188 189 190 191

            sh '''
            cd ${WKC}/tests/pytest
            rm -rf /var/lib/taos/*
            rm -rf /var/log/taos/*
            ./handle_crash_gen_val_log.sh
            '''
192 193 194 195 196 197 198 199 200
            timeout(time: 45, unit: 'MINUTES'){
                sh '''
                date
                cd ${WKC}/tests
                ./test-all.sh b2fq
                date
                '''
            }         
            
Y
Yiqing Liu 已提交
201 202 203
          }
        }

L
liuyq-617 已提交
204
        stage('test_valgrind_s4') {
205
          agent{label "b3"}
L
liuyq-617 已提交
206

Y
Yiqing Liu 已提交
207
          steps {
208 209 210 211 212 213 214
            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 已提交
215
            }     
L
liuyq-617 已提交
216
            timeout(time: 45, unit: 'MINUTES'){      
L
liuyq-617 已提交
217 218 219 220 221 222
              sh '''
              date
              cd ${WKC}/tests
              ./test-all.sh b3fq
              date'''
            }
Y
Yiqing Liu 已提交
223 224
          }
        }
L
liuyq-617 已提交
225 226 227 228 229 230 231 232 233
        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 已提交
234
              cd ${WKC}/tests
L
liuyq-617 已提交
235
              ./test-all.sh p4
236 237
              cd ${WKC}/tests
              ./test-all.sh full jdbc
P
Ping Xiao 已提交
238 239
              cd ${WKC}/tests
              ./test-all.sh full unit
L
liuyq-617 已提交
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 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
              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 已提交
283 284
    }
  }
L
liuyq-617 已提交
285
  }
L
liuyq-617 已提交
286
  post {  
287 288
        success {
            emailext (
289 290
                subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' SUCCESS",
                body: """<!DOCTYPE html>
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305
                <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">
306
                                    <li>构建名称>>分支:${env.BRANCH_NAME}</li>
307 308
                                    <li>构建结果:<span style="color:green"> Successful </span></li>
                                    <li>构建编号:${BUILD_NUMBER}</li>
309
                                    <li>触发用户:${env.CHANGE_AUTHOR}</li>
L
fix  
liuyq-617 已提交
310
                                    <li>提交信息:${env.CHANGE_TITLE}</li>
311 312
                                    <li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
                                    <li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
313
                                    
314 315 316 317 318 319
                                </div>
                                </ul>
                            </td>
                        </tr>
                    </table></font>
                </body>
320
                </html>""",
L
liuyq-617 已提交
321
                to: "${env.CHANGE_AUTHOR_EMAIL}",
322 323 324 325 326
                from: "support@taosdata.com"
            )
        }
        failure {
            emailext (
327 328
                subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' FAIL",
                body: """<!DOCTYPE html>
329 330 331 332 333 334 335 336 337 338 339 340 341 342 343
                <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">
344
                                    <li>构建名称>>分支:${env.BRANCH_NAME}</li>
L
liuyq-617 已提交
345
                                    <li>构建结果:<span style="color:red"> Failure </span></li>
346
                                    <li>构建编号:${BUILD_NUMBER}</li>
347
                                    <li>触发用户:${env.CHANGE_AUTHOR}</li>
L
fix  
liuyq-617 已提交
348
                                    <li>提交信息:${env.CHANGE_TITLE}</li>
349 350
                                    <li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
                                    <li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
351
                                    
352 353 354 355 356 357
                                </div>
                                </ul>
                            </td>
                        </tr>
                    </table></font>
                </body>
358
                </html>""",
L
liuyq-617 已提交
359
                to: "${env.CHANGE_AUTHOR_EMAIL}",
360 361 362 363
                from: "support@taosdata.com"
            )
        }
    }
L
liuyq-617 已提交
364
   
365
}