Jenkins--基本介绍

Jenkins详解 https://blog.csdn.net/qq_26848099/article/details/78901240
 
Jenkins简述
Jenkins 是一款基于Java开发的流行的开源持续集成(Continuous Integration)工具,旨在提供一个开放易用的软件平台, 主要可用于持续、自动地构建/测试软件项目
Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
通常与版本管理工具、构建工具结合使用;常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
 
Jenkins的主要功能是:
  • 自动地构建/测试软件项目
  • 监控一些定时执行的任务
  • 远程部署、异常监控
使用 Jenkins 的阶段
  • 阶段一(人工发布)
  • 阶段二(free styleproject)
  • 阶段三(free styleproject+ shell)
  • 阶段四(pipline job+ shell )
  • 阶段五(pipline job+ groovy)
  • 阶段六(pipline job+ groovy + 消息队列 + 定时任务)
  • 阶段七(阶段六 + 即时通知)
阶段一(人工发布)
  • 流程:开发同学编译+打包+发包给运维,运维同学复制包到服务器。
  • 问题:人工操作容易失误,发布效率低。
  • 解决方案:引入jenkins自动发布。
阶段二(free styleproject)
  • 流程:创建 Jenkins 的 freestyle project 进行自动化发布。
  • 问题:当项目越来越多,开发语言越来越多(目前 http://asp.net、.netcore、nodejs(html/pm2)、java、python),需要部署的服务器越来越多之后,其中自定义的公共部分无法共用,类似开发中,代码无法重用、抽象不够。
  • 解决方案:使用脚本化的方式代替一些简单插件的使用。
阶段三(free styleproject + shell)
  • 流程:抽象、重构、提取,使用脚本的方式实现,弱化一些简单插件的使用。
  • 问题:在 Jenkins 中配置的 project 不便于使用源代码方式管理。很难进行团队协作。
  • 解决方案:使用 pipeline project,将 Jenkinsfile 提交到代码仓库。
阶段四(pipline job + shell)
  • 流程:把已经在 free style projetc 中抽象好的发布流程,在 pipeline project 中按照 stage 的方式进行编排,已经写好的脚本直接移植过来。
  • 问题:随着 shell 脚本不断增多,就会出现使用不同内核 shell 带来的一些问题,而且调试 shell 是一个让人抓狂的过程(曾经一个转移字符的问题,调了两天的时间)。
  • 解决方案:使用 groovy 代替 shell。
阶段五(pipline job + groovy)
  • 流程:和阶段四并无大的变化。
  • 问题:公司需要上市,每次的发布都需要都需要符合流程并在 jira 中保留证据,其中需要 DevOps 做的事情是,发布之前检查(一定要有测试通过+PO/管理者的同意),发布之后保留证据(发布完成标记+本次 Jenkins 发布 job 的截图)。
  • 解决方案:jenkins + 定时任务 + 消息队列。
阶段六(pipline job+ groovy + 消息队列 + 定时任务)
  • 流程:
  • 定时任务检查需要发布的任务
  • 定时任务通过调用jira JQL 的方式找到符合发布条件的 ticket,发送到发布消息队列。
  • 定时任务遍历发布消息队列
  • 通过 jenkins api 调用 jenkins 发布,在 jenkins 的 pipeline 中增加一个post, 判断 job 成功还是失败,发送到发布完成消息队列。
  • 定时任务遍历发布完成消息队列
  • 更新对相应的 ticket(发布完成标记+ jenkins job 的截图)。
  • 问题:虽然 DevOps 的体力活成功交给了代码,但是,发布完成通知项目干系人的事情还是人工通知,非常不及时,容易忘记,发布不透明。
  • 解决方案:阶段六 + 即时通知
阶段七(阶段六 + 即时通知)
  • 流程:团队使用钉钉、企业微信作为内部通讯工具,在 pipeline 的 post 中增加调用钉钉、企业微信的 api 发送消息。
 
 
 
 

posted @ 2019-12-10 17:43  盲仔不瞎忙  阅读(107)  评论(0编辑  收藏  举报