Jenkinsfile2 11.8 KB
Newer Older
1 2 3 4 5 6
import hudson.model.Result
import hudson.model.*;
import jenkins.model.CauseOfInterruption
node {
}
def sync_source() {
T
tangfangzhi 已提交
7 8 9
    sh '''
        hostname
        date
10 11
        env
    '''
12 13 14
    sh '''
        cd ${WKC}
        [ -f src/connector/grafanaplugin/README.md ] && rm -f src/connector/grafanaplugin/README.md > /dev/null || echo "failed to remove grafanaplugin README.md"
15 16 17 18 19
        git reset --hard
        git fetch
        cd ${WK}
        git reset --hard
        git fetch
20 21 22 23 24
    '''
    script {
        if (env.CHANGE_TARGET == 'master') {
            sh '''
                cd ${WKC}
25
                git clean -fxd
26 27 28 29 30
                git checkout master
            '''
        } else if (env.CHANGE_TARGET == '2.0') {
            sh '''
                cd ${WKC}
31
                git clean -fxd
32 33 34 35 36
                git checkout 2.0
            '''
        } else if (env.CHANGE_TARGET == '2.4') {
            sh '''
                cd ${WKC}
37
                git clean -fxd
38 39
                git checkout 2.4
            '''
40 41 42 43 44 45
        } else if (env.CHANGE_TARGET == '2.6') {
            sh '''
                cd ${WKC}
                git clean -fxd
                git checkout 2.6
            '''
46 47 48
        } else {
            sh '''
                cd ${WKC}
49
                git clean -fxd
50 51 52 53
                git checkout develop
            '''
        }
    }
54
    sh '''
55
        export TZ=Asia/Harbin
56 57 58 59
        cd ${WKC}
        git remote prune origin
        [ -f src/connector/grafanaplugin/README.md ] && rm -f src/connector/grafanaplugin/README.md > /dev/null || echo "failed to remove grafanaplugin README.md"
        git pull >/dev/null
T
tangfangzhi 已提交
60
        git clean -dfx
61
        git log -5
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
    '''
    script {
        if (env.CHANGE_TARGET == 'master') {
            sh '''
                cd ${WK}
                git checkout master
            '''
        } else if (env.CHANGE_TARGET == '2.0') {
            sh '''
                cd ${WK}
                git checkout 2.0
            '''
        } else if (env.CHANGE_TARGET == '2.4') {
            sh '''
                cd ${WK}
                git checkout 2.4
            '''
79 80 81 82 83
        } else if (env.CHANGE_TARGET == '2.6') {
            sh '''
                cd ${WK}
                git checkout 2.6
            '''
84 85 86 87 88 89 90 91 92 93
        } else {
            sh '''
                cd ${WK}
                git checkout develop
            '''
        }
    }
    sh '''
        cd ${WK}
        git pull >/dev/null
T
tangfangzhi 已提交
94
        git clean -dfx
95
        git log -5
96 97 98 99 100 101 102 103
    '''
    script {
        if (env.CHANGE_URL =~ /\/TDengine\//) {
            sh '''
                echo "match /TDengine/ repository"
                cd ${WKC}
                git fetch origin +refs/pull/${CHANGE_ID}/merge
                git checkout -qf FETCH_HEAD
104 105 106 107
                git log -5
            '''
            sh '''
                cd ${WKC}
108 109 110
                rm -rf src/connector/python
                mkdir -p src/connector/python
                git clone --depth 1 https://github.com/taosdata/taos-connector-python src/connector/python || echo "failed to clone python connector"
111 112 113 114 115 116 117
            '''
        } else if (env.CHANGE_URL =~ /\/TDinternal\//) {
            sh '''
                echo "match /TDinternal/ repository"
                cd ${WK}
                git fetch origin +refs/pull/${CHANGE_ID}/merge
                git checkout -qf FETCH_HEAD
118 119 120 121
                git log -5
            '''
            sh '''
                cd ${WKC}
122 123 124
                rm -rf src/connector/python
                mkdir -p src/connector/python
                git clone --depth 1 https://github.com/taosdata/taos-connector-python src/connector/python || echo "failed to clone python connector"
125 126 127 128 129 130 131 132 133 134
            '''
        } else {
            sh '''
                echo "unmatched reposiotry ${CHANGE_URL}"
            '''
        }
    }
    sh '''
        cd ${WKC}
        git submodule update --init --recursive
135 136 137 138 139 140 141 142
    '''
}
def pre_test() {
    sync_source()
    sh '''
        cd ${WK}
        mkdir -p debug
        cd debug
T
tangfangzhi 已提交
143 144
        go env -w GOPROXY=https://goproxy.cn,direct
        go env -w GO111MODULE=on
145
        cmake .. -DBUILD_HTTP=false -DBUILD_TOOLS=true > /dev/null
T
tangfangzhi 已提交
146
        make -j8 >/dev/null
T
tangfangzhi 已提交
147
        make install
T
tangfangzhi 已提交
148 149 150 151 152 153 154 155 156 157 158 159 160
    '''
    return 1
}
def pre_test_mac() {
    sync_source()
    sh '''
        cd ${WK}
        mkdir -p debug
        cd debug
        go env -w GOPROXY=https://goproxy.cn,direct
        go env -w GO111MODULE=on
        cmake .. -DBUILD_TOOLS=false > /dev/null
        make -j8 >/dev/null
161 162 163 164
    '''
    return 1
}
pipeline {
165
    agent none
166 167
    options { skipDefaultCheckout() }
    environment{
T
tangfangzhi 已提交
168 169 170
        WK = '/var/data/jenkins/workspace/TDinternal'
        WKC = '/var/data/jenkins/workspace/TDinternal/community'
        LOGDIR = '/var/data/jenkins/workspace/log'
171 172 173
    }
    stages {
        stage('run test') {
T
tangfangzhi 已提交
174 175 176 177 178 179 180
            options { skipDefaultCheckout() }
            when {
                allOf {
                    changeRequest()
                    not { expression { env.CHANGE_BRANCH =~ /docs\// }}
                }
            }
T
tangfangzhi 已提交
181
            parallel {
182 183
                stage ('build arm64') {
                    agent {label " worker07_arm64 || worker09_arm64 "}
T
tangfangzhi 已提交
184 185 186 187 188
                    steps {
                        timeout(time: 20, unit: 'MINUTES') {
                            pre_test()
                            script {
                                sh '''
189
                                    echo "arm64 build done"
T
tangfangzhi 已提交
190 191 192 193 194 195
                                    date
                                '''
                            }
                        }
                    }
                }
196
                stage ('build Mac') {
T
tangfangzhi 已提交
197 198 199 200 201 202
                    agent {label " Mac_catalina "}
                    steps {
                        timeout(time: 20, unit: 'MINUTES') {
                            pre_test_mac()
                            script {
                                sh '''
203
                                    echo "Mac build done"
T
tangfangzhi 已提交
204 205 206 207 208 209 210
                                    date
                                '''
                            }
                        }
                    }
                }
                stage('run cases') {
211
                    agent {label " worker01 || worker02 "}
T
tangfangzhi 已提交
212 213 214
                    steps {
                        sh '''
                            date
215
                            pwd
T
tangfangzhi 已提交
216 217
                            hostname
                        '''
218 219 220 221 222 223 224 225 226
                        timeout(time: 15, unit: 'MINUTES') {
                            pre_test()
                            script {
                                sh '''
                                    echo "Linux build done"
                                    date
                                '''
                            }
                        }
T
tangfangzhi 已提交
227
                        catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
228
                            timeout(time: 25, unit: 'MINUTES') {
T
tangfangzhi 已提交
229 230 231
                                sh '''
                                    date
                                    cd ${WKC}/tests/parallel_test
232
                                    time ./run.sh -m /home/m.json -t cases.task -l ${LOGDIR} -b ${BRANCH_NAME}
T
tangfangzhi 已提交
233 234 235 236
                                    date
                                    hostname
                                '''
                            }
T
tangfangzhi 已提交
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 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 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323
                }
            }    
        }
    }
    post {
        success {
            emailext (
                subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' SUCCESS",
                body: """<!DOCTYPE html>
                    <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">
                                                <li>构建名称>>分支:${env.BRANCH_NAME}</li>
                                                <li>构建结果:<span style="color:green"> Successful </span></li>
                                                <li>构建编号:${BUILD_NUMBER}</li>
                                                <li>触发用户:${env.CHANGE_AUTHOR}</li>
                                                <li>提交信息:${env.CHANGE_TITLE}</li>
                                                <li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
                                                <li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
                                            </div>
                                        </ul>
                                    </td>
                                </tr>
                            </table>
                        </body>
                    </html>""",
                to: "${env.CHANGE_AUTHOR_EMAIL}",
                from: "support@taosdata.com"
            )
        }
        failure {
            emailext (
                subject: "PR-result: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' FAIL",
                body: """<!DOCTYPE html>
                    <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">
                                                <li>构建名称>>分支:${env.BRANCH_NAME}</li>
                                                <li>构建结果:<span style="color:red"> Failure </span></li>
                                                <li>构建编号:${BUILD_NUMBER}</li>
                                                <li>触发用户:${env.CHANGE_AUTHOR}</li>
                                                <li>提交信息:${env.CHANGE_TITLE}</li>
                                                <li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
                                                <li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
                                            </div>
                                        </ul>
                                    </td>
                                </tr>
                            </table>
                        </body>
                    </html>""",
                to: "${env.CHANGE_AUTHOR_EMAIL}",
                from: "support@taosdata.com"
            )
        }
    }
}