Jenkins+Maven+Docker持续构建0-总体配置
2018-06-03 本文已影响199人
K1024
设计目标
- 整体流程
将代码从版本管理服务器下载到Jenkins构建服务器上,通过Jenkins调用maven自动构建war包,将构建的war包直接拷贝到Dockerfile目录,通过Jenkins完成镜像的构建- 安装Jenkins构建服务器
- 通过Jenkins将源码checkout到Jenkins服务器
- 通过Jenkins构建war包
- 通过Jenkins构建镜像
-
构建示意图如下
整体流程.jpg
演示环境
- 代码托管:阿里云的云效
-
通过git进行代码托管
阿里云托管.jpg -
项目源码:一个通过jdk6编译的JAVA WEB 项目
- 挑战1:jdk6编译的代码只能运行在tomcat6服务器上才不会出现编译错误;
- 挑战2:Jenkins构建应用是jdk8+tomcat8 来运行的,编译JDK6的代码有一定的风险
-
通过maven的方式构建的项目
-
- 代码构建环境Ubuntu 16.04 LTS
- Jenkins版本2.120
- JDK版本:1.8.0_171
- MAVEN版本:3.5.3
- Docker镜像(基于Ubuntu)
- JDK:1.6.0_45
- Tomcat6
- Ubuntu:16.04 LTS
- Docker server version: 18.03.1-ce
整体代码构建
- Jenkins-全局工具配置
-
配置JDK:这里的JDK配置,就是为了在后续jenkins构建任务的时候选择可以用来编译项目的JDK,前提是我确实在Ubuntu上安装了
jenkins-jdk.jpg -
配置MAVEN:这里的Maven配置,就是为了后续在调用操作系统的Maven进行war包的生成,这里我配置了两个版本的Maven供任务构建时候选择使用,都是3.0以上版本
jenkins-maven.jpg
- 构建任务的配置
-
Maven插件的基础配置
这里需要选择jdk8,否则在调用maven的时候,会提示JDK的版本错误,min 50之类的
maven info and jdk.jpg -
从阿里云的云效服务器上拿到git源码
这里需要特别说明的是,从阿里云的云效代码服务器获取代码最好通过秘钥的方式,这里我直接在本地生成公钥和私钥,将公钥放到阿里云效的个人设置的SSH/My SSH Keys中,这样就可以直接checkout源码了
源码设置.jpg -
调用maven构建war包
这个调用就跟我们在命令行中写命令差不多,下载下来的maven项目会直接在目录中执行我们的手写命令
#这里很关键的是我们pom.xml文件指定了我们的项目必须使用jdk1.6编译,这样就解决了用指定版本jdk编译的问题了
mvn clean package -Dmaven.test.skip=true
- 将构建的war包拷贝到docker镜像制作目录,启动镜像制作
#切换到maven构建的target目录中,里边是我们新构建的war包jiuchongju.war
cd target
#将jiuchongju.war强制拷贝到 /root/docker-jcj/目录下,这个目录是我们用来制作docker镜像的目录
cp -r jiuchongju.war /root/docker-jcj/
#切换到镜像的制作目录 /root/docker-jcj
cd /root/docker-jcj
#启动镜像制作,调用Dockerfile 文件制作一个jcj的镜像,这个镜像会把jiuchongju.war打包部署到镜像里供使用
docker build -t jcj .
-
配置完成的job
这个job就可以完成自动化构建容器镜像的操作了。从代码编译到镜像构建全过程打通。
job.jpg