Github+Jenkins+Docker实现CI

Github+Jenkins+Docker实现CI_第1张图片
Photo by Dang Nhz on Unsplash

Note:本文所使用的编辑器是STS;关于Jenkins+Docker构建DooD可参考上一篇文章DooD:Docker+Jenkins;需要在Github已经注册有账号,其他的代码托管平台略有不同。

1 构建SpringBoot项目

  • 在STS中选择New->Spring starter project->Next->Finish,新建一个Spring Boot 项目,结构如下:
    Github+Jenkins+Docker实现CI_第2张图片
    project_structure
  • 此处的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+Jenkins+Docker实现CI_第3张图片
    postman

  • 将该项目提交到Github上

2 Jenkins全局工具配置,包括JDK,Maven ,Git,Mail等

登陆Jenkins,进入如下首页


Github+Jenkins+Docker实现CI_第4张图片
Jenkins 首页
  • 配置JDK

点击系统管理->全局工具配置->新增JDK,可以选择下面四种不同的安装方式,默认选择从java.sun.com安装,这个可以根据需要自行选择。

Github+Jenkins+Docker实现CI_第5张图片
JDK

  • 配置Maven

点击系统管理->全局工具配置->Maven安装,同样也有四种安装方式,默认选择从Apache安装

Github+Jenkins+Docker实现CI_第6张图片
Maven
  • 配置Git

点击系统管理->全局工具配置->Add Git->Git,此处的Path to Git executable可以指定为Jenkins所在操作系统已有的git的执行路径,此处我选择自动安装

Github+Jenkins+Docker实现CI_第7张图片
Git
  • 配置Mail

    点击系统管理->系统设置,此处首先需要配置Jenkins Location中的系统管理员邮件地址,否则发送邮件会出问题

    Mail_admin

    然后,在下面的Extended E-mail Notification,进行邮箱信息的配置,包括邮箱服务器,用户名,密码或授权码,使用SSL及对应的端口,还可以配置邮箱默认的接收人,定制化邮箱内容等功能。

Github+Jenkins+Docker实现CI_第8张图片
Mail

最后,可以通过邮件通知测试上一步实现的邮箱信息是否正确,并且可以发送一封测试邮件到指定邮箱。

Github+Jenkins+Docker实现CI_第9张图片
Test_mail

3 在Jenkins中新建Job,实现CI

  • 点击新建一个job
Github+Jenkins+Docker实现CI_第10张图片
New_job
  • 配置源码管理->Git,此处填写代码托管平台地址(GitHub , Gitlab 等)和对应的Credentials
Github+Jenkins+Docker实现CI_第11张图片
GitHub
  • 使用Maven命令打包项目,如下
Github+Jenkins+Docker实现CI_第12张图片
Maven_command
  • 执行 docker 命令,build image ,run container,下面的脚本在首次构建时会出错,因为还没有镜像和容器,可以先注释掉第一行和第二行。
Github+Jenkins+Docker实现CI_第13张图片
Docker_command
  • 点击增加构建后步骤—>Editable Email Notification,重点关注Triggers,可针对不同情况发送给不同的收件人不同的主题
Github+Jenkins+Docker实现CI_第14张图片
Mail_notification
Github+Jenkins+Docker实现CI_第15张图片
Mail_triggers
  • 配置完以上步骤,点击Save后,点击立即构建,开始构建
Github+Jenkins+Docker实现CI_第16张图片
Job_start
  • 等待构建完成,你在docker中可以看到构建好的container,访问http://Docker宿主机_IP:8001/hello,能正常返回则表示部署完成
Github+Jenkins+Docker实现CI_第17张图片
docker_info.png
  • 同时,你也应该收到了部署成功的邮件(邮件内容未经过优化,如有必要可自定义模板)
Github+Jenkins+Docker实现CI_第18张图片
mail.png

至此,构建完成,后续可设置钩子,每次提交都重新构建;还可以通过Jenkins相关插件完成shell脚本的工作;也可以使用maven-dockerfile-plugin完成本地到docker engine的build images以及run container,后续的文章会讲到这些内容。

你可能感兴趣的:(Github+Jenkins+Docker实现CI)