开发流程大致可分为一下几个阶段:
编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署
持续集成(Continuous Integration)
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
持续集成.png所具备功能
- 全面的自动化测试:这是实践持续集成&持续部署的基础,同时,选择合适的自动化测试工具也极其重要;
- 灵活的基础设施:容器,虚拟机的存在让开发人员和 QA 人员不必再大费周折;
- 版本控制工具:Git, SVN, CVS...
- 自动化的构建和软件发布流程的工具:Jenkins, Buildbot, Travis CI, Strider, Go, Integrity...
- 反馈机制:如构建/测试的失败,可以快速地反馈到相关负责人,以尽快解决达到一个更稳定的版本。
优点
- 减少风险:一天中进行多次的集成,并做了相应的测试,这样有利于检查缺陷,了解软件的健康状况,减少假定。
- 快速发现错误:每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
- 防止分支大幅偏离主干:如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
- 减少重复过程:可以将重复的编译、集成、测试、审查、部署等动作都变成自动化的,无需太多人工干预,让人们的时间更多的投入到动脑筋的、更高价值的事情上。
- 增强项目的可见性:让我们能够注意到趋势并进行有效的决策。
- 建立团队对开发产品的信心:因为他们清楚的知道每一次构建的结果,他们知道他们对软件的改动造成了哪些影响,结果怎么样。
- 让产品可以快速迭代,同时还保持高质量。
持续交付(Continuous Delivery)
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。
持续交付.png优点
- 快速发布。能够应对业务需求,并更快地实现软件价值。
- 编码->测试->上线->交付的频繁迭代周期缩短,同时获得迅速反馈;
- 高质量的软件发布标准。整个交付过程标准化、可重复、可靠,
- 整个交付过程进度可视化,方便团队人员了解项目成熟度;
- 更先进的团队协作方式。从需求分析、产品的用户体验到交互 设计、开发、测试、运维等角色密切协作,相比于传统的瀑布式软件团队,更少浪费。
持续部署(Continuous Deployment)
持续部署是指当交付的代码通过评审之后,自动部署到生产环境中。持续部署是持续交付的最高阶段。这意味着,所有通过了一系列的自动化测试的改动都将自动部署到生产环境。
持续部署.png为什么说持续部署是理想的工作流程?
“开发人员提交代码,持续集成服务器获取代码,执行单元测试,根据测试结果决定是否部署到预演环境,如果成功部署到预演环境,进行整体验收测试,如果测试通过,自动部署到产品环境,全程自动化高效运转。”
持续部署主要好处是,可以相对独立地部署新的功能,并能快速地收集真实用户的反馈。
原文地址:http://jimmylts.com/2017/05/01持续集成环境搭建(一)-初识持续集成/
网友评论