手机扫一扫访问本页内容

微信扫描点右上角"···"分享到好友或朋友圈

关闭
微信扫一扫可打开小程序

微信长按图片或搜“分享录”可打开小程序

关闭
SVN,微服务架构,技术,架构 ,

微服务架构[搭Docker+Jenkins+GitLab或SVN+Gradle或Maven+SpringBoot云上容器DevOps开发模式全自动化构建并部署项目]

本文图文讲解Docker+Jenkins+GitLabSVN+Gradle或Maven+SpringBoot云上容器DevOps开发模式全自动化构建并部署项目,是微服务架构系列的搭环境篇,后续的微服务都在此基础上运行。

本文主要以Docker+Jenkins+GitLab+Gradle+SpringBoot来讲解,SVN、Maven后续有空再补上,实际上比较普遍应该可以触类旁通,现在绝大部分公司应该还是用Maven而非Gradle的,毕竟用Gradle还是要求较高的,关于Gradle可以点过去看我之前的文章快速入门。SpringBoot这里以Eureka注册中心为例,后续微服务其他模块和脚手架可以照着搭起来。

这里先讲Jenkins使用插件自动部署方式,然后再讲解不额外安装插件自动部署方式,但实际生产应该是前面那种情况。

画个大概的思路图来更好的帮助理解:

SpringBoot项目

首先到spring官网快速初始化项目:

做些修改就可以搭好基于GradleSpringBoot项目(Eureka注册中心):

跑起来后就可以看到熟悉的Eureka界面了:

GitLab

关于GitLab的安装、新建项目、提交项目等这里不再多说了,不清楚的自己点过去看,在GitLab上创建访问令牌:

记得保存这个令牌不然关掉页面就看不到了就得重新创建:

Jenkins

接下来配置Jenkins,首先进入全局工具配置主要配置JDK、Git、Gradle:

接着Jenkins下载SSH插件:

我个人一向不喜欢用太多第三方的东西,毕竟多一个第三方的东西就会多一些隐患和风险,所以这里我精简到只下载一个SSH插件,其实要是直接开启docker远程访问连SSH插件都不用下载,但是这样要做认证和加密访问不然很不安全。

安装完有时候不会刷新页面,可以直接手动刷新看安装完重启了没。然后配置SSH连接信息:

然后在Jenkins上新建任务:

General这里主要填写描述、启用项目安全(这个主要为了加权限限制)、丢弃旧的构建(不填则每次的构建版本都会保存):

源码管理这里选Git并把上面GitLab的项目URL拷贝过来:

然后新建凭证,这里密码填写刚刚在GitLab那边创建的访问令牌而不是GitLab的密码,用户名可以填GitLab账号也可以填Jenkins账号这个好像没关系的,ID、描述随便填:

构建触发器这里选“轮询SCM”,日程表我这里填“H/10 * * * *”表示每隔十分钟查询一次:

关于这个日程表的值右边那个问号有说明,格式是五个星。第一个表示分钟,取值0~59;第二个表示小时,取值0~23;第三个表示一个月的第几天,取值1~31;第四个表示月份,取值1~12;第五个表示周几,取值0~7,其中0和7都代表周日。

构建环境这里选Send files or execute commands over SSH before the build starts,注意这个和Send files or execute commands over SSH after the build runs是上面安装了SSH插件后才有的,这一步只为了传送文件而已,Name会加载上面配置SSH的名称,其他项根据自己的实际情况填,Remote directory我是在/microservices/discovery-eureka(这个是docker服务器那边的目录,我build镜像后把这个目录挂载到容器中,这样可以灵活替换jar包):

构建这里先在“增加构建步骤”那里选“Invoke Gradle script”,上面全局工具配置配的Gradle在这里就可以直接选了,Tasks那里要加clean build或者build不然等下构建的时候不会build项目:

构建后操作这一步主要是build镜像并运行容器当然还可以添加诸如邮件通知的功能。Name还是上面配的那个SSH连接、Source files:build/libs/microservice-discovery-eureka-0.0.1-ALPHA.jar、Remove prefix:build/libs/、Remote directory:/microservices/discovery-eureka、
Exec command:sh /microservices/discovery-eureka/deploy.sh,其中deploy.sh里面有构建镜像和运行容器的命令:

需要注意的是deploy.sh第一行要加上!/bin/bash表示加载.bash_profile环境变量,不然会出现command not found -bash: cd: /microservices/discovery-eureka: No such file or directory。

点保存后Jenkins就开始轮询SCM了:

我们修改并提交代码到GitLab,看会不会轮询构建项目:

上面我们设置10分钟轮询一次,可以看到Jenkins检查到新提交代码而重新构建项目了:

看一下完整的控制台输出日志:

然后浏览器可以访问容器中跑起来的Eureka配置中心:

最后再简单讲解Jenkins不额外安装插件自动部署方式,主要差别就在任务配置的构建环境、构建、构建后操作这三项。其中构建环境不用填,构建那里追加个“执行shell”,构建后操作把“Send build artifacts over SSH”去掉:

下面是执行shell的内容,这里涉及到Docker开启远程访问

docker -H 192.168.1.4:2375 rm discovery-eureka -f || true
docker -H 192.168.1.4:2375 rmi xubingtao/discovery-eureka:0.0.1-ALPHA || true
docker -H 192.168.1.4:2375 build -t xubingtao/discovery-eureka:0.0.1-ALPHA . || true
#chmod a+w ~/workspace/test/build/libs/*
docker -H 192.168.1.4:2375 run -d --name discovery-eureka -p 7001:7001 -e "SPRING_PROFILES_ACTIVE=dev" -v /Users/xubingtao/docker/jenkins/jenkins_home/workspace/test/build/libs:/microservices/discovery-eureka xubingtao/discovery-eureka:0.0.1-ALPHA || true

其中“|| true”为了避免执行命令遇到错误而无法继续执行下去,这里还要注意挂载目录对应路径。

看下完整的控制台输出日志:

最后在浏览器可以访问容器中跑起来的Eureka配置中心:

源码和相关操作命令请访问我的公众号


展开阅读全文


上一篇:

下一篇:

您还可以访问本站的小程序、公众号等所有端,或者下载APP, 在小程序、APP上可以评论文章以及保存图片还有在线客服哦,如您有任何疑问或建议可向作者提出意见反馈
关注我的公众号每天为您分享各类有用信息
扫码打开小程序可评论文章保存图片,在“我的”有实时在线客服哦,看效果?
分享录多端跨平台系统
分享录交流群