Jenkinsfile 11.5 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
def cancelPreviousBuilds() {
    def jobName = env.JOB_NAME
    def buildNumber = env.BUILD_NUMBER.toInteger()
    /* Get job name */
    def currentJob = Jenkins.instance.getItemByFullName(jobName)
L
liuyq-617 已提交
14

L
liuyq-617 已提交
15 16 17 18 19 20 21 22 23 24 25 26
    /* Iterating over the builds for specific job */
    for (def build : currentJob.builds) {
        def exec = build.getExecutor()
        /* If there is a build that is currently running and it's not current build */
        if (build.isBuilding() && build.number.toInteger() != buildNumber && exec != null) {
            /* Then stop it */
            exec.interrupt(
                    Result.ABORTED,
                    new CauseOfInterruption.UserInterruption("Aborted by #${currentBuild.number}")
                )
            println("Aborted previously running build #${build.number}")            
        }
L
liuyq-617 已提交
27
    }
L
liuyq-617 已提交
28 29 30 31 32 33
}
// def abortPreviousBuilds() {
//   def currentJobName = env.JOB_NAME
//   def currentBuildNumber = env.BUILD_NUMBER.toInteger()
//   def jobs = Jenkins.instance.getItemByFullName(currentJobName)
//   def builds = jobs.getBuilds()
34

L
liuyq-617 已提交
35 36 37 38
//   for (build in builds) {
//     if (!build.isBuilding()) {
//       continue;
//     }
39

L
liuyq-617 已提交
40 41 42 43 44 45 46
//     if (currentBuildNumber == build.getNumber().toInteger()) {
//       continue;
//     }

//     build.doKill()    //doTerm(),doKill(),doTerm()
//   }
// }
L
test  
liuyq-617 已提交
47
 //abort previous build
L
liuyq-617 已提交
48 49 50 51 52 53
// abortPreviousBuilds()
// def abort_previous(){
//   def buildNumber = env.BUILD_NUMBER as int
//   if (buildNumber > 1) milestone(buildNumber - 1)
//   milestone(buildNumber)
// }
54
def pre_test(){
L
liuyq-617 已提交
55 56 57 58

    sh '''
    sudo rmtaos || echo "taosd has not installed"
    '''
L
liuyq-617 已提交
59
    sh '''
L
liuyq-617 已提交
60
    
61
    cd ${WKC}
L
liuyq-617 已提交
62
    git checkout develop
63
    git reset --hard HEAD~10 >/dev/null 
L
liuyq-617 已提交
64
    git pull >/dev/null
L
liuyq-617 已提交
65
    git fetch origin +refs/pull/${CHANGE_ID}/merge
66
    git checkout -qf FETCH_HEAD
L
liuyq-617 已提交
67
    git --no-pager diff --name-only FETCH_HEAD $(git merge-base FETCH_HEAD develop)|grep -v -E '.*md|//src//connector|Jenkinsfile'
L
liuyq-617 已提交
68
    find ${WKC}/tests/pytest -name \'*\'.sql -exec rm -rf {} \\;
69
    cd ${WK}
L
enhance  
liuyq-617 已提交
70
    git reset --hard HEAD~10
L
fix  
liuyq-617 已提交
71 72
    git checkout develop 
    git pull >/dev/null 
73 74 75 76 77 78 79 80 81 82
    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 已提交
83
    '''
84 85
    return 1
}
L
liuyq-617 已提交
86

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

L
liuyq-617 已提交
184
        stage('test_crash_gen_s3') {
185
          agent{label "b2"}
186
          
Y
Yiqing Liu 已提交
187
          steps {
188
            pre_test()
L
liuyq-617 已提交
189 190 191 192 193 194
            catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                sh '''
                cd ${WKC}/tests/pytest
                ./crash_gen.sh -a -p -t 4 -s 2000
                '''
            }
195 196 197 198 199 200 201

            sh '''
            cd ${WKC}/tests/pytest
            rm -rf /var/lib/taos/*
            rm -rf /var/log/taos/*
            ./handle_crash_gen_val_log.sh
            '''
202 203 204 205 206 207 208 209 210
            timeout(time: 45, unit: 'MINUTES'){
                sh '''
                date
                cd ${WKC}/tests
                ./test-all.sh b2fq
                date
                '''
            }         
            
Y
Yiqing Liu 已提交
211 212 213
          }
        }

L
liuyq-617 已提交
214
        stage('test_valgrind_s4') {
215
          agent{label "b3"}
L
liuyq-617 已提交
216

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