首页 > 其他分享 >如何进行持续集成?

如何进行持续集成?

时间:2023-04-24 17:36:36浏览次数:28  
标签:集成 持续 如何 构建 开发者 测试 服务器


如何进行持续集成?

在进行持续集成实践前,应当正确的选择并配置持续集成服务器。列出了所有的持续集成服务器 ,其中比较成熟的持续集成服务器包括:CruiseControl, Anthill, Bamboo, TeamCity, Continuum 等。CruiseControl作为开源产品,以其对于各种SCM以及构建工具的广泛支持而被许多开发团队所接受。

在一个典型的持续集成过程中:

- 开发者每次将代码提交到SVN之前,必须运行本地测试: 尽量保证不会破坏持续集成服务器的构建过程。

- 开发者每天进行多次提交:小步前进会大大减少服务器构建失败的概率,并且使得修复失败构建的时间大大缩短。

- 持续集成在一台服务器上不断运行:保证在稳定的环境中进行测试。

- 所有的测试必须全部通过:保证软件现有的功能不被破坏并且没有引入新的缺陷

- 生成构建结果(War, Jar,exe等) : 用以开展下一步的工作,譬如QA的探索测试等。

- 生成报表 :帮助管理人员评估开发状态。

- 修复失败的构建 : 失败的构建意味着软件现有的功能已经被破坏或者有新的缺陷被引入,修复的速度越慢使修复难度越高,并带来更大的损失。

持续集成坏味道:

- 持续编译

[现象]某些团队仅仅使用持续集成服务进行编译并生成最终的构建结果。

[影响]持续集成无法给开发人员,管理人员带来有价值的快速反馈。

[原因]开发团队可能缺乏编写易于测试的代码的能力,或者不了解现代软件开发中测试的流程和作用

[解决方案]测试优先,单元测试,功能测试,验收测试

- 构建长时间失败

[现象] 没有开发者愿意修复失败的构建,持续集成工具上的构建已经持续失败很长时间。

[影响] 开发者忽视持续集成服务器发布的结果,修复构建的成本和难度升高,开发团队,管理团队无法得到快速反馈,丧失安全感

[原因] 长时间不进行代码更新并一次提交太多代码,构建时间太长导致开发者缺乏耐心运行本地构建、任务过于复杂

[解决方案] 简单设计,小步前进,缩短构建时间

- 过多失败构建

[现象]持续集成服务器上有很多失败的构建、开发者常常在持续集成服务器上强制运行构建

[影响]团队其它成员无法提交代码,开发效率下降。

[原因] 通常这是项目中存在随机失败测试的信号,譬如,某些测试存在顺序依赖,时间敏感或者没有在测试结束时正确回收资源。这样,虽然开发者本地构建通过,却无法保证在持续集成服务器上成功构建,开发者会不断的尝试在服务器端重新运行构建试图得到一个成功的构建

[解决方案] 简单设计,编写正确的单元测试

- 构建时间过长

[现象]本地构建时间超过10分钟

[影响]生产率严重下降

[原因] 可能是由于重复测试引起,由于测试之间没有很好的隔离,导致同一逻辑在对不同对象进行测试时被重复测试、或者是软件规模大,测试多引起

[解决方案] 分布式构建

- 构建结果不醒目

[现象] 没有开发者意识到持续集成服务器上的构建已经失败了

[影响] 构建长时间失败,修复难度变大

[原因] 没有将构建结果明显的发布出来

[解决方案] 安装构建指示灯,或者在构建失败的时候播放音乐。

拥抱持续集成:

为了享受持续集成带来的诸多好处,开发者需要做到:

- 小步前进,频繁提交

- 不要提交本地测试失败的代码

- 编写可以自动进行的测试

- 编写可以快速运行的测试

- 如果构建失败,第一时间进行修复

- 如果构建失败,拒绝更新代码

标签:集成,持续,如何,构建,开发者,测试,服务器
From: https://blog.51cto.com/u_16087012/6221534

相关文章

  • 持续集成(第二版)
    持续集成(第二版)目录用持续集成构建特性持续集成实践只维护一个源码仓库自动化build让你的build自行测试每人每天都要向mainline提交代码每次提交都应在集成计算机上重新构建mainline保持快速build在模拟......
  • 持续集成
    持续集成原文链接:http://martinfowler.com/articles/continuousIntegration.html中译本下载:http://gigix.topcool.net/download/ContinuousIntegration.pdf译者语:2002年1月23日,我们很荣幸的在UMLCHINA组织的网上交流中聆听了MartinFowler先生的教诲。......
  • 如何学习,有效学习?
    如何学习建议是有目的性的去学,结合「学了这个可以做什么」,「自己是否感兴趣」,「这个知识是刚需的吗」等因素,而不是盲目地学习。回想起 _画船听雨 的采访,他也是建议大家需要什么就去学什么。学不完的知识举个例子「前端」,实际上前端也是永无止境的,整个编程方向都是如此,知识......
  • 如何写好简历
    如何写好简历简历是关于自己的正式文件,它里面除了有必要的个人信息外,主要是介绍自己的背景、技能和成就。此外,对于求职的简历,需要说明自己下一步甚至一生的职业目标。简历既然叫简历,就不能太长,通常不超过两页(A4纸正反两面)为佳。但职业目标和与具体职位有关的技能和成绩是不能漏......
  • 开源外卖系统源码解析:如何快速搭建属于自己的订餐平台?
    随着外卖市场的日益壮大,许多商家和个人都在考虑如何搭建一个属于自己的订餐平台。而在这个过程中,开源外卖系统源码无疑是一项不可或缺的资源。本文将以“开源外卖系统源码解析:如何快速搭建属于自己的订餐平台?”为主题,向您介绍外卖系统的相关内容,帮助您更好地了解如何利用现有的开源......
  • 如何实现一个工业级哈希表
    1、散列表碰撞攻击 在极端情况下,攻击者通过精心构造的数据,使得所有的数据都散列到同一个槽里,如果使用链表冲突解决方法,散列表就会退化为链表,查询时间复杂度就从O(1)退化为O(n)。可能因为查询操作消耗大量CPU或者线程资源,导致系统无法响应其他请求,从而达到拒绝服务攻击(DoS......
  • 如何通过C#/VB.NET代码将PowerPoint转换为HTML
    利用PowerPoint可以很方便的呈现多媒体信息,且信息形式多媒体化,表现力强。但难免在某些情况下我们会需要将PowerPoint转换为HTML格式。因为HTML文档能独立于各种操作系统平台(如Unix,Windows等)。并且它可以加入图片、声音、动画、影视等内容,还能从一个文件跳转到另一个文件,与世界各地......
  • 技术干货|如何利用 ChunJun 实现数据实时同步?
    实时同步是ChunJun的⼀个重要特性,指在数据同步过程中,数据源与⽬标系统之间的数据传输和更新⼏乎在同⼀时间进⾏。在实时同步场景中我们更加关注源端,当源系统中的数据发⽣变化时,这些变化会⽴即传输并应⽤到⽬标系统,以保证两个系统中的数据保持⼀致。这个特性需要作业运⾏过程中......
  • springboot集成redis时总报错Connection refused: no further information: localhost
    nacos上配置的关于redis的key值不是springboot需要的固定写法如:sping.redis.host=spring.redis.port=sping.redis.password=spring.redis.database=我写的是一个自定义的key如com.dream.redis.host改为springboot认识的即可其他和springboot集成的组件类似,切记......
  • Anki 如何同步 无需网络如何 手机和电脑进行同步
    Anki如何同步无需网络如何手机和电脑进行同步 直接覆盖同步,谁覆盖谁,谁就是最新的。 Anki本地文件    C:\Users\john\AppData\Roaming\Anki2\testAnki手机文件    \\P30\内部存储\AnkiDroid#test为当前项目的名字,所有的文件均在目录下,C:\Users\john\App......