2024年10月什么是持续集成?持续集成的好处

 更新时间:2024-10-12

  ⑴什么是持续集成?持续集成的好处

  ⑵持续集成可以让您在任何时间发布可以部署的软件,项目的进度如何?哪些需求已实现?哪些代码已测试?代码的品质如何?持续集成及时呈现各种分析报告,建立团队对开发产品的信心持续集成可以建立开发团队对开发产品的信心,本文目录什么是持续集成持续集成的好处如何做到持续集成什么是持续集成From:王海鹏持续集成不是一项软件开发实践,持续集成是一种软件开发实践,这些自动化测试包括单元测试、集成测试、系统测试、验收测试、压力测试等,任何时间、任何地点生成可部署的软件持续集成可以让您在任何时间发布可以部署的软件,包括代码编译、数据库集成、测试、审查、部署及馈。

  ⑶From:王海鹏持续集成不是一项软件开发实践,而是多项软件开发实践的集合。团队在尝试引入这些开发实践时,不可避免要遇到一个问题:?如果不能很好地理解为什么,持续集成可能会进入误区,不能带来期望的效果。数据集成。数据是所有IT系统的核心,所有的架构都建立在数据的基础之上,其目的都是为了更好地处理数据。由于数据如此重要,所以我们派专人来负责管理和维护,这就是DBA。不幸的是,DBA与程序员似乎来自于不同的文化,他们讲的不是同一种语言。结果常常导致程序员基于自己对数据库的假设来开发程序,到了项目的后期才与真实数据库进行集成。这种假设会带来很大的集成和部署风险,影响代码的品质,可能引起大量的返工。对于针对已有数据集的开发,持续集成强调尽可能早地与实际数据集成,例如可以通过数据库复制,在一个几乎与生产环境一样的开发环境中进行开发。此外,DBA可以与开发团队密切配合,双方分享观点与经验,使数据库的组织方式也能够根据新的业务需求与时俱进。关于这一主题,请参考ScottW.Ambler的《数据库重构》。如果项目要开发一个全新的应用,还没有数据集存在,怎么办?办法很简单:一、尽早得到真实的数据集。二、随着开发团队对问题域的理解不断加深,应用功能的不断实现,让数据的组织方式也不断优化。静态代码检查。不同的人写的代码,其品质差异比较大。相同的人在不同时间写的代码,其品质也可以有相当的差异。为此,人们设计了代码评审活动,来提高代码品质。极限编程则通过结对编程的实践,将代码复查工作扩展到开发的每一分钟。这样做代价不菲。当然,根据克劳斯比的观点,以这样的代价换取高品质的产品,总的来说还是值得的。但是人们总是在想,如果能够降低检查的成本,又能够获得检查的好处,岂不美哉?编码标准就是一个典型的例子。相信每一个严肃的开发机构都不会不提编码标准,但是检查代码是否符合编码标准却是一件耗时耗力的事情,这导致了在许多项目中,编码标准有名无实。自动化的代码检查工具承担了这项繁复的工作。像CheckStyle这样的工具,能够自动检查代码是否符合编码标准。项目以能够承受的代价,满足了编码标准。程序员也在这种检查中不断提高,养成良好的编码习惯。静态代码检查还能做更多的事。出于种种原因,我们希望代码能够做到“低耦合,高内聚“。像PMD这样的代码依赖关系检查工具能帮助我们发现不正当的依赖关系。重复的代码是品质的大敌,PMD还能找出重复的代码。人们在使用某种编程语言时,会有一些容易犯的错误,像FindBugs这样的工具能够帮助我们找出这些错误。静态代码检查不是要完全替代评审活动,但它能够让我们从繁复的低创造性活动中解放出来,专注于创造性的思维和活动。工具的归工具,人的归人。自动化测试。利用现有的技术,我们可以用能够承担的成本,将许多的测试自动化。这些自动化测试包括单元测试、集成测试、系统测试、验收测试、压力测试等。而通过持续集成来持续进行自动化测试,将带来许多好处。自动化测试减轻了开发团队的压力,让大家对系统有信心,使工作的气氛变得更轻松。有了自动化测试的保护,开发者也敢于不断对系统进行改进,添加新的特征和改进代码品质。当系统有机会越来越好时,我们才可能创造出了不起的软件。自动化测试降低了测试和修改的成本。错误越早发现,更正它的成本就越低。自动化测试加速了开发/测试循环,从而使修正错误的成本降低。容易测试的系统就容易增强和维护,难测试的系统就难增强和维护,不可测试的系统基本上可以排除在我们的考虑之外。测试成本低的系统才是开发维护成本低的系统。自动化测试报告了系统的真实进度。哪些需求已实现?现有的架构和实现是否能满足性能需求?自动化的验收测试和压力测试会告诉我们准确的答案。在许多情况下,我们都有理由让需求可测试,让测试能够自动执行。自动化部署。系统能否部署到目标生产环境?是否需要进行一些数据迁移和应用升级?配置文件是否正确?理解这些问题的最好方式就是将部署过程自动化。通过向近似于生产环境的目标环境持续部署,确保部署过程没有问题。在自动化部署成功后,再对部署好的系统执行验收测试和压力测试。持续部署可以尽早发现部署过程中的问题,降低系统上线时的风险。提高项目可见性。项目的进度如何?哪些需求已实现?哪些代码已测试?代码的品质如何?持续集成及时呈现各种分析报告,让开发团队和管理层了解项目的真实状况,从而制定正确的决策。“不识庐山真面目,只缘身在此山中“的感觉一去不复返。一般来说,最成功的人拥有最好的信息。?因为持续集成将改善软件的质量,降低风险,使软件开发变得更有效率,让大家能够“愉快工作,幸福生活“,而不是“加班工作,维持生活“。这不是唯一的标准答案,每个团队都可以思考讨论,得到属于自己的答案。关于持续集成的更多内容,请参考《持续集成》一书。

  ⑷减少风险。可以节省时间、费用和工作量。持续集成可以让您在任何时间发布可以部署的软件。增强项目的可见性。建立团队对开发产品的信心。

  ⑸持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试来验证,从而尽早地发现集成错误。

  ⑹一天中进行多次的集成,并做相应的测试,有利于检查缺陷,了解软件的健康状况,减少假定。

  ⑺减少重复过程可以节省时间、费用和工作量。说起来简单,做起来难。这些浪费时间的重复劳动可能在我们的项目活动的任何一个环节发生,包括代码编译、数据库集成、测试、审查、部署及馈。

  ⑻通过自动化的持续集成可以将这些重复的动作都变成自动化的,无需太多人工干预,让人们的时间更多地投入到动脑筋的、更高价值的事情上。

  ⑼任何时间、任何地点生成可部署的软件

  ⑽持续集成可以让您在任何时间发布可以部署的软件。从外界来看,这是持续集成最明显的好处,我们可以对改进软件品质和减少风险说起来滔滔不绝。

  ⑾但对于客户来说,可以部署的软件产品是最实际的资产。利用持续集成,您可以经常对源代码进行一些小改动,并将这些改动和其他的代码进行集成。如果出现问题,项目成员马上就会被通知到,问题会第一时间被修复。

  ⑿持续集成让我们能够注意到趋势并进行有效的决策。如果没有真实或最新的数据提供支持,项目就会遇到麻烦,每个人都会提出他最好的猜测。

  ⒀建立团队对开发产品的信心

  ⒁持续集成可以建立开发团队对开发产品的信心,因为他们清楚地知道每一次构建的结果,他们知道他们对软件的改动造成了哪些影响,结果怎么样。

  ⒂以上内容参考:百度百科——持续集成

  ⒃首先需要理解持续集成是什么样子的一个概念。我曾经体会过如下图的应用开发测试部署流程,基本每天都在做同样的几件事情:、打包,等待maven编译打包、发布测试环境,手动重启服务、通知测试组测试(邮件、用嘴巴喊等等方式...)?、一顿grep查Exception,修复BUG,然后重复、、、、到达特殊的日子时,配合运维部署团队到测试环境手动copy最新版WAR包到生产环境,点的一瞬间执行一个脚本,时刻盯住脚本运行结果,最后验证?我们可以发现很多问题:??编译打包的过程浪费开发资源,一次测试部署正常到分钟,那出现问题的情况...???测试长时间怠工,资源利用不充分,处于一人干活多人旁观低绩效状态???研发与测试的沟通方式高成本低效率???BUG反馈方式低效????????????????????????????????????????????????生产环境得不到有效的管控以及安全保障,人工浪费如果产品或者销售想要给客户演示测试环境,得到的结果可能是测试暂时不可用或者稍微等到分钟,是否能计算出他们的心理阴影面积?DevOps的中心思想在于提高产品各个阶段的产出效率减少或者避开团队间的沟通障碍,推动产品的快速迭代,“快速失败”,从而实现持续交付、持续部署。而持续集成只是DevOps中的一个环节,下图清晰描述了CI各个周期活动。我们可以发现较多优点:?????????????????????????????????????????????????、流程全自动化,减少重复性的手工操作????????????????????????????????????、持续发布测试,时刻保持可发布的产品????????????????????????????????????、团队、高层对项目、产品的进展清晰可见,把控风险??????????????????????、资源效率有效利用,流动效率更快因此,我们要做到持续集成,我们需要:????????????????????????????????????、一套持续集成工具,大体可分为云集成与本地化集成系统,云集成比如TravisCI、cloudbees的云集成等,本地化集成主要是开源Jenkins的搭建,如果需要大规模部署Jenkins且有预算可使用Jenkins商业版?????????????????????????????????????、自动化测试工具、良好的测试用例编写????????????????????????????????????、版本控制系统,git、gerrit推荐?????????????????????????????????????????、构建、测试失败反馈机制,邮件、自动化运维(AI...)、日志收集分析系统?????????、一套需求、产品、开发、测试、部署、运维共同使用的敏捷研发管理系统,市场上有阿里云效、腾讯的TAPD等???????????????????????????????????????????????、...

您可能感兴趣的文章:

相关文章