系统环境:
- Gitlab主机
- IP:192.168.1.2
- Jenkins主机
- IP:192.168.1.3
一、为何要做自动部署
#为什么要做自动部署,因为懒啊!!!#部署Tomcat的在这里:https://blog.51cto.com/bigboss/2155423
二、配置Gitlab
#首先,你得有一个代码仓库,赶紧到gitlab上创建一个,然后创建个分支并创建一个文件。
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/677da1c3532784026d582fd7ae4b8a38.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/cd7b30c361a0b96cae49d5d95c74d66d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
#其次,你得配置一个ssh公钥到gitlab上,这样才能模拟开发上传代码到gitlab。#至于ssh公钥私钥怎么生成,自己百度去。
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/4126d1d08a1a5cdbb87a61c680b46a7d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
#克隆代码仓库,然后测试是否能够上传代码到gitlabgit clone git@192.168.1.2:root/test.gitcd test/echo 11111 > 1.txt git add . git commit -m "add 1.txt" git push
三、配置Jenkins
#打开jenkins页面#添加插件:系统管理 - 插件管理 #需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter #添加完插件重启jenkins,开始添加要部署代码的主机,注意一定是要能够ssh登陆的用户。 #添加主机:系统管理 - 系统设置 找到Publish over SSH
#添加完主机之后,新建一个项目,开始配置构建操作
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/b8f9a40907d4acad9461a7f38eab70a8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/03c7d93f60f9b842ab86ed4825035835.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/0669e219a4714a9399cb597267d17764.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/5b1e46d6354aa995eb8101facfc5c06e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/af8c865cc2096aa39915a3cbabe33d48.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/82b81ab741b5f5ae2a79c6add9499eef.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
#配置gitlab,当有代码提交时,触发jenkins的部署操作
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/05d30a92f7577fcebecc8602cb454423.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/50150ae900fda1cfd8b6fc7e35b8529a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/d2961a8570a798fc9e6819b6b1d639bc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
四、测试提交代码是否会部署到远程主机
#再次克隆仓库git clone git@192.168.1.2:root/test.gitcd test/echo '测试Jenkins' > index.html git add . git commit -m 'add index.html' git push #提交之后去jenkins页面看看
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/2c9a2e8b44ae854b8843dae2ae246cae.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/44dad3e6fa3d6894675d4a6f00f953be.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/ca836b4a99e5321890adbf89d8a003cf.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Gitlab+Jenkins实现自动部署](https://s1.51cto.com/images/blog/201806/14/8c7e2e44f061eba79b957ad45a9c2ecf.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
小坑:
-
错误提示:
#很多朋友使用最新版本的gitlab做自动部署时,在增加web钩子那一步,#点击test push events时会报错:Url is blocked: Requests to the local network are not allowed
- 解决方法:
#这是因为新版的gitlab为了安全默认禁止了本地局域网地址调用web hook#我们在设置里允许就行,具体步骤如下: