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