Jenkins与docker持续集成与容器化部署

项目开发模型

  瀑布模型

  敏捷开发

  持续化集成

持续化集成

   涉及代码库服务器(git),持续化集成服务器(Jenkins),项目服务器或者项目测试服务器(tomcat)

Jenkins拥有2000多个插件能满足大部分需要

代码的构建风格有

  自由风格(图形化界面,各个阶段分模块)

  maven风格(图形化界面,各个阶段分模块)

  pipleline(流水线的风格)风格(使用脚本构建项目)---较为灵活后续可以与kebernate结合或者docker结合使用,将Jenkinsfile脚本文件放到代码中实现管理,同时可以将脚本中的一些参数抽取出来,由用户输入,文件默认名称Jenkinsfile,放在项目的根目录

先是项目从git仓库拉取(需要git认证,https认证或者ssh认证-git私钥),之后maven打包,将项目发布到tomcat服务上(需要配置服务器认证)

整个热部署过程及是maven当中那种热部署,不同的就是加了Jenkins中拉取git上代码的步骤

可以通过流水的方式构建项目并发送项目的构建结果到指定的邮箱中

项目重新部署的触发器有使用特定的token与url结合的方式构建触发项目的部署发布

设置每次隔一段时间扫描对应的项目,看项目代码是否发生变化从而构建对应的项目

可以通过git的钩子触发项目部署,设置每次push的时候构建发布项目

配置发送邮件服务器,从而得到对应的项目构建的结果

可以使用sonar qube做代码的校验,与jenkins结合使用

流程是:git上拉取代码,sonar qube代码校验,编译打包(maven),发布项目到tomcat上,将项目的构建的结果发送邮箱中

docker容器化部署,区别于之前的虚拟机构建项目,少了一层操作系统,使用dockerfile可以构建普通项目的镜像(分层镜像结构,如:基本的镜像jdk,之后就是jar包文件,多个镜像构成一个总的镜像,),镜像是所有项目的本源,

docker上所有的每一个应用都是运行在一个单独的容器当中的

harbor用来管理所有的项目镜像,将镜像部署到生产的部署

可以使用逗号分隔符分隔多个项目模块,循环操作打包编译多个项目模块,也可使用循环操作应用于发布到集群环境中及多态服务器上

jenkins会通过插件的方式来通知生产的服务器从harbor上拉去镜像,从而完成项目的部署

kubernetes(k8s)docker基础之上所创建的用于缓解jenkins服务器编译打包的压力,应用于中大型的公司中

kubernetes可以实现在slave上创建一个jenkins服务器及pod节点,构建之后将项目部署到生产服务器,之间创建的kubernetes的pod节点删除,从而达到缓解jenkins构建项目的压力

使用nfs可以实现文件目的一些共享操作,例如jenkins的配置文件,maven仓库地址

项目的在生产上执行的启动脚本deploy也是放在项目根目录保存的

其中git需要认证,harbor需要认证,sonar qube需要认证,每个认证都会生成一个,将这个id写入到对应的认证的项目脚本中

原文地址:https://www.cnblogs.com/chaojibaidu/p/13155822.html