自动化构建部署思路
如下图
- 本地代码git提交到github
- jenkins程序(192.168.1.93) 检查到代码更新,自动构建编译spingboot项目生成war,并将war包通过ssh传到服务器(这里没多余的机器,还是用192.168.1.93)进行部署
- 利用写好的Docker和构建脚本,生成新的docker镜像并push到dockerhub官方镜像仓库(大家也可以自己搭建本地镜像仓库或者使用过阿里云镜像仓库)
- 生成镜像后,构建脚本里会直接run这个新的docker容器,项目部署成功,可通过127.0.0.1:8181进行访问。
一、环境说明
-
本地电脑
- eclipse Version: Mars.1 Release (4.5.1)
- maven3.5.0
- JDK 1.8.0_65
- git(eclipse自带)
-
虚拟机centos7
- docker 1.12.6 (docke 1.13之后才能用docker system prune命令)
- jenkins (jenkins插件Maven Integration plugin,Publish Over SSH,工具安装JDK,Maven)
-
代码仓库
- github(去官网注册用户,建一个私有private repository仓库)
-
镜像仓库
- dockerhub(去官网注册用户,建一个私有private repository 仓库,只能创建一个免费仓库)
二、安装jenkins
centos之前已经安装了docker,不再赘述。
本次使用docker安装jenkins,安装jenkins有多种,yum,war包部署,自己选择,如果是docker部署jenkins,建议jenkins需要的插件如在jenkins安装即可。
1.配置docker加速
加快docker镜像下载速度
[root@localhost ~]# vi /etc/docker/daemon.json
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# more /etc/docker/daemon.json
{
"registry-mirrors":["https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com"]}
2.安装jenkins(失败例子)
一条命令安装并运行jenkins
[root@localhost ~]# docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v /root/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -u 0 Jenkins
-u 0 是以root帐号覆盖容器的jenkins用户帐号,要不然-v映射卷的时候会报权限不足
docker 启动后就可以访问jenkins了 ,http://127.0.0.1:8080
管理用户密码容器启动的时候也有提示用命令docker logs -f myjenkins
查看启动日志,
或者到容器里面more /var/jenkins_home/secrets/initialAdminPassword
。
安装默认插件
总是失败,docker logs -f myjenkins
看日志有很多报错
aused by: java.io.IOException: Failed to install token-macro plugin
at hudson.PluginManager.dynamicLoad(PluginManager.java:874)
at hudson.PluginManager.dynamicLoad(PluginManager.java:813)
at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1889)
... 5 more
Caused by: java.io.IOException: Token Macro Plugin v2.12 failed to load.
- You must update Jenkins from v2.60.3 to v2.121.3 or later to run this plugin.
- Pipeline: Step API v2.22 failed to load. Fix this plugin first.
at hudson.PluginWrapper.resolvePluginDependencies(PluginWrapper.java:626)
at hudson.PluginManager.dynamicLoad(PluginManager.