Skip to content

Commit d0610cf

Browse files
committed
enhance: build milvus via tekton
Signed-off-by: Liang Huang <[email protected]>
1 parent b460862 commit d0610cf

File tree

4 files changed

+397
-0
lines changed

4 files changed

+397
-0
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
def name = ''
2+
3+
pipeline {
4+
options {
5+
skipDefaultCheckout true
6+
}
7+
agent {
8+
kubernetes {
9+
cloud '4am'
10+
yaml '''
11+
spec:
12+
securityContext:
13+
runAsUser: 1000 # default UID of jenkins user in agent image
14+
containers:
15+
- name: kubectl
16+
image: bitnami/kubectl:1.27.14
17+
command:
18+
- cat
19+
tty: true
20+
- name: tkn
21+
image: milvusdb/krte:tkn-0.37.0
22+
command:
23+
- cat
24+
tty: true
25+
'''
26+
}
27+
}
28+
stages {
29+
stage('build') {
30+
steps {
31+
container('kubectl') {
32+
script {
33+
name = run_tekton_pipeline 'revision': "$env.BRANCH_NAME", 'arch':'arm64'
34+
}
35+
}
36+
37+
container('tkn') {
38+
script {
39+
sh """
40+
tkn pipelinerun logs ${name} -f -n milvus-ci
41+
tkn pipelinerun describe ${name} -n milvus-ci
42+
"""
43+
}
44+
}
45+
}
46+
}
47+
}
48+
}
49+
50+
51+
52+
53+
54+
def run_tekton_pipeline(Map args) {
55+
def input = """
56+
cat << EOF | kubectl create -f -
57+
apiVersion: tekton.dev/v1
58+
kind: PipelineRun
59+
metadata:
60+
generateName: milvus-build-
61+
namespace: milvus-ci
62+
spec:
63+
pipelineRef:
64+
name: milvus-clone-build-push
65+
taskRunTemplate:
66+
serviceAccountName: robot-tekton
67+
podTemplate:
68+
tolerations:
69+
- key: "node-role.kubernetes.io/arm"
70+
operator: "Exists"
71+
effect: "NoSchedule"
72+
nodeSelector:
73+
"kubernetes.io/arch": "arm64"
74+
# hostNetwork: true
75+
securityContext:
76+
fsGroup: 65532
77+
workspaces:
78+
- name: shared-data
79+
volumeClaimTemplate:
80+
spec:
81+
storageClassName: local-path
82+
accessModes:
83+
- ReadWriteOnce
84+
resources:
85+
requests:
86+
storage: 100Gi
87+
params:
88+
- name: revision
89+
value: ${args.revision}
90+
- name: arch
91+
value: ${args.arch}
92+
EOF
93+
"""
94+
95+
println input
96+
97+
def ret = sh( label: "tekton pipeline run", script: input, returnStdout: true)
98+
99+
name = ret.split('/')[1].split(' ')[0]
100+
return name
101+
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
def name = ''
2+
3+
pipeline {
4+
options {
5+
skipDefaultCheckout true
6+
}
7+
agent {
8+
kubernetes {
9+
cloud '4am'
10+
yaml '''
11+
spec:
12+
securityContext:
13+
runAsUser: 1000 # default UID of jenkins user in agent image
14+
containers:
15+
- name: kubectl
16+
image: bitnami/kubectl:1.27.14
17+
command:
18+
- cat
19+
tty: true
20+
- name: tkn
21+
image: milvusdb/krte:tkn-0.37.0
22+
command:
23+
- cat
24+
tty: true
25+
'''
26+
}
27+
}
28+
stages {
29+
stage('build') {
30+
steps {
31+
container('kubectl') {
32+
script {
33+
name = run_tekton_pipeline 'revision': "$env.BRANCH_NAME", 'arch':'arm64', 'computing_engine':'gpu', 'milvus_env_os_name':'ubuntu22.04'
34+
}
35+
}
36+
37+
container('tkn') {
38+
script {
39+
sh """
40+
tkn pipelinerun logs ${name} -f -n milvus-ci
41+
tkn pipelinerun describe ${name} -n milvus-ci
42+
"""
43+
}
44+
}
45+
}
46+
}
47+
}
48+
}
49+
50+
51+
52+
53+
54+
def run_tekton_pipeline(Map args) {
55+
def input = """
56+
cat << EOF | kubectl create -f -
57+
apiVersion: tekton.dev/v1
58+
kind: PipelineRun
59+
metadata:
60+
generateName: milvus-build-
61+
namespace: milvus-ci
62+
spec:
63+
pipelineRef:
64+
name: milvus-clone-build-push
65+
taskRunTemplate:
66+
serviceAccountName: robot-tekton
67+
podTemplate:
68+
tolerations:
69+
- key: "node-role.kubernetes.io/arm"
70+
operator: "Exists"
71+
effect: "NoSchedule"
72+
nodeSelector:
73+
"kubernetes.io/arch": "arm64"
74+
# hostNetwork: true
75+
securityContext:
76+
fsGroup: 65532
77+
workspaces:
78+
- name: shared-data
79+
volumeClaimTemplate:
80+
spec:
81+
storageClassName: local-path
82+
accessModes:
83+
- ReadWriteOnce
84+
resources:
85+
requests:
86+
storage: 100Gi
87+
params:
88+
- name: revision
89+
value: ${args.revision}
90+
- name: arch
91+
value: ${args.arch}
92+
- name: computing_engine
93+
value: ${args.computing_engine}
94+
- name: milvus_env_os_name
95+
value: ${args.milvus_env_os_name}
96+
EOF
97+
"""
98+
99+
println input
100+
101+
def ret = sh( label: "tekton pipeline run", script: input, returnStdout: true)
102+
103+
name = ret.split('/')[1].split(' ')[0]
104+
return name
105+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
def name = ''
2+
3+
pipeline {
4+
options {
5+
skipDefaultCheckout true
6+
}
7+
agent {
8+
kubernetes {
9+
yaml '''
10+
spec:
11+
securityContext:
12+
runAsUser: 1000 # default UID of jenkins user in agent image
13+
containers:
14+
- name: kubectl
15+
image: bitnami/kubectl:1.27.14
16+
command:
17+
- cat
18+
tty: true
19+
- name: tkn
20+
image: milvusdb/krte:tkn-0.37.0
21+
command:
22+
- cat
23+
tty: true
24+
'''
25+
}
26+
}
27+
stages {
28+
stage('build') {
29+
steps {
30+
container('kubectl') {
31+
script {
32+
name = run_tekton_pipeline 'revision': "$env.BRANCH_NAME", 'arch':'amd64'
33+
}
34+
}
35+
36+
container('tkn') {
37+
script {
38+
sh """
39+
tkn pipelinerun logs ${name} -f -n milvus-ci
40+
tkn pipelinerun describe ${name} -n milvus-ci
41+
"""
42+
}
43+
}
44+
}
45+
}
46+
}
47+
}
48+
49+
50+
51+
52+
53+
def run_tekton_pipeline(Map args) {
54+
def input = """
55+
cat << EOF | kubectl create -f -
56+
apiVersion: tekton.dev/v1
57+
kind: PipelineRun
58+
metadata:
59+
generateName: milvus-build-
60+
namespace: milvus-ci
61+
spec:
62+
pipelineRef:
63+
name: milvus-clone-build-push
64+
taskRunTemplate:
65+
serviceAccountName: robot-tekton
66+
podTemplate:
67+
# hostNetwork: true
68+
securityContext:
69+
fsGroup: 65532
70+
workspaces:
71+
- name: shared-data
72+
volumeClaimTemplate:
73+
spec:
74+
accessModes:
75+
- ReadWriteOnce
76+
resources:
77+
requests:
78+
storage: 100Gi
79+
params:
80+
- name: revision
81+
value: ${args.revision}
82+
- name: arch
83+
value: ${args.arch}
84+
EOF
85+
"""
86+
87+
println input
88+
89+
def ret = sh( label: "tekton pipeline run", script: input, returnStdout: true)
90+
91+
name = ret.split('/')[1].split(' ')[0]
92+
return name
93+
}

0 commit comments

Comments
 (0)