Jenkins-Springboot-2.0-bkg
Showing
1 changed file
with
158 additions
and
0 deletions
Jenkins-Springboot-2.0-bkg
0 → 100644
1 | pipeline { | ||
2 | agent any | ||
3 | |||
4 | parameters { | ||
5 | choice( | ||
6 | description: '你需要选择哪个环境部署?', | ||
7 | name: 'deploy_env', | ||
8 | choices: ['release-test', 'release-integration', 'pre-release', 'production', 'springboot-qzc'] | ||
9 | ) | ||
10 | } | ||
11 | //环境定义 | ||
12 | environment { | ||
13 | //日志映射路径 | ||
14 | LOG_PATH = "/mnt/log/" | ||
15 | //服务名称 | ||
16 | SVN_FOLD = readMavenPom().getArtifactId() | ||
17 | SSH_PATH = "csbr5.4" | ||
18 | //镜像版本号 | ||
19 | image_tag = readMavenPom().getVersion() | ||
20 | //docker私服ip | ||
21 | ip = "192.168.5.4:82" | ||
22 | PROJECT_NAME = "${JOB_NAME.substring(0,JOB_NAME.lastIndexOf('/'))}" | ||
23 | PROMETHEUS_PARAMS_STRING = "-javaagent:/jmx_prometheus_javaagent-0.17.0.jar=8088:/jmx/prometheus-jmx-config.yaml" | ||
24 | } | ||
25 | options { | ||
26 | // 设置保留的最大历史构建数为6 | ||
27 | buildDiscarder(logRotator(numToKeepStr: '2')) | ||
28 | } | ||
29 | //全局定义工具 | ||
30 | tools { | ||
31 | //工具名称必须在Jenkins 管理Jenkins → 全局工具配置中预配置。 | ||
32 | maven 'maven3' | ||
33 | } | ||
34 | stages { | ||
35 | stage('release-test') { | ||
36 | when { | ||
37 | expression { return params.deploy_env == 'release-test' } | ||
38 | } | ||
39 | steps { | ||
40 | script { | ||
41 | env.SVN_TYPE = "test" | ||
42 | } | ||
43 | } | ||
44 | } | ||
45 | stage('release-integration') { | ||
46 | when { | ||
47 | expression { return params.deploy_env == 'release-integration' } | ||
48 | } | ||
49 | steps { | ||
50 | script { | ||
51 | env.SVN_TYPE = "pre-test" | ||
52 | } | ||
53 | } | ||
54 | } | ||
55 | stage('pre-release') { | ||
56 | when { | ||
57 | expression { return params.deploy_env == 'pre-release' } | ||
58 | } | ||
59 | steps { | ||
60 | script { | ||
61 | env.SVN_TYPE = "pre-release" | ||
62 | env.PROMETHEUS_PARAMS = "${PROMETHEUS_PARAMS_STRING}" | ||
63 | } | ||
64 | } | ||
65 | } | ||
66 | stage('production') { | ||
67 | when { | ||
68 | expression { return params.deploy_env == 'production' } | ||
69 | } | ||
70 | steps { | ||
71 | script { | ||
72 | env.SVN_TYPE = "temp" | ||
73 | env.PROMETHEUS_PARAMS = "${PROMETHEUS_PARAMS_STRING}" | ||
74 | } | ||
75 | } | ||
76 | } | ||
77 | stage('springboot-qzc') { | ||
78 | when { | ||
79 | expression { return params.deploy_env == 'springboot-qzc' } | ||
80 | } | ||
81 | steps { | ||
82 | script { | ||
83 | env.SVN_TYPE = "qzc" | ||
84 | } | ||
85 | } | ||
86 | } | ||
87 | //构建 | ||
88 | stage('Maven Build') { | ||
89 | steps { | ||
90 | //sh './gradlew build' | ||
91 | //执行shell命令 | ||
92 | sh 'echo ${JAVA_HOMOE}' | ||
93 | sh "mvn -f ./pom.xml clean package -Dmaven.test.skip=true -X -P${params.deploy_env}" | ||
94 | //sh 'mvn -f ${SVN_FOLD}/pom.xml clean package' | ||
95 | } | ||
96 | } | ||
97 | stage('Docker Build') { | ||
98 | steps { | ||
99 | //分分支构建 | ||
100 | script { | ||
101 | |||
102 | //develop分支环境 | ||
103 | echo 'start to deploy ${SVN_FOLD} on ${params.deploy_env} ...' | ||
104 | sh ''' | ||
105 | CID=$(docker ps -a | grep "${SVN_FOLD}" | awk '{print $1}') | ||
106 | IID=$(docker images | grep "none" | awk '{print $3}') | ||
107 | cp "$WORKSPACE"/target/"${SVN_FOLD}".jar "$WORKSPACE" | ||
108 | if [ -n "$IID" ]; then | ||
109 | echo "存在'${SVN_FOLD}'镜像,IID='$IID'" | ||
110 | cd "$WORKSPACE" | ||
111 | ##构建镜像到远程仓库 | ||
112 | docker login "${ip}" -u admin -p E6w611g864wQ2 | ||
113 | docker build -t "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}" . --build-arg CE="${SVN_TYPE}" --build-arg PROMETHEUS_PARAMS="${PROMETHEUS_PARAMS}" | ||
114 | docker push "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}" | ||
115 | else | ||
116 | echo "不存在'${SVN_FOLD}'镜像,开始构建镜像" | ||
117 | ##构建镜像到远程仓库 | ||
118 | docker login "${ip}" -u admin -p E6w611g864wQ2 | ||
119 | docker build -t "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}" . --build-arg CE="${SVN_TYPE}" --build-arg PROMETHEUS_PARAMS="${PROMETHEUS_PARAMS}" | ||
120 | docker push "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}" | ||
121 | fi | ||
122 | ''' | ||
123 | echo 'Depoly ${SVN_FOLD} develop success ...' | ||
124 | } | ||
125 | } | ||
126 | |||
127 | } | ||
128 | //部署 | ||
129 | stage('Deploy') { | ||
130 | steps { | ||
131 | echo 'Deploying' | ||
132 | //分分支部署 | ||
133 | script { | ||
134 | |||
135 | //develop分支环境 | ||
136 | echo 'start to deploy ${SVN_FOLD} on ${params.deploy_env} ...' | ||
137 | //调用Publish Over SSH插件,上传docker-compose.yaml文件并且执行deploy脚本 | ||
138 | sshPublisher(publishers: [sshPublisherDesc(configName: "csbr5.3", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: """ | ||
139 | echo "日志路径 '$LOG_PATH''$SVN_FOLD'" | ||
140 | #使用k8s构建 | ||
141 | kubectl delete -f /mnt/k8s/${params.deploy_env}/${SVN_FOLD}.yaml | ||
142 | kubectl apply -f /mnt/k8s/${params.deploy_env}/${SVN_FOLD}.yaml | ||
143 | """, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/mnt/csbr/data', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'output/*.*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) | ||
144 | echo 'Depoly ${SVN_FOLD} success ...' | ||
145 | |||
146 | } | ||
147 | //sh './build.sh' | ||
148 | } | ||
149 | } | ||
150 | } | ||
151 | //归档 | ||
152 | post { | ||
153 | always { | ||
154 | echo 'Archive artifacts' | ||
155 | archiveArtifacts artifacts: "**/target/*.jar", excludes: "**/target" | ||
156 | } | ||
157 | } | ||
158 | } | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or sign in to post a comment