搭建Jenkins+SpringBoot+Docker的微服务持续集成框架

前言

近一、两年,SpringBoot和Docker可以说非常的火热啊,而早在2015年的时候我就弄过一下Docker,不过由于职位和跳槽等种种原因,2016年就很少搞了,不过现在再捡起来也是很容易的。而SpringBoot我也是最近才开始学的,不知道有木有落伍哈。微服务概念的提出的同时也把这几个技术带到了高潮,现在就来实践一把。

环境搭建

  • OS Debian 8.7
  • Jenkins 2.32.2
  • SpringBoot 1.5.1.RELEASE
  • Docker 1.13.0
  • Gitlab 8.16.4

其中Gitlab主要是用来存放代码的仓库以及触发构建。关于这个怎么集成可以查看我先前写的一篇博文
Jenkins+Gitlab搭建CI持续集成架构。

Jenkins、Gitlab的安装在上面那篇博文中有说明,Docker的安装配置在我之前写的另一篇博文sonatype nexus 3搭建Docker私有仓库中也有说到,这里就不过多介绍了。

SpringBoot项目骨架可以在官方网站上进行下载:https://start.spring.io/
这个也不多说了。。。

项目

整个项目以一个springboot-jpa为示例,最后面会给出源码,详细的说明可以参看源码吧。
项目结构如下:
搭建Jenkins+SpringBoot+Docker的微服务持续集成框架_第1张图片

其中Dockerfile为构建docker镜像的脚本,在这里我使用的是自己制作的私服镜像,如果要在公网上使用可以打开注释换一个,关于Docker私服的搭建使用也可以参看我之前的那篇博文。
项目根目录中的build.sh为打包构建启动容器的脚本,在jenkins项目构建步骤中可以直接执行该脚本。

项目resources目录中的schema.sql为启动应用时初始化创建表结构的文件,data.sql为填充数据表内容的文件,这个仅为测试使用。SpringBoot会自动调用这个2个文件的,我们不用管。

项目代码很简单,好像也没什么好说的哈,数据库源的配置都在application.properties文件中,如果要测试使用的话需要替换下数据库源,其他的看下代码就行了。

Jenkins配置

创建jenkins项目,输入项目名,选择自由风格。配置需要注意的只有两点,一个是:源码管理,二个是:构建的步骤。

源码管理

搭建Jenkins+SpringBoot+Docker的微服务持续集成框架_第2张图片
我们这里使用的是Gitlab作为源码管理,所以选择Git,输入远程仓库名和用户认证。这个没有配置正确是无法从远程仓库下载源码的,提示权限问题。关于认证的配置也请参看我之前的博文Jenkins子节点构建配置,这里不做过多的详细介绍了。

构建

搭建Jenkins+SpringBoot+Docker的微服务持续集成框架_第3张图片
构建步骤也很简单,直接执行项目根目录中的那个构建脚本就行了。
这里需要注意的是环境变量问题,我是将JDK和Maven等工具变量都写在/etc/profile文件中的,内容很简单,在文件最后面添加以下内容,这个根据不同的环境进行配置即可:

 # Java
export JAVA_HOME=/opt/jdk1.8.0_111
export PATH=$JAVA_HOME/bin:$PATH

 # Maven
export MAVEN_HOME=/opt/apache-maven-3.3.9
export PATH=$PATH:$MAVEN_HOME/bin

这里需要注意:默认Docker命令只能root用户使用,jenkins用户是没有权限使用的,我们可以将jenkins用户加入docker组中,然后再断开、注销、连接就可以了。

将jenkins用户添加进docker组
$ sudo gpasswd -a jenkins docker

push上传

构建完成后,还可以选择push上传镜像,这个需要先登录才行。代码在build.sh构建脚本中有,我这里使用的是私服,可以根据需要进行修改。

后序

大概的步骤就这么些,实际公司内操作可能没这么简单,这里仅作为学习参考使用。源码:
https://github.com/lusyoe/springboot-jpa

参考文档:
https://spring.io/guides/gs/spring-boot-docker/

你可能感兴趣的:(CI持续集成,Gitlab,Jenkins)