Jenkinsfile 15.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
    options {
        timestamps()
    }

    parameters{
Q
quicksilver 已提交
20
        choice choices: ['Release', 'Debug'], description: 'Build Type', 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
    }

    environment {
        PROJECT_NAME = "milvus"
        LOWER_BUILD_TYPE = params.BUILD_TYPE.toLowerCase()
Q
quicksilver 已提交
30 31
        SEMVER = "${BRANCH_NAME.contains('/') ? BRANCH_NAME.substring(BRANCH_NAME.lastIndexOf('/') + 1) : BRANCH_NAME}"
        PIPELINE_NAME = "${env.JOB_NAME.contains('/') ? env.JOB_NAME.getAt(0..(env.JOB_NAME.indexOf('/') - 1)) : env.JOB_NAME}"
T
add ci  
test 已提交
32 33 34
    }

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

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

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

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

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

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

Q
quicksilver 已提交
114
                        stage("Deploy to Development") {
Q
quicksilver 已提交
115
                            environment {
Q
quicksilver 已提交
116
                                FROMAT_SEMVER = "${env.SEMVER}".replaceAll("\\.", "-")
Q
quicksilver 已提交
117
                                HELM_RELEASE_NAME = "${env.PIPELINE_NAME}-${env.FROMAT_SEMVER}-${env.BUILD_NUMBER}-single-${env.BINRARY_VERSION}".toLowerCase()
Q
quicksilver 已提交
118 119
                            }

120 121
                            agent {
                                kubernetes {
Q
quicksilver 已提交
122
                                    label "${env.BINRARY_VERSION}-dev-test"
123 124 125 126
                                    defaultContainer 'jnlp'
                                    yamlFile 'ci/jenkins/pod/testEnvironment.yaml'
                                }
                            }
T
add ci  
test 已提交
127

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

Q
quicksilver 已提交
139
                                stage("Dev Test") {
140 141 142 143 144 145 146 147 148 149 150 151 152 153
                                    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 已提交
154
                                stage ("Cleanup Dev") {
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
                                    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 已提交
170 171 172 173 174 175 176
                                    }
                                }
                            }
                        }
                    }
                }

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

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

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

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

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

Q
quicksilver 已提交
249
                        stage("Deploy to Development") {
Q
quicksilver 已提交
250
                            environment {
Q
quicksilver 已提交
251
                                FROMAT_SEMVER = "${env.SEMVER}".replaceAll("\\.", "-")
Q
quicksilver 已提交
252
                                HELM_RELEASE_NAME = "${env.PIPELINE_NAME}-${env.FROMAT_SEMVER}-${env.BUILD_NUMBER}-single-${env.BINRARY_VERSION}".toLowerCase()
Q
quicksilver 已提交
253 254
                            }

255 256
                            agent {
                                kubernetes {
Q
quicksilver 已提交
257
                                    label "${env.BINRARY_VERSION}-dev-test"
258 259 260 261 262 263
                                    defaultContainer 'jnlp'
                                    yamlFile 'ci/jenkins/pod/testEnvironment.yaml'
                                }
                            }

                            stages {
Q
quicksilver 已提交
264
                                stage("Deploy to Dev") {
265 266 267 268 269 270 271 272 273
                                    steps {
                                        container('milvus-test-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/deploySingle2Dev.groovy"
                                            }
                                        }
                                    }
                                }

Q
quicksilver 已提交
274
                                stage("Dev Test") {
275 276 277 278 279 280 281 282 283 284 285 286 287 288
                                    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 已提交
289
                                stage ("Cleanup Dev") {
290 291 292 293 294 295
                                    steps {
                                        container('milvus-test-env') {
                                            script {
                                                load "${env.WORKSPACE}/ci/jenkins/step/cleanupSingleDev.groovy"
                                            }
                                        }
T
add ci  
test 已提交
296 297 298
                                    }
                                }
                            }
299 300 301 302 303 304 305
                            post {
                                unsuccessful {
                                    container('milvus-test-env') {
                                        script {
                                            load "${env.WORKSPACE}/ci/jenkins/step/cleanupSingleDev.groovy"
                                        }
                                    }
T
add ci  
test 已提交
306 307 308 309 310 311 312 313 314 315
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

316
boolean isTimeTriggeredBuild() {
317 318
    if (currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause').size() != 0) {
        return true
319 320 321
    }
    return false
}