Note:本文所使用的编辑器是STS;关于Jenkins+Docker构建DooD可参考上一篇文章DooD:Docker+Jenkins;需要在Github已经注册有账号,其他的代码托管平台略有不同。
1 构建SpringBoot项目
- 在STS中选择
New
->Spring starter project
->Next
->Finish
,新建一个Spring Boot 项目,结构如下:
- 此处的
application.yml
中,为了防止出现端口冲突,项目启动端口改为8001
server:
port: 8001
- 添加了一个 Restful 风格的 Controller,代码如下:
@RestController
public class HelloController {
@GetMapping(path = "/hello")
public String hello() {
return "Hello Jenkins";
}
}
- 项目根目录添加
Dockerfile
FROM openjdk:8-jdk-alpine
# Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
VOLUME /tmp
# 将jar包copy到容器里
COPY target/*.jar app.jar
# 为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
-
启动项目,使用浏览器或者
postman
访问http://localhost:8001/hello
,如下所示
将该项目提交到Github上
2 Jenkins全局工具配置,包括JDK,Maven ,Git,Mail等
登陆Jenkins,进入如下首页
- 配置JDK
点击系统管理
->全局工具配置
->新增JDK
,可以选择下面四种不同的安装方式,默认选择从java.sun.com安装
,这个可以根据需要自行选择。
- 配置Maven
点击系统管理
->全局工具配置
->Maven安装
,同样也有四种安装方式,默认选择从Apache安装
。
- 配置Git
点击系统管理
->全局工具配置
->Add Git
->Git
,此处的Path to Git executable
可以指定为Jenkins所在操作系统已有的git的执行路径,此处我选择自动安装
-
配置Mail
点击
系统管理
->系统设置
,此处首先需要配置Jenkins Location
中的系统管理员邮件地址
,否则发送邮件会出问题
然后,在下面的
Extended E-mail Notification
,进行邮箱信息的配置,包括邮箱服务器,用户名,密码或授权码,使用SSL及对应的端口,还可以配置邮箱默认的接收人,定制化邮箱内容等功能。
最后,可以通过邮件通知
测试上一步实现的邮箱信息是否正确,并且可以发送一封测试邮件到指定邮箱。
3 在Jenkins中新建Job,实现CI
- 点击新建一个job
- 配置
源码管理
->Git
,此处填写代码托管平台地址(GitHub , Gitlab 等)和对应的Credentials
- 使用Maven命令打包项目,如下
- 执行 docker 命令,build image ,run container,下面的脚本在首次构建时会出错,因为还没有镜像和容器,可以先注释掉第一行和第二行。
- 点击
增加构建后步骤
—>Editable Email Notification
,重点关注Triggers
,可针对不同情况发送给不同的收件人不同的主题
- 配置完以上步骤,点击
Save
后,点击立即构建
,开始构建
- 等待构建完成,你在docker中可以看到构建好的container,访问http://Docker宿主机_IP:8001/hello,能正常返回则表示部署完成
- 同时,你也应该收到了部署成功的邮件(邮件内容未经过优化,如有必要可自定义模板)
至此,构建完成,后续可设置钩子,每次提交都重新构建;还可以通过Jenkins相关插件完成shell脚本的工作;也可以使用maven-dockerfile-plugin完成本地到docker engine的build images以及run container,后续的文章会讲到这些内容。