关于持续化集成的相关内容如下:
什么是持续集成
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就锋仿意味着每天可能会发银蔽纤生多次集成。每次集成都通过自动化的构建包括编译,发布,自动化测试来验证,从而尽早地发现集成错误。让团队能够更快的开发内聚的软件。持续集成的作用有:
1、减少风险,一天中进行多次的集成,并做了相应的测试,这样有利于检查缺陷,了解软件的健康状况,减少假定;
2、增强并陵项目的可见性,持续集成让我们能够注意到趋势并进行有效的决策;
3、建立团队对开发产品的信心,
持续集成的好处?
减少风险。可以节省时间、费用和工作量。
持续集成
可以让您在任何时间发布可以部署的软件。增强项目的可见性。建立团队对开发产品的信心。
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着早码每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
减少风险
一天中进行多次的集成,并做相应的测试,有利于检查缺陷,了解软件的健康状况,减少假定。
减少重复过程
减少重陆猛哪复过程可以节省时间、费用和工作量。说起来简单,做起来难。这些浪费时间的重复劳动可能在我们的项目活动的任何一个环节发生,包括代码编译、数据库集成、测试、审查、部署及馈。
通过自动化的持续集成可以将这些重复的动作都变成自动化的,无需太多人工干预,知隐让人们的时间更多地投入到动脑筋的、更高价值的事情上。
任何时间、任何地点生成可部署的软件
持续集成可以让您在任何时间发布可以部署的软件。从外界来看,这是持续集成最明显的好处,我们可以对改进软件品质和减少风险说起来滔滔不绝。
但对于客户来说,可以部署的软件产品是最实际的资产。利用持续集成,您可以经常对
源代码
进行一些小改动,并将这些改动和其他的代码进行集成。如果出现问题,项目成员马上就会被通知到,问题会第一时间被修复。
增强项目的可见性
持续集成让我们能够注意到趋势并进行有效的决策。如果没有真实或最新的数据提供支持,项目就会遇到麻烦,每个人都会提出他最好的猜测。
建立团队对开发产品的信心
持续集成可以建立开发团队对开发产品的信心,因为他们清楚地知道每一次构建的结果,他们知道他们对软件的改动造成了哪些影响,结果怎么样。
以上内容参考:
百度百科——持续集成
如何做到持续集成
燃歼 首先需要理解持续集成是什么样子的一个概念。我曾经体会过如下图的应用开发测试部署流程,基本每天都在做同样的几件事情:
1、打包,等待maven编译打包
2、发布测试环境,手动重启服务
3、通知测试组测试(邮件、用嘴巴喊等等方式...)
4、一顿grep查Exception,修复BUG,然后重复1、2、3、4
5、到达特殊的日子时,配合运维部署团队到测试环境手核段握动copy最新版WAR包到生产环境,23点的一瞬间执行一个脚本,时刻盯住脚本运行结果,最后验证
我们可以发现很多问题:
▫️编译打包的过程浪费开发资源,一次测试部署正常10到20分钟,那出现问题的情况...
▫️测试长时间怠工,资源利用不充分,处于一人干活多人旁观低绩效状态
▫️研发与测试的沟通方式高成本低效率
▫️BUG反馈方式低效
▫️生产环境得不到有效的管控以及安全保障,人工浪费
如果产品或者销售想要给客户演示测试环境,得到的结果可能是测试暂时不可用或者稍微等15到20分钟,是否能计算出他们的心理阴影面积?
DevOps的中心思想在于提高产品各个阶段的产出效率减少或者避开团队间的沟通障碍,推动产品的快速迭代,“快速失败”,从而实现持续交付、持续部署。而持续集成只是DevOps中的一个环节,下图清晰描述了CI各个周期活动。
我们可以发现较多优点:
1、流程全自动化,减少重复性的手工操作
2、持续发布测试,时刻保持可发布的产品
3、团队、高层对项目、产品的进展清晰可见,把控风险
4、资源效率有效利用,流动效率更快
因此,我们要做到持续集成,我们需要:
1、一套持续集成工具,大体可分为云集成与本地化集成系统,云集成比如TravisCI、cloudbees的云集成等,本地化集成主要是开源Jenkins的搭建,如果需要大规模部署Jenkins且有预算可使用Jenkins商业版
2、自动化测试工具、良好的测试用例编写
3、版本控制系统,git、gerrit推荐
4、构建、测试失败反馈机制,邮件、自动化运维(AI...)、改庆日志收集分析系统
5、一套需求、产品、开发、测试、部署、运维共同使用的敏捷研发管理系统,市场上有阿里云效、腾讯的TAPD等
6、...
