Jenkins + Maven + Git构建项目

Jenkins + Maven + Git构建项目

  • 起因
  • 用脚本解决
  • 自动化构建工具
    • 创建Jenkins镜像
    • 配置Jenkins
  • 告一段落

起因

现在公司开发的微服务项目,一共有5个公共包(发布到Maven远程私有仓库),N个独立SpringBoot应用,采用Maven作为依赖管理,Gitlab作为版本控制,由三个人共同开发。
公共包中,一个为所有项目的父pom,一个为model包(也就是最基础的包,所有项目都需要引用这个包),一个为util包和api包(并列第三的位置),还有一个base包,需要引用util包。
每次开发的时候,只要修改了model包,那就是一场灾难了,需要model->util/api->base四个包依次构建一次,费时费力。于是就想要通过自动化的方式来解决这个问题,开发者只需要提交代码,构建的事情交给天意(不不不,是机器)。

用脚本解决

我们的开发环境是windows,于是写了个bat脚本,一键解决构建问题。
但是脚本有些缺陷:

  1. 新增项目就需要修改脚本
  2. 本地项目文件名称必须与脚本中写的一致
  3. 脚本没有处理父级项目构建失败,子级不继续构建的问题

在使用了两周脚本之后,决定换一种“更好的”方式来构建项目,将开发与构建彻底解耦。

自动化构建工具

由于之前公司使用的是一个第三方构建平台daocloud,本来想用这个平台直接构建的,但是这个平台主要是构建docker项目的,对于工具包发布到Maven仓库中去并不适合。
于是还是用Jenkins吧,免费开源的自动化构建工具,之前不想用还是因为Jenkins1.x的时候,很多插件都下载不了,但是现在Jenkins的插件下载地址,国内是可以正常访问的,最大的问题解决了,接下来就是开搞了。

创建Jenkins镜像

因为我们的服务器上,除了docker什么都没有安装,也为了保证服务器的安全性,也就不在上面安装其他杂七杂八的软件了,于是还是想的是用Jenkins的docker镜像来安装Jenkins。使用了官方的Jenkins-docker,发现里面并没有预装Git、Maven、JDK,使用Jenkins来安装老是遇到问题,整的很烦,于是就自己搞一个符合我们要求的镜像。

创建这个镜像很简单:

  1. 下载Tomcat8和Jenkins2
  2. 将Tomcat解压,把jenkins.war放入webapps目录下
  3. 再将Tomcat打包成tar格式(其实打包成.tar.gz更好,我主要是打过一次这样的,在创建镜像的时候报了错,第二次懒得再打一个.gz了,就直接用.tar了)
  4. 编写Dockerfile依赖Maven官方镜像maven:3-jdk-8,将打包好的文件解压到容器目录下,设置暴露端口和挂载盘,再运行,就OK了

项目在jenkins2-dockerfile这里,下载生成docker-image即可使用,记得认真读README

配置Jenkins

Jenkins的全局配置、邮件配置、项目创建,参考这篇文章:Jenkins 安装、配置和使用 。

因为要与Gitlab关联起来,Jenkins还需要安装依赖:

  1. 进入系统管理 -> 插件管理 -> 可选插件
  2. 过滤输入框搜索gitlab
  3. 把过滤出来的全部都安装上(我没搞清楚哪几个是必须安装的,反正gitlab、gitlab api、gitlab hook是一定要安装的,其他的我懒得分辨了,就一起装了)
  4. 重启之后开始配置就好了

具体怎么与gitlab关联,参考这篇文章:jenkins实现git提交后自动化构建 。

告一段落

至此,Jenkins、Git、Maven的配置就完成了,我们的项目可以使用Jenkins自动构建jar包了。

使用了一段时间Jenkins之后,发现他比之前的第三方工具更灵活,可操作性更强,所以,准备将其他Springboot应用全部迁移到Jenkins上来构建。

你可能感兴趣的:(技术方案,jenkins,maven,gitlab)