本文转自微信号EAWorld。扫描下方二维码,关注成功后,回复“普元方法+”,将会获得热门课堂免费学习机会!本文转自微信号EAWorld。本文转自微信号EAWorld。扫描下方二维码,关注成功后,回复“普元方法+”,将会获得热门课堂免费学习机会!本文转自微信号EAWorld。
企业做DevOps平台,本质上是做企业的IT生产线,最终是实现整个企业级的数字化生产线。构建作为落地DevOps平台必不可少的环节之一,是持续集成、交付和部署的基础。本文我们从DevOps的CICD总体思路出发,和大家分享一下DevOps是如何做构建管理的。
目录:
一、CI/CD总体思路
二、构建定义与任务编排
三、构建策略
四、构建执行与跟踪
五、总结
一、CI/CD总体思路
在DevOps中,做到持续构建是基本的,其中复杂的地方主要是对多种环境的构建支撑。项目中有用maven编译的、有用ant编译的,如果有移动应用,有android系统的、ios系统的,还有一些前端应用的编译,比如:nodejs,这么多不同的环境我们怎么支持?另外,构建过程中还需要考虑和代码质量分析,单元测试、介质上传等能力的结合,这样的构建过程其实也是一个工作流程。
举个最典型的例子,比如:构建时,先要进行maven编译,编译过程中包含单元测试,然后进行代码质量分析,之后将交付物上传到二方库,最后还要看到构建详情、日志、单元测试报告、代码质量分析报告等详细情况,可以查看并下载介质。只有完成了这样一个过程才能说基本做到了持续集成。
我们的DevOps中持续集成与持续部署的总体设计思路就是在DevOps中进行设计,然后通过Jenkins执行的方式。DevOps负责进行构建定义或部署架构的设计,生成Jenkins的pipeline job的配置文件;然后Jenkins根据这个配置文件创建并执行pipeline job;DevOps再通过Jenkins的Rest API跟踪执行进度和结果。
之所以用Jenkins,正是因为它强大的集成能力和基于groovy脚本的可扩展工作流设计。Jenkins实现了与众多插件的集成,可以通过groovy命令调用git、maven、npm、gradle、shell、junit、sonarqube、ansible、docker、openshift、kubernetes等插件,让我们的集成工作非常简便。其次,Jenkins的核心Pipeline的实现方式就是使用Groovy脚本来表述复杂的流程,既可以支持点状的持续集成也可以支持线状的持续部署,能够支持复杂的构建和发布流程。关于Pipleline的介绍大家可观看我们的短视频:Jenkins集成(http://p.primeton.com/articles/599e770e4be8e65e9c008522)。
此外,顺便分享一下我们集成Jenkis时遇到的一些难点。
首先是执行效率问题,我们的DevOps通过API启动Jenkins时,Jenkins先排队调度再执行的机制造成启动较慢,比如会等待5,6秒,有时甚至是10几秒的情况,之后才会开始执行真正的脚本,用户体验较差。这方面我们自己通过异步和队列来解决用户体验问