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
T
tangfangzhi 已提交
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
            '''
T
tangfangzhi 已提交
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
T
tangfangzhi 已提交
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
            '''
T
tangfangzhi 已提交
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
T
tangfangzhi 已提交
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
T
tangfangzhi 已提交
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
T
tangfangzhi 已提交
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 147 148 149 150 151 152 153 154 155 156 157 158 159
        make -j8 >/dev/null
    '''
    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
160 161 162 163
    '''
    return 1
}
pipeline {
T
tangfangzhi 已提交
164
    agent none
165 166
    options { skipDefaultCheckout() }
    environment{
T
tangfangzhi 已提交
167 168 169
        WK = '/var/data/jenkins/workspace/TDinternal'
        WKC = '/var/data/jenkins/workspace/TDinternal/community'
        LOGDIR = '/var/data/jenkins/workspace/log'
170 171 172
    }
    stages {
        stage('run test') {
T
tangfangzhi 已提交
173 174 175 176 177 178 179
            options { skipDefaultCheckout() }
            when {
                allOf {
                    changeRequest()
                    not { expression { env.CHANGE_BRANCH =~ /docs\// }}
                }
            }
T
tangfangzhi 已提交
180
            parallel {
T
tangfangzhi 已提交
181 182
                stage ('build arm64') {
                    agent {label " worker07_arm64 || worker09_arm64 "}
T
tangfangzhi 已提交
183 184 185 186 187
                    steps {
                        timeout(time: 20, unit: 'MINUTES') {
                            pre_test()
                            script {
                                sh '''
T
tangfangzhi 已提交
188
                                    echo "arm64 build done"
T
tangfangzhi 已提交
189 190 191 192 193 194
                                    date
                                '''
                            }
                        }
                    }
                }
T
tangfangzhi 已提交
195
                stage ('build Mac') {
T
tangfangzhi 已提交
196 197 198 199 200 201
                    agent {label " Mac_catalina "}
                    steps {
                        timeout(time: 20, unit: 'MINUTES') {
                            pre_test_mac()
                            script {
                                sh '''
T
tangfangzhi 已提交
202
                                    echo "Mac build done"
T
tangfangzhi 已提交
203 204 205 206 207 208 209
                                    date
                                '''
                            }
                        }
                    }
                }
                stage('run cases') {
T
tangfangzhi 已提交
210
                    agent {label " worker01 || worker02 "}
T
tangfangzhi 已提交
211 212 213
                    steps {
                        sh '''
                            date
T
tangfangzhi 已提交
214
                            pwd
T
tangfangzhi 已提交
215 216
                            hostname
                        '''
T
tangfangzhi 已提交
217 218 219 220 221 222 223 224 225
                        timeout(time: 15, unit: 'MINUTES') {
                            pre_test()
                            script {
                                sh '''
                                    echo "Linux build done"
                                    date
                                '''
                            }
                        }
T
tangfangzhi 已提交
226
                        catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
T
tangfangzhi 已提交
227
                            timeout(time: 25, unit: 'MINUTES') {
T
tangfangzhi 已提交
228 229 230
                                sh '''
                                    date
                                    cd ${WKC}/tests/parallel_test
T
tangfangzhi 已提交
231
                                    time ./run.sh -m /home/m.json -t cases.task -l ${LOGDIR} -b ${BRANCH_NAME}
T
tangfangzhi 已提交
232 233 234 235
                                    date
                                    hostname
                                '''
                            }
T
tangfangzhi 已提交
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 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
                }
            }    
        }
    }
    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"
            )
        }
    }
}