转简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

Posted SpringForAll社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab相关的知识,希望对你有一定的参考价值。

本来想写一篇企业级通用的CI/CD但是太麻烦了,涉及的知识点广度较多,我先写个简易的引子吧,以后看有没有机会分享一下近期研究出来的企业级比较通用的 CI/CD方案,以一个SpringBoot的项目做示例。

发布流程如图

我的服务器环境是

  • CentOS7

  • Docker 18.03.0-ce

  • DockerCompose 1.19.0

本次方案所使用的技术有

  • Docker

  • Docker Compose

  • Jenkins

为了方便,我写做了一个docker-jenkins给颗小心心就可以了~

这里演示起见,为了方便我直接使用GitLab的仓库,这样大家都不用去创建自己的Git仓库,可以很快速方便的体验这份简易的持续集成方案,但这样做有个缺点就是如果你没有做内网映射或者是没有单独的服务器的话,你无法使用Git的WebHook访问到你的Jenkins服务器的接口【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

创建一个仓库,然后将项目推送至该仓库,这个不用写在文章里了吧,应该都会。

好,开始进入正题,进入正题之前请确保你已经安装了 dockerdocker-compose首先创建一个 jenkins文件夹 然后将我GayHub仓库的 docker-compsoe.yml下下来,为了方便我已经将镜像提交到了Docker仓库,如果你没有配置加速或者其它的一些方式的话,你可以自行下载 Dockerfile文件进行 build

 
   
   
 
  1. mkdir jenkins && cd jenkins

  2. wget https://raw.githubusercontent.com/yuequan1997/docker-jenkins/master/docker-compose.yml

  3. docker-compose up -d

使用 docker ps检查下容器运行起来了没有

【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

然后

 
   
   
 
  1. docker logs 容器ID

注意我红色框起来的区域,如果没有的话,也没有出现异常的话,请等待一下,然后复制那一串加密的字符

如我的是: 61cfaad2c6a94b7ebb54deafac051150【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab打开浏览器输入: http://服务器IP:8080/我在 docker-compose.yml文件中配置了端口是8080的映射如果你的被占用或者你想更换端口的话,请自行更改

将复制的那串秘钥贴进去,点继续【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

直接点这个【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

等它安装完,同时你也可以使用 dokcer logs命令来查看当前运行的控制台【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

创建一个账号【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

然后进入控制台,系统管理=》管理插件,然后选择可选插件,安装以下插件,利用右上角的过滤

  • Publish Over SSH

  • Gitlab

  • Gitlab Hook

  • Maven Integration

【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab安装好以后,回到控制台,新建一个任务【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

因为我项目是使用maven构建也安装了maven插件,所以直接选【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

在General选项中,我配置了保留10个旧的构建【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

配置你的Git仓库【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

构建触发器选这个【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

然后点高级,这里生成了一个秘钥,然后只允许master分支触发Webhook构建【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

然后配置build,它会询问你的maven配置这时候点链接进去配置一下【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

配置好了后回来,我的配置内容如下,我是使用了 docker-maven-plugin插件来做的镜像编译和推送【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

我的pom.xml插件配置如下【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

然后设置【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

添加一个【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

= = 去系统管理=》系统设置,添加个SSH Server【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

先进入 Docker容器内生成执行 ssh-keygen生成SSH秘钥对,如果你确定要用这套流程的话,请将 ~/.ssh挂载,不然每次重启都会丢失 = =

 
   
   
 
  1. docker exec -it 容器ID bash

  2. ssh-keygen

然后再将生成的公钥加到你的应用服务器中去,然后再到应用服务器下创建一个目录为 releases【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab配置完后可以点击Test Configuration进行测试

设置完后继续回到任务中进行配置【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

我应用服务器的deploy.sh脚本内容如下

 
   
   
 
  1. docker pull registry.cn-hangzhou.aliyuncs.com/mitchell/eureka-server:latest

  2. docker stop eureka-server

  3. docker rm eureka-server

  4. docker run --name eureka-server -p 9001:9001  -d registry.cn-hangzhou.aliyuncs.com/mitchell/eureka-server:latest

然后保存后进行Gitlab的WebHook配置【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

配置这里【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

这里的内容填【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

填好后点add WebHook添加成功 接着,我用的是Docker镜像推送,我需要在jenkins的宿主机中去登录一次我Docker的私有仓库,然后在修改下 docker-compose.yml文件将 /root/.docker/config.json映射到jenkins容器中去,镜像才能推送到我的仓库中去,否则会没有权限,因为 docker-maven-plugin1.0的版本以后会默认的去读你的Docker配置,来进行仓库的推送,这里我演示是用的阿里云的镜像仓库,如果不想自己搭的话也可以去使用阿里云。【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab

我推送到master分支,如果你是内网的话 = = git访问不到你的jenkins机器的话,你自己点立即构建【转】简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab开始了自动构建等它构建完就可以了~~

还有一些改进的地方,将maven的仓库映射宿主机上去,这样每重启就不用再重新下包了,该流程是一个很简易的流程给大家一个引子但也满足一些需求,想要更加灵活能更加响应复杂的业务场景的话,可以去了解 jenkins piplinesalave这个就不在文中提及了涉及知识的广度会比较多

上一篇:





最好的赞赏

就是你的关注





以上是关于转简易的微服务持续集成方案,SpringBoot+Docker+Jenkins+Gitlab的主要内容,如果未能解决你的问题,请参考以下文章

持续集成工具篇:Jenkins 与流水线管理转

springboot 微服务之集成RabbitMQ消息中间件

微信公众号吸粉简易新策略(自整理持续待更新)

springboot 整合 apache camel实现企业级数据集成和处理

springboot 整合 apache camel实现企业级数据集成和处理

linux服务器中Jenkins集成gitGradle持续构建Springboot项目