Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大项目。Git是Linus Torvalds为帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git与常用的版本控制工具CVS、Subversion等不同,它采用分布式版本库的方式,不必服务器端软件支持。

0x0 什么是CI/CD?

什么是CI:Continuous Integration,也就是持续集成

什么是CD:Continuous Delivery 和 Continuous Deployment,也就是持续交付、持续部署

持续集成:就是开发提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,测试过程可以确定新代码和原有代码能否正确地集成在一起,如果测试过程有问题,那么将返回代码给开发部门

持续交付:在持续集成的基础上,将集成后的代码部署到更贴近于真实的生产环境中。在贴近真实的生成环境中,可以提高数据支撑,且进一步做测试,如果进一步测试没有问题,那么可以部署到线上的生成环境中

持续部署:是在持续交付的基础上,把部署到生产环境的过程自动化,实现部署无需人工参与,如何在部署的过程中出现问题,将立即回滚代码

0x1 企业案例基于Gitee/GitLab/Git代码仓库的自动化部署

1)主机规划

名称 主机规划 配置 安装软件 系统
GitLab 192.168.0.119 4C 8G GitLab-CE Centos7.6 1810
jenkins 192.168.0.113 4C 4G Jenkins Centos7.6 1810
web01 192.168.0.108 2C 4G Nginx Centos7.6 1810

image.png

2)设置用户组添加用户

Step 1 GitLab创建用户组

image.png

Step 2 添加成员

image.png

Step3 创建新用户

image.png

image.png

image.png

image.png

创建完毕用户修改完毕密码,把用户添加到用户组给与开发权限

Step4 添加到用户群组

image.png

image.png

image.png

添加完毕!

3)创建项目仓库

创建项目仓库

image.png

image.png

image.png

【注意】我们直接从Gitee上找一个开源项目拉下来测试

实际开发中就是自己项目组的项目https://gitee.com/kangjie1209/monitor.git

image.png

image.png

image.png

项目迁移完毕

4)设置分支保护

正常情况下,我们是不允许在master分支上修改内容的,我们只能创建新的分支修改,修改完成后进行合并,这里我们做分支保护的目的是为了让其他用户如dev用户在修改完代码内容之后,发起合并请求,root用户进行审核完成才能进行合并
1、无分支保护情况
我们首先登陆dev用户,要了解dev是开发用户,root是老大,老大一般做审核,拥有最高权限退出root用户.

image.png

dev用户第一登录的时候会被要求修改密码。修改密码后重新登录。

image.png

5)首先创建一个新的分支,在新分支上修改内容(重要内容)

注意这里是在新的分支上操作的。

image.png

创建新的Dev分支

已经到Dev分支进行操作

6)在创建的Dev分支上进行开发,比如 修改代码或添加新的代码(重要内容)

点击项目中的404.html文件,打开现在的编辑器

image.png

修改了404.html文件

7)现在开发完毕请求上线代码,也就是合并分支(重要内容)

Dev用户提交合并分支请求(受保护的分支只能root授权通过才可以)

image.png

image.png

root账号通过合并请求以后合并到主分支

8) 取消受保护的分支设置,Dev开发人员可以自己合并分支

如果发现开发人员不能合并分支(是项目已经受限,需要root用户授权合并,我们也可以设置项目的分支权限)

image.png

image.png

image.png

修改index.html

image.png

image.png

image.png

0x2 Jenkins实现自动部署

Step 1

【实例】从GitLab代码仓库拉取项目到服务器自动构建

创建新任务

创建一个自由风格的项目

image.png

image.png

插件安装在可选插件搜索过滤gitlab 然后勾选插件 Blue Ocean Pipeline Editor以及Ant Plugin 还有Build Timeout等插件

Step 2 源码管理将gitlab仓库和jenkins关联

Jenkins主机的SSH KEY复制到GitLab

image.png

image.png

image.png

Jenkins插件目录
[root@jenkins jenkins]# ll /var/lib/jenkins/plugins

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
[root@jenkins home]# ll /var/lib/jenkins/plugins
total 120424
drwxr-xr-x. 7 jenkins jenkins 124 Jan 20 06:30 ace-editor
-rw-r--r--. 1 jenkins jenkins 4279042 Jan 20 06:29 ace-editor.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 ant
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 antisamy-markup-formatter
-rw-r--r--. 1 jenkins jenkins 107210 Jan 20 06:29 antisamy-markup-formatter.jpi
-rw-r--r--. 1 jenkins jenkins 82963 Jan 20 06:29 ant.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 apache-httpcomponents-client-4-api
-rw-r--r--. 1 jenkins jenkins 1761975 Jan 20 06:30 apache-httpcomponents-client-4-api.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 authentication-tokens
-rw-r--r--. 1 jenkins jenkins 14638 Jan 20 06:30 authentication-tokens.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-autofavorite
-rw-r--r--. 1 root root 60849 Jan 20 09:23 blueocean-autofavorite.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-bitbucket-pipeline
-rw-r--r--. 1 root root 2449153 Jan 20 09:23 blueocean-bitbucket-pipeline.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-commons
-rw-r--r--. 1 root root 85384 Jan 20 09:23 blueocean-commons.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-config
-rw-r--r--. 1 root root 61305 Jan 20 09:23 blueocean-config.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-core-js
-rw-r--r--. 1 root root 1075851 Jan 20 09:23 blueocean-core-js.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-dashboard
-rw-r--r--. 1 root root 2744727 Jan 20 09:23 blueocean-dashboard.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-display-url
-rw-r--r--. 1 root root 648567 Jan 20 09:23 blueocean-display-url.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-events
-rw-r--r--. 1 root root 5171819 Jan 20 09:23 blueocean-events.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-github-pipeline
-rw-r--r--. 1 root root 116890 Jan 20 09:23 blueocean-github-pipeline.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-git-pipeline
-rw-r--r--. 1 root root 835954 Jan 20 09:23 blueocean-git-pipeline.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-i18n
-rw-r--r--. 1 root root 14963 Jan 20 09:23 blueocean-i18n.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-jira
-rw-r--r--. 1 root root 28715 Jan 20 09:23 blueocean-jira.jpi
-rw-r--r--. 1 root root 69904 Jan 20 09:23 blueocean.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-jwt
-rw-r--r--. 1 root root 777943 Jan 20 09:23 blueocean-jwt.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-personalization
-rw-r--r--. 1 root root 703909 Jan 20 09:23 blueocean-personalization.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-pipeline-api-impl
-rw-r--r--. 1 root root 238422 Jan 20 09:23 blueocean-pipeline-api-impl.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-pipeline-editor
-rw-r--r--. 1 root root 1641653 Jan 20 09:23 blueocean-pipeline-editor.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-pipeline-scm-api
-rw-r--r--. 1 root root 301729 Jan 20 09:23 blueocean-pipeline-scm-api.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 blueocean-rest
drwxr-xr-x. 6 root root 85 Jan 20 09:23 blueocean-rest-impl
-rw-r--r--. 1 root root 1071360 Jan 20 09:23 blueocean-rest-impl.jpi
-rw-r--r--. 1 root root 102278 Jan 20 09:23 blueocean-rest.jpi
drwxr-xr-x. 6 root root 85 Jan 20 09:23 blueocean-web
-rw-r--r--. 1 root root 1411835 Jan 20 09:23 blueocean-web.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 bouncycastle-api
-rw-r--r--. 1 jenkins jenkins 4885133 Jan 20 06:29 bouncycastle-api.jpi
drwxr-xr-x. 5 jenkins jenkins 70 Jan 20 06:30 branch-api
-rw-r--r--. 1 jenkins jenkins 308984 Jan 20 06:30 branch-api.jpi
drwxr-xr-x. 4 jenkins jenkins 204 Jan 20 06:29 build-timeout
-rw-r--r--. 1 jenkins jenkins 95728 Jan 20 06:29 build-timeout.jpi
drwxr-xr-x. 5 root root 70 Jan 20 09:23 cloudbees-bitbucket-branch-source
-rw-r--r--. 1 root root 403277 Jan 20 09:23 cloudbees-bitbucket-branch-source.jpi
drwxr-xr-x. 5 jenkins jenkins 70 Jan 20 06:29 cloudbees-folder
-rw-r--r--. 1 jenkins jenkins 219708 Jan 20 06:29 cloudbees-folder.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 command-launcher
-rw-r--r--. 1 jenkins jenkins 38820 Jan 20 06:29 command-launcher.jpi
drwxr-xr-x. 6 jenkins jenkins 82 Jan 20 06:29 credentials
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 credentials-binding
-rw-r--r--. 1 jenkins jenkins 80803 Jan 20 06:29 credentials-binding.jpi
-rw-r--r--. 1 jenkins jenkins 971342 Jan 20 06:29 credentials.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 display-url-api
-rw-r--r--. 1 jenkins jenkins 27121 Jan 20 06:30 display-url-api.jpi
drwxr-xr-x. 5 jenkins jenkins 70 Jan 20 06:30 docker-commons
-rw-r--r--. 1 jenkins jenkins 91018 Jan 20 06:30 docker-commons.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 docker-workflow
-rw-r--r--. 1 jenkins jenkins 82951 Jan 20 06:30 docker-workflow.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 durable-task
-rw-r--r--. 1 jenkins jenkins 5283231 Jan 20 06:29 durable-task.jpi
drwxr-xr-x. 7 jenkins jenkins 97 Jan 20 06:30 email-ext
-rw-r--r--. 1 jenkins jenkins 796637 Jan 20 06:30 email-ext.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 favorite
-rw-r--r--. 1 root root 34106 Jan 20 09:23 favorite.jpi
drwxr-xr-x. 5 jenkins jenkins 176 Jan 20 06:30 git
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 git-client
-rw-r--r--. 1 jenkins jenkins 8503329 Jan 20 06:30 git-client.jpi
drwxr-xr-x. 7 jenkins jenkins 106 Jan 20 06:30 github
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 github-api
-rw-r--r--. 1 jenkins jenkins 1168178 Jan 20 06:30 github-api.jpi
drwxr-xr-x. 5 jenkins jenkins 98 Jan 20 06:30 github-branch-source
-rw-r--r--. 1 jenkins jenkins 280664 Jan 20 06:30 github-branch-source.jpi
-rw-r--r--. 1 jenkins jenkins 2124964 Jan 20 06:30 github.jpi
-rw-r--r--. 1 jenkins jenkins 902751 Jan 20 06:30 git.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:31 gitlab-hook
-rw-r--r--. 1 root root 1114041 Jan 20 09:00 gitlab-hook.jpi
drwxr-xr-x. 5 root root 86 Jan 20 09:31 gitlab-oauth
-rw-r--r--. 1 root root 1615322 Jan 20 08:59 gitlab-oauth.jpi
drwxr-xr-x. 6 root root 82 Jan 20 09:31 gitlab-plugin
-rw-r--r--. 1 root root 8456411 Jan 20 08:59 gitlab-plugin.jpi
drwxr-xr-x. 5 jenkins jenkins 70 Jan 20 06:30 git-server
-rw-r--r--. 1 jenkins jenkins 30408 Jan 20 06:30 git-server.jpi
drwxr-xr-x. 5 jenkins jenkins 169 Jan 20 06:30 gradle
-rw-r--r--. 1 jenkins jenkins 58363 Jan 20 06:30 gradle.jpi
drwxr-xr-x. 5 jenkins jenkins 73 Jan 20 06:30 handlebars
-rw-r--r--. 1 jenkins jenkins 67784 Jan 20 06:30 handlebars.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 handy-uri-templates-2-api
-rw-r--r--. 1 root root 594612 Jan 20 09:23 handy-uri-templates-2-api.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 htmlpublisher
-rw-r--r--. 1 root root 71528 Jan 20 09:23 htmlpublisher.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 jackson2-api
-rw-r--r--. 1 jenkins jenkins 1972400 Jan 20 06:30 jackson2-api.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 jdk-tool
-rw-r--r--. 1 jenkins jenkins 69922 Jan 20 06:29 jdk-tool.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 jenkins-design-language
-rw-r--r--. 1 root root 2363785 Jan 20 09:23 jenkins-design-language.jpi
drwxr-xr-x. 4 root root 258 Jan 20 09:23 jira
-rw-r--r--. 1 root root 4542959 Jan 20 09:23 jira.jpi
drwxr-xr-x. 5 jenkins jenkins 73 Jan 20 06:30 jquery-detached
-rw-r--r--. 1 jenkins jenkins 211945 Jan 20 06:30 jquery-detached.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 jsch
-rw-r--r--. 1 jenkins jenkins 279709 Jan 20 06:30 jsch.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 junit
-rw-r--r--. 1 jenkins jenkins 361632 Jan 20 06:29 junit.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 ldap
-rw-r--r--. 1 jenkins jenkins 130445 Jan 20 06:30 ldap.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 localization-support
-rw-r--r--. 1 jenkins jenkins 23848 Jan 20 06:30 localization-support.jpi
drwxr-xr-x. 5 jenkins jenkins 70 Jan 20 06:30 localization-zh-cn
-rw-r--r--. 1 jenkins jenkins 542952 Jan 20 06:30 localization-zh-cn.jpi
drwxr-xr-x. 5 jenkins jenkins 67 Jan 20 06:30 lockable-resources
-rw-r--r--. 1 jenkins jenkins 74635 Jan 20 06:30 lockable-resources.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 mailer
-rw-r--r--. 1 jenkins jenkins 126236 Jan 20 06:30 mailer.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 mapdb-api
-rw-r--r--. 1 jenkins jenkins 396306 Jan 20 06:30 mapdb-api.jpi
drwxr-xr-x. 5 jenkins jenkins 70 Jan 20 06:30 matrix-auth
-rw-r--r--. 1 jenkins jenkins 128779 Jan 20 06:30 matrix-auth.jpi
drwxr-xr-x. 6 jenkins jenkins 82 Jan 20 06:29 matrix-project
-rw-r--r--. 1 jenkins jenkins 230120 Jan 20 06:29 matrix-project.jpi
drwxr-xr-x. 5 root root 70 Jan 20 09:23 mercurial
-rw-r--r--. 1 root root 225189 Jan 20 09:23 mercurial.jpi
drwxr-xr-x. 5 jenkins jenkins 73 Jan 20 06:30 momentjs
-rw-r--r--. 1 jenkins jenkins 37051 Jan 20 06:30 momentjs.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pam-auth
-rw-r--r--. 1 jenkins jenkins 1504184 Jan 20 06:30 pam-auth.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pipeline-build-step
-rw-r--r--. 1 jenkins jenkins 34632 Jan 20 06:30 pipeline-build-step.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pipeline-github-lib
-rw-r--r--. 1 jenkins jenkins 8479 Jan 20 06:30 pipeline-github-lib.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pipeline-graph-analysis
-rw-r--r--. 1 jenkins jenkins 20613 Jan 20 06:30 pipeline-graph-analysis.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pipeline-input-step
-rw-r--r--. 1 jenkins jenkins 30501 Jan 20 06:30 pipeline-input-step.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pipeline-milestone-step
-rw-r--r--. 1 jenkins jenkins 18994 Jan 20 06:30 pipeline-milestone-step.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pipeline-model-api
-rw-r--r--. 1 jenkins jenkins 2436323 Jan 20 06:30 pipeline-model-api.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pipeline-model-declarative-agent
-rw-r--r--. 1 jenkins jenkins 6319 Jan 20 06:30 pipeline-model-declarative-agent.jpi
drwxr-xr-x. 5 jenkins jenkins 70 Jan 20 06:30 pipeline-model-definition
-rw-r--r--. 1 jenkins jenkins 1490265 Jan 20 06:30 pipeline-model-definition.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pipeline-model-extensions
-rw-r--r--. 1 jenkins jenkins 38764 Jan 20 06:30 pipeline-model-extensions.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pipeline-rest-api
-rw-r--r--. 1 jenkins jenkins 145776 Jan 20 06:30 pipeline-rest-api.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pipeline-stage-step
-rw-r--r--. 1 jenkins jenkins 19872 Jan 20 06:30 pipeline-stage-step.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 pipeline-stage-tags-metadata
-rw-r--r--. 1 jenkins jenkins 10708 Jan 20 06:30 pipeline-stage-tags-metadata.jpi
drwxr-xr-x. 7 jenkins jenkins 100 Jan 20 06:30 pipeline-stage-view
-rw-r--r--. 1 jenkins jenkins 201594 Jan 20 06:30 pipeline-stage-view.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 plain-credentials
-rw-r--r--. 1 jenkins jenkins 17459 Jan 20 06:29 plain-credentials.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 pubsub-light
-rw-r--r--. 1 root root 33985 Jan 20 09:23 pubsub-light.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 resource-disposer
-rw-r--r--. 1 jenkins jenkins 21791 Jan 20 06:29 resource-disposer.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:31 ruby-runtime
-rw-r--r--. 1 root root 19016644 Jan 20 08:59 ruby-runtime.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 scm-api
-rw-r--r--. 1 jenkins jenkins 218705 Jan 20 06:29 scm-api.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 script-security
-rw-r--r--. 1 jenkins jenkins 1004965 Jan 20 06:29 script-security.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 sse-gateway
-rw-r--r--. 1 root root 213569 Jan 20 09:23 sse-gateway.jpi
drwxr-xr-x. 5 jenkins jenkins 70 Jan 20 06:29 ssh-credentials
-rw-r--r--. 1 jenkins jenkins 65885 Jan 20 06:29 ssh-credentials.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 ssh-slaves
-rw-r--r--. 1 jenkins jenkins 179773 Jan 20 06:30 ssh-slaves.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 structs
-rw-r--r--. 1 jenkins jenkins 44501 Jan 20 06:29 structs.jpi
drwxr-xr-x. 4 jenkins jenkins 275 Jan 20 06:30 subversion
-rw-r--r--. 1 jenkins jenkins 7350139 Jan 20 06:30 subversion.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 timestamper
-rw-r--r--. 1 jenkins jenkins 82494 Jan 20 06:29 timestamper.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 token-macro
-rw-r--r--. 1 jenkins jenkins 654142 Jan 20 06:29 token-macro.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 trilead-api
-rw-r--r--. 1 jenkins jenkins 384303 Jan 20 06:29 trilead-api.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:23 variant
-rw-r--r--. 1 root root 10252 Jan 20 09:23 variant.jpi
drwxr-xr-x. 4 root root 56 Jan 20 09:31 windows-slaves
-rw-r--r--. 1 root root 470244 Jan 20 08:59 windows-slaves.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 workflow-aggregator
-rw-r--r--. 1 jenkins jenkins 8655 Jan 20 06:30 workflow-aggregator.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 workflow-api
-rw-r--r--. 1 jenkins jenkins 155980 Jan 20 06:29 workflow-api.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 workflow-basic-steps
-rw-r--r--. 1 jenkins jenkins 147305 Jan 20 06:30 workflow-basic-steps.jpi
drwxr-xr-x. 6 jenkins jenkins 86 Jan 20 06:30 workflow-cps
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 workflow-cps-global-lib
-rw-r--r--. 1 jenkins jenkins 3435811 Jan 20 06:30 workflow-cps-global-lib.jpi
-rw-r--r--. 1 jenkins jenkins 597525 Jan 20 06:30 workflow-cps.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 workflow-durable-task-step
-rw-r--r--. 1 jenkins jenkins 99500 Jan 20 06:29 workflow-durable-task-step.jpi
drwxr-xr-x. 5 jenkins jenkins 70 Jan 20 06:30 workflow-job
-rw-r--r--. 1 jenkins jenkins 111555 Jan 20 06:30 workflow-job.jpi
drwxr-xr-x. 5 jenkins jenkins 70 Jan 20 06:30 workflow-multibranch
-rw-r--r--. 1 jenkins jenkins 85719 Jan 20 06:30 workflow-multibranch.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:30 workflow-scm-step
-rw-r--r--. 1 jenkins jenkins 15370 Jan 20 06:30 workflow-scm-step.jpi
drwxr-xr-x. 4 jenkins jenkins 56 Jan 20 06:29 workflow-step-api
-rw-r--r--. 1 jenkins jenkins 75642 Jan 20 06:29 workflow-step-api.jpi
drwxr-xr-x. 5 jenkins jenkins 70 Jan 20 06:29 workflow-support
-rw-r--r--. 1 jenkins jenkins 380755 Jan 20 06:29 workflow-support.jpi
drwxr-xr-x. 5 jenkins jenkins 68 Jan 20 06:29 ws-cleanup
-rw-r--r--. 1 jenkins jenkins 6349503 Jan 20 06:29 ws-cleanup.jpi

Step3 继续设置构建环境Webhooks

image.png

image.png

image.png

设置配置到GitLab中

image.png

添加报错 是因为我们这里没有开启内网服务

image.png

image.png

添加成功!

Step4 添加构建在Jenkins服务器上构建脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cd /home/script/
vim do.sh
#!/bin/sh
DATE=$(date +%Y-%m-%d-%H-%M-%S)
CODE_DIR="/var/lib/jenkins/workspace/Jenkins-Test/"
WEB_DIR="/var/www/"
IP=192.168.0.108
get_code_tar(){
cd $CODE_DIR && tar zcf /opt/web-$DATE.tar.gz ./*
}
scp_code_web(){
scp /opt/web-$DATE.tar.gz $IP:$WEB_DIR
}
code_tarxf(){
ssh $IP "cd $WEB_DIR &&mkdir web-$DATE && tar xf web-$DATE.tar.gz -C web-$DATE"
}
ln_html(){
ssh $IP "cd $WEB_DIR && rm -rf html && ln -s web-$DATE html"
}
main(){
get_code_tar;
scp_code_web;
code_tarxf;
ln_html;
}
main

Step5 Jenkins要推送到Web服务器 设置免密登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@jenkins .ssh]# ssh-copy-id -i root@192.168.0.108
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.0.108 (192.168.0.108)' can't be established.
ECDSA key fingerprint is SHA256:1GMXKe1kJLq7jEyAGkQYWoVpa2/H53bfRLInTWPCcDY.
ECDSA key fingerprint is MD5:61:6e:10:be:6b:99:8e:02:f7:8a:07:94:1f:27:fa:0e.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.108's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'root@192.168.0.108'"
and check to make sure that only the key(s) you wanted were added.

[root@jenkins .ssh]# ssh 'root@192.168.0.108'
Last login: Mon Jan 20 10:19:29 2020 from 192.168.0.103
[root@web01 ~]# exit
logout
Connection to 192.168.0.108 closed.

0x3 web服务器Apache2.4.6

1
2
3
4
5
6
7
8
9
10
11
[root@web01 ~]# yum -y install httpd
[root@web01 ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Aug 8 2019 11:41:18
[root@web01 ~]# sudo firewall-cmd --permanent --zone=public --add-service=http
success
[root@web01 ~]# sudo firewall-cmd --permanent --zone=public --add-service=https
success
[root@web01 ~]# sudo firewall-cmd --reload
success
[root@web01 ~]#

出现测试页面

image.png

0x4 在GitLab服务器上修改代码会触发Jenkins,推送到Web服务器

image.png

image.png

image.png

评论