mirror of
https://gitee.com/milvus-io/milvus.git
synced 2024-11-30 10:59:32 +08:00
6d27cc91bb
Former-commit-id: ae02d3236cc34ce89f5e2a453e2c027c1562fc98
366 lines
14 KiB
Plaintext
366 lines
14 KiB
Plaintext
pipeline {
|
|
agent none
|
|
|
|
options {
|
|
timestamps()
|
|
}
|
|
|
|
environment {
|
|
PROJECT_NAME = "milvus"
|
|
LOWER_BUILD_TYPE = BUILD_TYPE.toLowerCase()
|
|
SEMVER = "${env.gitlabSourceBranch == null ? params.ENGINE_BRANCH.substring(params.ENGINE_BRANCH.lastIndexOf('/') + 1) : env.gitlabSourceBranch}"
|
|
GITLAB_AFTER_COMMIT = "${env.gitlabAfter == null ? null : env.gitlabAfter}"
|
|
SUFFIX_VERSION_NAME = "${env.gitlabAfter == null ? null : env.gitlabAfter.substring(0, 6)}"
|
|
DOCKER_VERSION_STR = "${env.gitlabAfter == null ? "${SEMVER}-${LOWER_BUILD_TYPE}" : "${SEMVER}-${LOWER_BUILD_TYPE}-${SUFFIX_VERSION_NAME}"}"
|
|
}
|
|
|
|
stages {
|
|
stage("Ubuntu 16.04") {
|
|
environment {
|
|
PACKAGE_VERSION = VersionNumber([
|
|
versionNumberString : '${SEMVER}-${LOWER_BUILD_TYPE}-${BUILD_DATE_FORMATTED, "yyyyMMdd"}'
|
|
]);
|
|
|
|
DOCKER_VERSION = VersionNumber([
|
|
versionNumberString : '${DOCKER_VERSION_STR}'
|
|
]);
|
|
}
|
|
|
|
stages {
|
|
stage("Run Build") {
|
|
agent {
|
|
kubernetes {
|
|
cloud 'build-kubernetes'
|
|
label 'build'
|
|
defaultContainer 'jnlp'
|
|
containerTemplate {
|
|
name 'milvus-build-env'
|
|
image 'registry.zilliz.com/milvus/milvus-build-env:v0.12'
|
|
ttyEnabled true
|
|
command 'cat'
|
|
}
|
|
}
|
|
}
|
|
stages {
|
|
stage('Build') {
|
|
steps {
|
|
gitlabCommitStatus(name: 'Build') {
|
|
script {
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/milvus_build_no_ut.groovy"
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/packaged_milvus_no_ut.groovy"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
aborted {
|
|
script {
|
|
updateGitlabCommitStatus name: 'Build', state: 'canceled'
|
|
echo "Milvus Build aborted !"
|
|
}
|
|
}
|
|
|
|
failure {
|
|
script {
|
|
updateGitlabCommitStatus name: 'Build', state: 'failed'
|
|
echo "Milvus Build failure !"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage("Publish docker and helm") {
|
|
agent {
|
|
kubernetes {
|
|
label 'publish'
|
|
defaultContainer 'jnlp'
|
|
yaml """
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
labels:
|
|
app: publish
|
|
componet: docker
|
|
spec:
|
|
containers:
|
|
- name: publish-docker
|
|
image: registry.zilliz.com/library/zilliz_docker:v1.0.0
|
|
securityContext:
|
|
privileged: true
|
|
command:
|
|
- cat
|
|
tty: true
|
|
volumeMounts:
|
|
- name: docker-sock
|
|
mountPath: /var/run/docker.sock
|
|
volumes:
|
|
- name: docker-sock
|
|
hostPath:
|
|
path: /var/run/docker.sock
|
|
"""
|
|
}
|
|
}
|
|
stages {
|
|
stage('Publish Docker') {
|
|
steps {
|
|
gitlabCommitStatus(name: 'Publish Docker') {
|
|
script {
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/publish_docker.groovy"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
aborted {
|
|
script {
|
|
updateGitlabCommitStatus name: 'Publish Docker', state: 'canceled'
|
|
echo "Milvus Publish Docker aborted !"
|
|
}
|
|
}
|
|
|
|
failure {
|
|
script {
|
|
updateGitlabCommitStatus name: 'Publish Docker', state: 'failed'
|
|
echo "Milvus Publish Docker failure !"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage("Deploy to Development") {
|
|
parallel {
|
|
stage("Single Node") {
|
|
agent {
|
|
kubernetes {
|
|
label 'dev-test'
|
|
defaultContainer 'jnlp'
|
|
yaml """
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
labels:
|
|
app: milvus
|
|
componet: test
|
|
spec:
|
|
containers:
|
|
- name: milvus-testframework
|
|
image: registry.zilliz.com/milvus/milvus-test:v0.2
|
|
command:
|
|
- cat
|
|
tty: true
|
|
volumeMounts:
|
|
- name: kubeconf
|
|
mountPath: /root/.kube/
|
|
readOnly: true
|
|
volumes:
|
|
- name: kubeconf
|
|
secret:
|
|
secretName: test-cluster-config
|
|
"""
|
|
}
|
|
}
|
|
|
|
stages {
|
|
stage("Deploy to Dev") {
|
|
steps {
|
|
gitlabCommitStatus(name: 'Deloy to Dev') {
|
|
container('milvus-testframework') {
|
|
script {
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/deploy2dev.groovy"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage("Dev Test") {
|
|
steps {
|
|
gitlabCommitStatus(name: 'Deloy Test') {
|
|
container('milvus-testframework') {
|
|
script {
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/dev_test.groovy"
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/upload_dev_test_out.groovy"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Cleanup Dev") {
|
|
steps {
|
|
gitlabCommitStatus(name: 'Cleanup Dev') {
|
|
container('milvus-testframework') {
|
|
script {
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/cleanup_dev.groovy"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
always {
|
|
container('milvus-testframework') {
|
|
script {
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/cleanup_dev.groovy"
|
|
}
|
|
}
|
|
}
|
|
success {
|
|
script {
|
|
echo "Milvus Single Node CI/CD success !"
|
|
}
|
|
}
|
|
aborted {
|
|
script {
|
|
echo "Milvus Single Node CI/CD aborted !"
|
|
}
|
|
}
|
|
failure {
|
|
script {
|
|
echo "Milvus Single Node CI/CD failure !"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage("Cluster") {
|
|
agent {
|
|
kubernetes {
|
|
label 'dev-test'
|
|
defaultContainer 'jnlp'
|
|
yaml """
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
labels:
|
|
app: milvus
|
|
componet: test
|
|
spec:
|
|
containers:
|
|
- name: milvus-testframework
|
|
image: registry.zilliz.com/milvus/milvus-test:v0.2
|
|
command:
|
|
- cat
|
|
tty: true
|
|
volumeMounts:
|
|
- name: kubeconf
|
|
mountPath: /root/.kube/
|
|
readOnly: true
|
|
volumes:
|
|
- name: kubeconf
|
|
secret:
|
|
secretName: test-cluster-config
|
|
"""
|
|
}
|
|
}
|
|
stages {
|
|
stage("Deploy to Dev") {
|
|
steps {
|
|
gitlabCommitStatus(name: 'Deloy to Dev') {
|
|
container('milvus-testframework') {
|
|
script {
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/cluster_deploy2dev.groovy"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage("Dev Test") {
|
|
steps {
|
|
gitlabCommitStatus(name: 'Deloy Test') {
|
|
container('milvus-testframework') {
|
|
script {
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/cluster_dev_test.groovy"
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/upload_dev_cluster_test_out.groovy"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ("Cleanup Dev") {
|
|
steps {
|
|
gitlabCommitStatus(name: 'Cleanup Dev') {
|
|
container('milvus-testframework') {
|
|
script {
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/cluster_cleanup_dev.groovy"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
always {
|
|
container('milvus-testframework') {
|
|
script {
|
|
load "${env.WORKSPACE}/ci/jenkinsfile/cluster_cleanup_dev.groovy"
|
|
}
|
|
}
|
|
}
|
|
success {
|
|
script {
|
|
echo "Milvus Cluster CI/CD success !"
|
|
}
|
|
}
|
|
aborted {
|
|
script {
|
|
echo "Milvus Cluster CI/CD aborted !"
|
|
}
|
|
}
|
|
failure {
|
|
script {
|
|
echo "Milvus Cluster CI/CD failure !"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
always {
|
|
script {
|
|
if (env.gitlabAfter != null) {
|
|
if (!currentBuild.resultIsBetterOrEqualTo('SUCCESS')) {
|
|
// Send an email only if the build status has changed from green/unstable to red
|
|
emailext subject: '$DEFAULT_SUBJECT',
|
|
body: '$DEFAULT_CONTENT',
|
|
recipientProviders: [
|
|
[$class: 'DevelopersRecipientProvider'],
|
|
[$class: 'RequesterRecipientProvider']
|
|
],
|
|
replyTo: '$DEFAULT_REPLYTO',
|
|
to: '$DEFAULT_RECIPIENTS'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
success {
|
|
script {
|
|
updateGitlabCommitStatus name: 'CI/CD', state: 'success'
|
|
echo "Milvus CI/CD success !"
|
|
}
|
|
}
|
|
|
|
aborted {
|
|
script {
|
|
updateGitlabCommitStatus name: 'CI/CD', state: 'canceled'
|
|
echo "Milvus CI/CD aborted !"
|
|
}
|
|
}
|
|
|
|
failure {
|
|
script {
|
|
updateGitlabCommitStatus name: 'CI/CD', state: 'failed'
|
|
echo "Milvus CI/CD failure !"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|