jenkins和docker实现自动化构建部署【面试+工作】
应用场景
程序员开发应用,开发后需要提交svn,然后从svn拉取代码,进行构建,发布到tomcat中,发布,然后看呈现效果,这样的工作是频繁反复的在进行的,浪费了程序员的大量时间,那么能不能把这些工作自动化呢,只需要程序员更新代码到svn,然后自动的构建,发布,呈现效果,当然是可以的,通过jenkins和docker来实现。
操作步骤
1. 概述
开发者的工作大概流程是,eclipse编写代码,提交代码到svn,然后进行编译,打包,测试,部署,发布。
这其中很多重复的工作,影响开发人员的情绪,应当让开发者只重视代码阶段,后面的内容不用去理会,只要编写代码,提交代码,然后就能打开页面看到效果,那是最好的。
这就需要自动化构建,jenkins就是很好的自动化构建工具。
2. 自动化流程
具体流程如下:
1.编写代码,修改代码
2.提交代码到svn
3.Jenkins自动检测到svn代码更新,从svn拉取最新代码
4.Jenkins自动编译
5.Jenkins自动打成tomcat下能运行的war包
6.Jenkins自动上传war包到docker宿主机目录
7.Jenkins自动构建web容器镜像,包含项目demo
8.Jenkins自动启动镜像,变成容器,映射端口
9.最后就有项目运行的界面提供了
3. 环境准备
3.1 jenkins
Jenkins简单点说就是一个war包。一个自动化服务,提供各种插件集成。
jenkins下载地址 http://mirrors.jenkins-ci.org/war/latest/jenkins.war
Jenkins部署有两种方法(可以装到windows或者linux,实验中以windows的方式一为例):
Jenkins是用Java语言开发的系统,首先要确定服务器上已经安装JDK或者JRE。
1.方式一
直接运行java –jar jenkins.war(注意jenkins.war得是绝对路径,例如下图所示),在浏览器中输入
http://localhost:8080即可。
到此,jenkins安装部署完毕,关于如何使用jenkins,下文详细介绍。
2.方式二
把jenkins的war包拷贝到tomcat的webapps目录下,启动tomcat,访问地址:http://ip:8080/jenkins
3.2 maven
参照windows安装maven博文
3.3 svn
参照svn如何使用的相关博文
以及windows端安装svn服务器端的博文
3.4 jdk
参考windows安装jdk博文
3.5 docker
参考docker安装使用博文
4. 基础配置
4.1 jenkins配置
首先需要进入jenkins主界面,安装必须要的插件。
进入插件页面,选择可选插件,搜索ssh,安装SSH plugin和Publish Over SSH插件,由于实验已经安装过,所以图中没有显示了。
然后回到主界面,进行系统设置。
配置maven configuretion,加上本地maven安装地址,指向settings文件。
jdk配置,指向本地jdk安装目录。
Maven配置,指向本地maven安装路径。
配置jenkins location,配置管理员邮箱。
配置邮件通知,需要邮箱开启pop3,smtp,可以测试验证。后面配置邮件通知时需要用到。
配置Publish over SSH。这里配置后才能在配置目标容器环境时,选择到构建完成后发布到的目标容器。
最后应用,保存。
5.配置自动化
5.1 编写代码
这里需要基于maven构建的工程。
5.2 提交代码至svn
右击项目,选择team,提交,到svn服务器的某个地址,实验中提交到如下目录:
需要在svn下新建mavenproject文件夹,具体操作参考3.3。
5.3 新建jenkins项目连接svn
点击界面左侧新建,项目名称可以随意命名,选择maven项目:
选择源码地址,这功能可以让jenkins可以从svn上拉取代码。
Repository URL获取方式:
5.4 配置构建任务
该功能,jenkins可以检测svn代码,如果发生变化,那么立即自动执行构建:
5.5 配置构建参数
该功能,jenkins可以自动给maven项目打包
5.6 邮件通知
该功能,jenkins构建过程中,可以向指定邮箱发送邮件,提示构建状况。
5.7 配置目标容器环境
选择send build artifacts over SSH,该功能可以实现将本地打包的war包,ssh到指定服务器的目录中,并且能在服务器上执行脚本。
脚本如下:
这样jenkins上就操作完毕了。
5.8 生成docker实例
在docker宿主机输入如下命令:
执行完毕后,打开虚拟机上的/Dockerfile_tomcat目录,修改该目录下的Dockerfile文件,加入如下一行:
5.9 测试
当我们修改eclipse上的代码,然后提交到svn:
等几分钟就能看到结果。
可以看到jenkins自动开始构建了:
访问页面:
最后可以看出,生成了指定的容器。