`
ronghao
  • 浏览: 448955 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
E9473dd5-1985-3883-ac98-962354ca10b3
张小庆,在路上
浏览量:8546
社区版块
存档分类
最新评论

橘子红了

阅读更多


橘子红了很好看,CI(持续集成)红了就不是那么回事了。

 

一段时间,我们项目组受到了同事的激烈批评,其中的一个原因在于:CI红了,没人修复,周末红了两天。是啊,周末没人加班,绿了才是见鬼了呢。

 

我们并不服气,因为每次提交前我们都会在本地运行所有的测试,测试通过后我们才会提交,然而,一旦提交,CI却并不总是领情,一段时间里主要原因在于CI环境。我们在CI服务器上启动了Day CQ,每次代码提交后都会被打成Bundle,安装到Day CQ上,然后开始执行自动化测试。理论上OSGI框架应该支持无数次的热部署,可随着Bundle和代码基的扩大,情况开始变得糟糕,不知道什么时候,Day CQ就失去响应,测试自然就失败了。一段时间以来,一旦谁的提交破坏了CI,我们的CI猴就会站起来,很希曼的大吼一声:CQ挂了!然后刚才提交代码的那个倒霉蛋就屁颠屁颠去CI服务器重启Day CQ,剩下人则一起大笑,此时,提交拼的是人品。

 

这次也不能例外,重启Day CQ,手动告诉Cruise重新执行,于是CI就绿了。

 

于是,我们显得理直气壮,这不是我的错!

 

那么,这是谁的错呢?

 

在公司,不管是任何项目的开发,都会在项目开发地点的最高处架上CI环境的显示器,那里躺着Cruise那张让人欢喜让人忧的老脸。所有人都有基本的共识:一旦CI失败,必须要有人尽快修复,在修复之前,所有人都不能提交。CI是项目最重要的可视化手段之一。认知,就是测量。

 

回到问题上来,CI红了是问题吗?不是,这只是现象,CI所能做的只是暴露问题,事实上的问题是:由于CI的随机失败,整个团队的提交频率下降很快,经常有开发人员一天都提交不了的情况出现;由于提交频率下降,本地代码慢慢积累,开始出现在CI飘红基础上继续提交的现象,原因无外乎抱有侥幸心理:这是Day CQ的原因重启一下就好了,这样当大家忽略CI结果继续提交时,CI的根本好处就丢失了:自动阻止开发流程,迫使问题及时解决。

 

如何修复这个问题?实际并不复杂,我们改进了CI流程,在代码编译前增加了重启Day CQ环境的任务。一段时间后,通过持续集成状态分析工具 iAnalysehttp://code.google.com/p/ianalyse/,同事胡凯作品),我们发现CI的通过率从原先的50%迅速提高到90%,排队提交的现象得到缓解,同时,我们强制了一次破坏CI而迟迟不能修复的代码的回滚。

 

为什么最开始没有将重启Day CQ加入到CI流程,原因是最开始的代码规模并不大,频繁的安装Bundle并没有产生破坏Day CQ的影响,而每次重启需要大概1分钟,在最初整个自动化测试只需要5分钟左右的情况下,这一时间显得过长。随着时间的推移,自动化测试增长到20分钟左右,CI通过率逐渐下降,终于使得没重启Day CQ成为瓶颈。换句话说,就是CI流程也需要不断重构。通常,当人们熟悉一件事情后,就会忘掉为什么最开始事情就是这样,他们会认为这是很正常的事情,那怕有人指出来,最初的时候人们也会想:他并不了解实际情况。于是,人们会说,是的,他说的非常对,但是,我们有我们特殊的情况。

 

尽管最开始被指出问题时并不舒服,但是所有问题的解决都会经过这一阶段。最根本的,是在所有项目开发团队间都存在对CI的共识,总有些原则是需要遵守的。

1
1
分享到:
评论

相关推荐

    动网论坛 橘子红了

    动网论坛 橘子红了

    红米Note11T Pro 开发版刷机包

    设备名称 红米Note11T Pro ROM版本 V13.1.22.8.22.DEV MIUI版本 13 安卓版本 12.0 版本类型 开发版MIUI 刷包类型 卡刷包

    论文研究 - 有感官加工挑战的儿童的环境颜色和合作行为的探索性研究

    今天,职业治疗师和学前班老师面临的难题是创造一种环境,使一个教室内所有儿童的行为同时受益。 职业治疗师和教师为具有广泛能力的发展需求的儿童设计身体环境和社会环境。 对感觉刺激有非典型反应的儿童可能会受益...

    水果和蔬菜的图像数据集+训练源码100多种蔬菜水果共9万多张图像

    包括以下水果和蔬菜:苹果(不同品种:Crimson Snow、Golden、Golden-Red、Granny Smith、Pink Lady、Red、Red Delicious)、杏、鳄梨、熟鳄梨、香蕉(黄色、红色、Lady Finger) 、红甜菜根、蓝莓、仙人掌果、...

    图像识别与定位水果蔬菜大型数据集

    甜瓜馅饼、桑椹、油桃(普通、扁平)、坚果(森林、山核桃)、洋葱(红色、白色)、橘子、木瓜、西番莲、桃子(不同品种)、佩皮诺、梨(不同品种,阿巴特、福莱尔、凯撒、怪兽、红、石、威廉姆斯)、胡椒(红、绿、...

    swift-UILab02-lab-dumbo-web-102819

    橘子 紫色的 黄色的 橘子 黄色的 绿色的 蓝色 紫色的 绿色的 蓝色 在本实验中,您将实现此逻辑以更新应用程序UI以显示这些不同的颜色。 应用程序 具体来说,您的任务是为看起来像这样的应用程序生成用户界面: 用户...

    Fluent-icon-theme:Linux桌面的流畅图标主题

    -H 显示此帮助颜色变体标准标准彩色文件夹版本绿色绿色文件夹版本灰色的灰色文件夹版本橘子橙色文件夹版本粉色的粉色文件夹版本紫色的紫色文件夹版本红色的红色文件夹版本黄色的黄色文件夹版本默认情况下,仅选择...

    论文研究 - 越南热点橙色和二恶英TCDD污染土壤和沉积物的长期命运

    这个天堂历史悠久,有许多战争,外国占领以及最近的第二次印度支那战争(又名1965-1972年越南战争),使雨林和古老的湿地红树林脱叶,留下了受污染的土壤和沉积物热点。 在这场战争中,美国军方在针对共产主义叛乱...

    kinomaniak_backend:Kinomaniak应用程序API

    Kinomaniak 1.0-后端表头颜色颜色名称准备就绪红色的移民橘子迁移与模型绿色的迁移,模型与控制器蓝色设计黑色的连接表蓝色和橙色仅中间件用途粉色和橙色数据库中的静态数据

    人工智能机器人搬盒子和爱因斯坦斑马问题prolog.doc

    12. 小提琴家喜欢喝橘子汁 13. 养狐狸的人所住的房子与医生的房子相邻 14. 养马的人所住的房子与外交官的房子相邻 实验要求: 1. 用Prolog实现斑马问题的逻辑推理。 2. 在华为云的ModelArts中用Python实现该问题的...

    dotfiles-portable:我的笔记本电脑上的dotfiles(manjaro linux&Windows 10)

    点文件可移植 我在笔记本电脑上的Calculate Linux的dotfile 软体类 :用作“应用程序”菜单 窗口管理器 壳牌 文本编辑器 文字编辑器 合成器 终端仿真器 Notification守护程序 ...橘子 粉 紫色的 红 绿松石 黄色的

    palette:adlez主题的调色板

    32% 183,10%,36% 183,10%,42%白0白1预览十六进制#000000 #000000高速钢36,38%,73% 43,38%,74%绿色的红色的三文鱼黄色的橘子蓝色海洋品红预览十六进制#000000 #000000 #000000 #000000 #000000 ...

    resources:事物资源

    橘子 #ff9c00; 255 156 0 徽标语法突出显示 浅蓝 #58cad6; 88 202 214 徽标语法突出显示 白色的 #ffffff; 255 255 255 徽标语法突出显示 绿色的 #03e421; 3 228 33 徽标语法突出显示 黄色的 #...

    i2s-test-bridge:桌面系统的I2S测试桥

    适用于台式机系统的I2S测试桥 蓝牙控制器历来通过PCM / I2S采访提供SCO数据。 尽管大多数嵌入式Linux系统... 橘子 I2S配置: 奴隶 飞利浦I2S 8赫兹 16位 UART配置: 230400波特(足以用于1通道,8 kHz,16位= 128

    dotfiles

    橘子 “#da8548” “#dd8844” 绿色 “#98be65” “#99bb66” 蓝绿色 “#4db5bd” “#44b9b1” 黄色的 “#ECBE7B” “#ECBE7B” 蓝色 “#51afef” “#51afef” 深蓝 “#2257A0” “#2257A0” 品红...

    《水果》 新标签页 高清壁纸 火爆壁纸 主题-crx插件

    那圆圆的橘子像千万盏小灯笼,金灿灿,红彤彤,在墨绿的树叶里灼灼闪光。十几瓣月牙形的桔瓣儿紧紧地团在一起,就像一个嫩黄色的小南瓜,惹人喜爱。可自动更换壁纸,每次打开新标签页都会自动打开一张新的壁纸。时间...

    meteor-envy:当您的流星应用程序处于开发环境时,向 HTML 正文添加红色边框

    流星嫉妒问题我将 Meteor 用于应用持续集成的小型项目。 我倾向于在我的应用程序的开发版本和生产版本之间切换很多,我通常让它们同时在浏览器中的某个地方运行。 由于不断更新,它们非常相似,这让我很困惑。...

    Node-RED-weather-dashboard:节点红色+地下天气+ MQTT + Raspberry pi + ESP8266 + BME280

    节点红色天气仪表板节点红色和天气仪表板,MQTT,Raspberry Pi,ESP8266,天气图标从派生的天气图标使用创建的风向仪表板预览,可从http:// localhost :1880 / ui获得: 流预览,可从http:// localhost :1880...

    vividHues:允许您向Python终端添加一些颜色的模块

    生动的色彩 :rainbow: 轻量级Python模块,用于Python控制台中的彩色字符串可用颜色: 黑色的红色的绿色橘子蓝色紫色的青色白色的酸橙黄色的粉色的强调大胆的重置如何使用: print ( Clr . COLOUR + Hello world ! + ...

    SQL培训第一期

    001 2 10 橘子 联合主键订单Id、商品Id => 商品表 商品Id 商品名称 单价 订单表 订单Id 总金额 1.5.3 第三范式 1.5.3.1 规范 属性不依赖于其它非主属性,确保数据表中的每一列数据都和主键直接相关,而不能间接...

Global site tag (gtag.js) - Google Analytics