Jenkinsfile 14.0 KB
Newer Older
1 2
#!/usr/bin/env groovy

M
milvus-ci-robot 已提交
3
String cron_timezone = "TZ=Asia/Shanghai"
M
milvus-ci-robot 已提交
4
String cron_string = BRANCH_NAME == "master" ? "H 0 * * * " : ""
Z
zhenwu 已提交
5
cron_string =  BRANCH_NAME == "0.6.0" ? "H 1 * * * " : cron_string
M
milvus-ci-robot 已提交
6

T
add ci  
test 已提交
7 8 9
pipeline {
    agent none

M
milvus-ci-robot 已提交
10
    triggers {
M
milvus-ci-robot 已提交
11 12
        cron """${cron_timezone}
            ${cron_string}"""
M
milvus-ci-robot 已提交
13
    }
14

T
add ci  
test 已提交
15 16 17 18 19 20
    options {
        timestamps()
    }

    parameters{
        choice choices: ['Release', 'Debug'], description: '', name: 'BUILD_TYPE'
M
milvus-ci-robot 已提交
21
        string defaultValue: 'registry.zilliz.com', description: 'DOCKER REGISTRY URL', name: 'DOKCER_REGISTRY_URL', trim: true
T
add ci  
test 已提交
22 23
        string defaultValue: 'ba070c98-c8cc-4f7c-b657-897715f359fc', description: 'DOCKER CREDENTIALS ID', name: 'DOCKER_CREDENTIALS_ID', trim: true
        string defaultValue: 'http://192.168.1.202/artifactory/milvus', description: 'JFROG ARTFACTORY URL', name: 'JFROG_ARTFACTORY_URL', trim: true
M
milvus-ci-robot 已提交
24
        string defaultValue: '1a527823-d2b7-44fd-834b-9844350baf14', description: 'JFROG CREDENTIALS ID', name: 'JFROG_CREDENTIALS_ID', trim: true
T
add ci  
test 已提交
25 26 27 28 29 30 31
    }

    environment {
        PROJECT_NAME = "milvus"
        LOWER_BUILD_TYPE = params.BUILD_TYPE.toLowerCase()
        SEMVER = "${BRANCH_NAME}"
        JOBNAMES = env.JOB_NAME.split('/')
32
        PIPELINE_NAME = "${JOBNAMES[0]}"
T
add ci  
test 已提交
33 34 35
    }

    stages {
36
        stage("Ubuntu 18.04 x86_64") {
T
add ci  
test 已提交
37
            environment {
T
test 已提交
38
                OS_NAME = "ubuntu18.04"
39
                CPU_ARCH = "amd64"
T
add ci  
test 已提交
40 41
            }

42
            parallel {
Q
quicksilver 已提交
43
                stage ("GPU Version") {
44
                    environment {
Q
quicksilver 已提交
45
                        BINRARY_VERSION = "gpu"
46
                        PACKAGE_VERSION = VersionNumber([
Q
quicksilver 已提交
47
                            versionNumberString : '${SEMVER}-gpu-${OS_NAME}-${CPU_ARCH}-${LOWER_BUILD_TYPE}-${BUILD_DATE_FORMATTED, "yyyyMMdd"}-${BUILDS_TODAY}'
48
                        ]);
Q
quicksilver 已提交
49
                        DOCKER_VERSION = "${SEMVER}-gpu-${OS_NAME}-${LOWER_BUILD_TYPE}"
T
add ci  
test 已提交
50 51 52
                    }

                    stages {
Q
quicksilver 已提交
53
                        stage("Run Build") {
54 55
                            agent {
                                kubernetes {
Q
quicksilver 已提交
56
                                    label "${BINRARY_VERSION}-build"
57
                                    defaultContainer 'jnlp'
Q
quicksilver 已提交
58
                                    yamlFile 'ci/jenkins/pod/milvus-gpu-version-build-env-pod.yaml'
59 60
                                }
                            }
61 62

                            stages {
Q
quicksilver 已提交
63
                                stage('Build') {
64 65 66 67 68 69 70 71
                                    steps {
                                        container('milvus-build-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/build.groovy"
                                            }
                                        }
                                    }
                                }
Q
quicksilver 已提交
72
                                stage('Code Coverage') {
73 74 75 76 77 78 79 80
                                    steps {
                                        container('milvus-build-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/coverage.groovy"
                                            }
                                        }
                                    }
                                }
Q
quicksilver 已提交
81
                                stage('Upload Package') {
82 83 84 85 86 87
                                    steps {
                                        container('milvus-build-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/package.groovy"
                                            }
                                        }
T
add ci  
test 已提交
88 89 90 91
                                    }
                                }
                            }
                        }
92

Q
quicksilver 已提交
93
                        stage("Publish docker images") {
94 95
                            agent {
                                kubernetes {
Q
quicksilver 已提交
96
                                    label "${BINRARY_VERSION}-publish"
97 98 99 100 101 102
                                    defaultContainer 'jnlp'
                                    yamlFile 'ci/jenkins/pod/docker-pod.yaml'
                                }
                            }

                            stages {
Q
quicksilver 已提交
103
                                stage('Publish') {
104 105 106 107 108 109
                                    steps {
                                        container('publish-images'){
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/publishImages.groovy"
                                            }
                                        }
T
add ci  
test 已提交
110 111 112 113 114
                                    }
                                }
                            }
                        }

Q
quicksilver 已提交
115
                        stage("Deploy to Development") {
116 117
                            agent {
                                kubernetes {
Q
quicksilver 已提交
118
                                    label "${BINRARY_VERSION}-dev-test"
119 120 121 122
                                    defaultContainer 'jnlp'
                                    yamlFile 'ci/jenkins/pod/testEnvironment.yaml'
                                }
                            }
T
add ci  
test 已提交
123

124
                            stages {
Q
quicksilver 已提交
125
                                stage("Deploy to Dev") {
126 127 128 129 130 131 132 133 134
                                    steps {
                                        container('milvus-test-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/deploySingle2Dev.groovy"
                                            }
                                        }
                                    }
                                }

Q
quicksilver 已提交
135
                                stage("Dev Test") {
136 137 138 139 140 141 142 143 144 145 146 147 148 149
                                    steps {
                                        container('milvus-test-env') {
                                            script {
                                                boolean isNightlyTest = isTimeTriggeredBuild()
                                                if (isNightlyTest) {
                                                    load "${env.WORKSPACE}/ci/jenkins/step/singleDevNightlyTest.groovy"
                                                } else {
                                                    load "${env.WORKSPACE}/ci/jenkins/step/singleDevTest.groovy"
                                                }
                                            }
                                        }
                                    }
                                }

Q
quicksilver 已提交
150
                                stage ("Cleanup Dev") {
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
                                    steps {
                                        container('milvus-test-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/cleanupSingleDev.groovy"
                                            }
                                        }
                                    }
                                }
                            }
                            post {
                                unsuccessful {
                                    container('milvus-test-env') {
                                        script {
                                            load "${env.WORKSPACE}/ci/jenkins/step/cleanupSingleDev.groovy"
                                        }
T
add ci  
test 已提交
166 167 168 169 170 171 172
                                    }
                                }
                            }
                        }
                    }
                }

Q
quicksilver 已提交
173
                stage ("CPU Version") {
174
                    environment {
Q
quicksilver 已提交
175
                        BINRARY_VERSION = "cpu"
176
                        PACKAGE_VERSION = VersionNumber([
Q
quicksilver 已提交
177
                            versionNumberString : '${SEMVER}-cpu-${OS_NAME}-${CPU_ARCH}-${LOWER_BUILD_TYPE}-${BUILD_DATE_FORMATTED, "yyyyMMdd"}-${BUILDS_TODAY}'
178
                        ]);
Q
quicksilver 已提交
179
                        DOCKER_VERSION = "${SEMVER}-cpu-${OS_NAME}-${LOWER_BUILD_TYPE}"
T
add ci  
test 已提交
180 181 182
                    }

                    stages {
Q
quicksilver 已提交
183
                        stage("Run Build") {
184 185
                            agent {
                                kubernetes {
Q
quicksilver 已提交
186
                                    label "${BINRARY_VERSION}-build"
187
                                    defaultContainer 'jnlp'
Q
quicksilver 已提交
188
                                    yamlFile 'ci/jenkins/pod/milvus-cpu-version-build-env-pod.yaml'
189 190 191 192
                                }
                            }

                            stages {
Q
quicksilver 已提交
193
                                stage('Build') {
194 195 196 197 198 199 200 201
                                    steps {
                                        container('milvus-build-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/build.groovy"
                                            }
                                        }
                                    }
                                }
Q
quicksilver 已提交
202
                                stage('Code Coverage') {
203 204 205 206 207 208 209 210
                                    steps {
                                        container('milvus-build-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/coverage.groovy"
                                            }
                                        }
                                    }
                                }
Q
quicksilver 已提交
211
                                stage('Upload Package') {
212 213 214 215 216 217
                                    steps {
                                        container('milvus-build-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/package.groovy"
                                            }
                                        }
T
add ci  
test 已提交
218 219 220 221 222
                                    }
                                }
                            }
                        }

Q
quicksilver 已提交
223
                        stage("Publish docker images") {
224 225
                            agent {
                                kubernetes {
Q
quicksilver 已提交
226
                                    label "${BINRARY_VERSION}-publish"
227 228 229 230 231 232
                                    defaultContainer 'jnlp'
                                    yamlFile 'ci/jenkins/pod/docker-pod.yaml'
                                }
                            }

                            stages {
Q
quicksilver 已提交
233
                                stage('Publish') {
234 235 236 237 238
                                    steps {
                                        container('publish-images'){
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/publishImages.groovy"
                                            }
239
                                        }
T
add ci  
test 已提交
240 241 242 243 244
                                    }
                                }
                            }
                        }

Q
quicksilver 已提交
245
                        stage("Deploy to Development") {
246 247
                            agent {
                                kubernetes {
Q
quicksilver 已提交
248
                                    label "${BINRARY_VERSION}-dev-test"
249 250 251 252 253 254
                                    defaultContainer 'jnlp'
                                    yamlFile 'ci/jenkins/pod/testEnvironment.yaml'
                                }
                            }

                            stages {
Q
quicksilver 已提交
255
                                stage("Deploy to Dev") {
256 257 258 259 260 261 262 263 264
                                    steps {
                                        container('milvus-test-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/deploySingle2Dev.groovy"
                                            }
                                        }
                                    }
                                }

Q
quicksilver 已提交
265
                                stage("Dev Test") {
266 267 268 269 270 271 272 273 274 275 276 277 278 279
                                    steps {
                                        container('milvus-test-env') {
                                            script {
                                                boolean isNightlyTest = isTimeTriggeredBuild()
                                                if (isNightlyTest) {
                                                    load "${env.WORKSPACE}/ci/jenkins/step/singleDevNightlyTest.groovy"
                                                } else {
                                                    load "${env.WORKSPACE}/ci/jenkins/step/singleDevTest.groovy"
                                                }
                                            }
                                        }
                                    }
                                }

Q
quicksilver 已提交
280
                                stage ("Cleanup Dev") {
281 282 283 284 285 286
                                    steps {
                                        container('milvus-test-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/cleanupSingleDev.groovy"
                                            }
                                        }
T
add ci  
test 已提交
287 288 289
                                    }
                                }
                            }
290 291 292 293 294 295 296
                            post {
                                unsuccessful {
                                    container('milvus-test-env') {
                                        script {
                                            load "${env.WORKSPACE}/ci/jenkins/step/cleanupSingleDev.groovy"
                                        }
                                    }
T
add ci  
test 已提交
297 298 299 300 301 302 303 304 305 306
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

307
boolean isTimeTriggeredBuild() {
308 309
    if (currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause').size() != 0) {
        return true
310 311 312
    }
    return false
}