Skip to content

Commit e173295

Browse files
committed
Add Jenkins file
1 parent 2e025b2 commit e173295

File tree

3 files changed

+97
-4
lines changed

3 files changed

+97
-4
lines changed

mse-simple-demo/A/A-deployment.yaml

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ kind: Deployment
33
metadata:
44
name: spring-cloud-a
55
spec:
6+
replicas: 2
67
selector:
78
matchLabels:
89
app: spring-cloud-a
@@ -17,8 +18,8 @@ spec:
1718
- env:
1819
- name: JAVA_HOME
1920
value: /usr/lib/jvm/java-1.8-openjdk/jre
20-
image: registry-vpc.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-a:1.0.0
21+
image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-a:1.0.0
2122
imagePullPolicy: Always
2223
name: spring-cloud-a
2324
ports:
24-
- containerPort: 20001
25+
- containerPort: 20001

mse-simple-demo/A/A-gray-deployment.yaml

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ kind: Deployment
33
metadata:
44
name: spring-cloud-a-gray
55
spec:
6+
replicas: 2
67
selector:
78
matchLabels:
89
app: spring-cloud-a-gray
@@ -18,8 +19,8 @@ spec:
1819
- env:
1920
- name: JAVA_HOME
2021
value: /usr/lib/jvm/java-1.8-openjdk/jre
21-
image: registry-vpc.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-a:1.0.0
22+
image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-a:1.0.0
2223
imagePullPolicy: Always
2324
name: spring-cloud-a-gray
2425
ports:
25-
- containerPort: 20001
26+
- containerPort: 20001

mse-simple-demo/Jenkinsfile

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
#!groovy
2+
pipeline {
3+
4+
// 定义本次构建使用哪个标签的构建环境,本示例中为 “slave-pipeline”
5+
agent{
6+
node{
7+
label 'slave-pipeline'
8+
}
9+
}
10+
11+
//常量参数,初始确定后一般不需更改
12+
environment{
13+
IMAGE = sh(returnStdout: true,script: 'echo registry.$image_region.aliyuncs.com/$image_namespace/$image_reponame:$image_tag').trim()
14+
BRANCH = sh(returnStdout: true,script: 'echo $branch').trim()
15+
}
16+
options {
17+
//保持构建的最大个数
18+
buildDiscarder(logRotator(numToKeepStr: '10'))
19+
}
20+
21+
parameters {
22+
string(name: 'image_region', defaultValue: 'cn-shanghai')
23+
string(name: 'image_namespace', defaultValue: 'yizhan')
24+
string(name: 'image_reponame', defaultValue: 'spring-cloud-a')
25+
string(name: 'image_tag', defaultValue: 'gray')
26+
string(name: 'branch', defaultValue: 'master')
27+
string(name: 'number_of_pods', defaultValue: '2')
28+
}
29+
30+
//pipeline的各个阶段场景
31+
stages {
32+
33+
stage('代码打包') {
34+
steps{
35+
container("maven") {
36+
echo "镜像构建......"
37+
sh "cd A && mvn clean package"
38+
}
39+
40+
}
41+
}
42+
43+
44+
stage('镜像构建及发布'){
45+
steps{
46+
container("kaniko") {
47+
sh "kaniko -f `pwd`/A/Dockerfile -c `pwd`/A --destination=${IMAGE} --skip-tls-verify"
48+
}
49+
}
50+
}
51+
52+
stage('灰度部署') {
53+
steps{
54+
container('kubectl') {
55+
echo "灰度部署......"
56+
sh "cd A && sed -i -E \"s/${env.image_reponame}:.+/${env.image_reponame}:${env.image_tag}/\" A-gray-deployment.yaml"
57+
sh "cd A && sed -i -E \"s/replicas:.+/replicas: ${env.number_of_pods}/\" A-gray-deployment.yaml"
58+
sh "kubectl apply -f A/A-gray-deployment.yaml -n default"
59+
}
60+
}
61+
}
62+
63+
stage('结束灰度') {
64+
input {
65+
message "请确认是否全量发布"
66+
ok "确认"
67+
parameters {
68+
string(name: 'continue', defaultValue: 'true', description: 'true为全量发布,其他为回滚')
69+
}
70+
}
71+
steps{
72+
script {
73+
env.continue = sh (script: 'echo ${continue}', returnStdout: true).trim()
74+
if (env.continue.equals('true')) {
75+
container('kubectl') {
76+
echo "全量发布......"
77+
sh "cd A && sed -i -E \"s/${env.image_reponame}:.+/${env.image_reponame}:${env.image_tag}/\" A-deployment.yaml"
78+
sh "cd A && sed -i -E \"s/replicas:.+/replicas: ${env.number_of_pods}/\" A-deployment.yaml"
79+
sh "kubectl apply -f A/A-deployment.yaml -n default"
80+
}
81+
} else {
82+
echo '回滚'
83+
}
84+
container('kubectl') {
85+
sh "kubectl delete -f A/A-gray-deployment.yaml -n default"
86+
}
87+
}
88+
}
89+
}
90+
}
91+
}

0 commit comments

Comments
 (0)