持续集成(Continuous integration)是一种软件开发实践,即团队开发成员常常集成它们的工做,经过每一个成员天天至少集成一次,也就意味着天天可能会发生屡次集成。每次集成都经过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误 [1]。git
持续集成 至关于将传统工业的 流水线 做业的思想应用到现代的 软件工业 中来。不一样之处在于,工业流水线 最终出来的是一个一个的产品复制体,可是 软件流水线 最终出来的是一代一代更新迭代的版本,可是共同点在于:总体产出的效率将极大地增长。github
首先说CI解决了的问题:web
这些都是 现代敏捷软件工程 理论中所要求达到的目标。服务器
[1] | 百度百科.持续集成.2015 |
传统开发协做模式的各类角色:架构
并且在传统的过程当中,存在以下特色:运维
而 持续集成 的工程思想引进以后,会发生以下变化:工具
也就是说,全部的角色都要先是一个 开发人员 而后才是一个 XX领域人员。这种模式在目前IT智力密集的互联网行业特别明显,在一些主要的在线招聘平台里面能够看到大的互联网公司的招聘信息基本都是:单元测试
而后给的薪水待遇都是开发人员的待遇,甚至目前不少公司的岗位编制都是属于开发人员之列了。学习
在互联网行业里面,软件开发模式已经从 传统软件工程 向 敏捷软件工程 变迁,实现此思想的相应的方法也变迁,那么相应的从业人员的技能要求也要变迁。测试
换句话来讲:IT行业的领域岗位,必需要掌握开发技能,若是不作出一些改变和提高,那么接下来的现象就是开发人员全线开始占领IT领域类的岗位了。
持续集成的典型的工具就是开源系统 Jenkins。经过对 Jenkins 工具的应用的研究,绘制了一个全流水线的软件开发图,以下:
前期 CI 环境准备:
使用 Jenkins 工具将这些工具链都组合起来
将流水线调试成功,全部环境搭建好
以上至关因而CI体系的创建阶段,是会有必定的技术力量投入,可是后面的反复迭代过程,则是来收回这些成本的。
后期迭代工做流:
开发人员向git服务器指定分支提交了新的代码
git服务器的 webhook 接收到提交事件后向 Jenkins 服务器指定接口发起请求,执行构建脚本
Jenkins 执行自动化测试脚本
Jenkins 向 自动化发布 系统发起请求
自动化发布系统 进行自动灰度发布
触发 自动化测试系统
逐步全网发布
基本上,如上步骤能够全自动化无人值守完成。整个过程高效且不容易出错,对比手工式的生产模式,持续集成手段将极大地减小每次迭代的周期,保证总体项目能够按照极小的步伐和极高的频率进行稳步演进。
此文做为 持续集成 系列文章的开端,还有一些偏重于理论部分,以让你们对总体架构有所了解,同时也创建起现代的软件工程的总体观念。
后续的部分将侧重于环境搭建及相应的环境代码的开发的介绍,最后可以造成一套完整的可以提供生产力的 持续集成 系统。
做者: | Harmo哈莫 |
---|---|
做者介绍: | https://zhengwh.github.io |
技术博客: | http://www.cnblogs.com/beer |
Email: | dreamzsm@gmail.com |
QQ: | 1295351490 |
时间: | 2015-11 |
版权声明: | 欢迎以学习交流为目的读者随意转载,可是请 【注明出处】 |
支持本文: | 若是文章对您有启发,能够点击博客右下角的按钮进行 【推荐】 |