橘子红了很好看,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环境的任务。一段时间后,通过持续集成状态分析工具
iAnalyse(http://code.google.com/p/ianalyse/,同事胡凯作品),我们发现CI的通过率从原先的50%迅速提高到90%,排队提交的现象得到缓解,同时,我们强制了一次破坏CI而迟迟不能修复的代码的回滚。
为什么最开始没有将重启Day
CQ加入到CI流程,原因是最开始的代码规模并不大,频繁的安装Bundle并没有产生破坏Day CQ的影响,而每次重启需要大概1分钟,在最初整个自动化测试只需要5分钟左右的情况下,这一时间显得过长。随着时间的推移,自动化测试增长到20分钟左右,CI通过率逐渐下降,终于使得没重启Day CQ成为瓶颈。换句话说,就是CI流程也需要不断重构。通常,当人们熟悉一件事情后,就会忘掉为什么最开始事情就是这样,他们会认为这是很正常的事情,那怕有人指出来,最初的时候人们也会想:他并不了解实际情况。于是,人们会说,是的,他说的非常对,但是,我们有我们特殊的情况。
尽管最开始被指出问题时并不舒服,但是所有问题的解决都会经过这一阶段。最根本的,是在所有项目开发团队间都存在对CI的共识,总有些原则是需要遵守的。
分享到:
相关推荐
"动网论坛 橘子红了"是一个与网页模板相关的主题,这通常指的是一个针对动网论坛(DvBBS)设计的特定主题风格,可能是为了改变论坛的外观和用户体验。DvBBS是中国早期非常流行的一款开源论坛软件,它提供了丰富的...
4. 语言表达部分涉及文学常识,如作者琦君的生平及其代表作,如《橘子红了》和《烟愁》等,提醒学生关注文学作品和作者背景。 5. 文言文阅读部分选取了《孙权劝学》和《炳烛夜读》两篇文章,前者强调持续学习的重要...
琦君,原名潘希真,她的代表作如《橘子红了》、《七月的哀伤》、《桂花雨》及《琦君寄小读者》等,都围绕着亲情、友情展开,充满了中国传统的情感底蕴。本文旨在探讨《春酒》的教学教案,包括教学重点、难点以及如何...
她的笔下,常常见到对故乡和童年的深切回忆,比如在《烟愁》和《橘子红了》等作品中,都可以看到她对过去美好时光的怀念和对家乡风土人情的细腻描绘。 春酒,作为中国传统节日中的特殊饮品,在琦君的笔下不仅仅是一...
她的代表作中,《烟愁》、《橘子红了》等作品均以独到的女性视角,细腻入微地展现了人性的美好与复杂。而《春酒》作为其作品之一,同样以其质朴的语言、真实的情感打动人心。 课件中详细地介绍了春酒的起源和制作...
2. 文学知识:《春酒》的作者是琦君,她是一位台湾作家,以散文和儿童文学作品著称,代表作有《烟愁》、《细纱灯》、《橘子红了》、《琦君散文》等。琦君的作品常以她的故乡——浙江温州为背景,描绘了一幅中国农村...
2. **文学常识**:介绍《春酒》的作者琦君,她是台湾作家,代表作品包括《烟愁》《细纱灯》《三更有梦书当枕》《橘子红了》等,本文选自《琦君散文》。琦君的作品多以她的家乡浙江温州为背景,描绘了中国农村社会的...
《橘子》这篇文章给我带来的感悟颇深,它不仅揭示了一个普通乡村女孩的纯真与善良,也让我重新审视了外表与内在的关系。这篇文章的核心在于,它告诉我们,真正的美不在于外在的装饰,而在于内心的纯真和无私的爱。 ...
设备名称 红米Note11T Pro ROM版本 V13.1.22.8.22.DEV MIUI版本 13 安卓版本 12.0 版本类型 开发版MIUI 刷包类型 卡刷包
本篇文档记录了一个幼儿园小班的主题活动案例——“橘子船”,该活动旨在通过孩子们熟悉的水果橘子,激发他们的观察力、想象力和创造力,同时融入了生活技能的学习和社交情感的培养。以下是活动的详细解析: 1. **...
标题和描述中提到的"红米note9 Pro搞机快捷工具"主要针对的是对红米note9 Pro手机进行个性化和高级设置的操作,涉及到的主要知识点包括电脑刷入GSI(Generic System Image)、安装三方官方Recovery以及在不同Android...
今天,职业治疗师和学前班老师面临的难题是创造一种环境,使一个教室内所有儿童的行为同时受益。 职业治疗师和教师为具有广泛能力的发展需求的儿童设计身体环境和社会环境。 对感觉刺激有非典型反应的儿童可能会受益...
- 提供一棵装满各种水果的树模型,包括红苹果、红樱桃、红草莓、桃子、黄橘子、梨、广柑、香蕉、紫葡萄、大西瓜等图片或实物,以便于孩子们视觉上的认知和联想。 3. **活动过程**: - **活动导入**:通过展示苹果...
标题“橘子:是橙色吗?让我们找出来”似乎是一个引人入胜的话题,但在这个语境下,它可能是指一个编程项目或讨论,旨在探索颜色表示或处理的编程问题。描述中的“oranger”可能是一个编程项目的名字或者一个特定的...
在这个阶段,教师启发孩子们将各种水果元素融入到歌曲的歌词创作中,如樱桃、桃子、橘子、梨等。孩子们在教师的引导下,不仅学会了改编歌词的技巧,还通过这一过程了解到了更多种类的水果及其特性,同时树立了“多吃...
- 橘子:亮部用橘黄和淡黄,中间色是橘黄和桔红,暗部是桔红和玫瑰红。 - 陶罐:亮部是固有色土黄、紫罗兰和白。 - 面包:亮部是白柠檬黄和中黄,中间色是橘黄、土黄和中黄,暗部用熟褐、少量土红和土黄。 - ...
包括以下水果和蔬菜:苹果(不同品种:Crimson Snow、Golden、Golden-Red、Granny Smith、Pink Lady、Red、Red Delicious)、杏、鳄梨、熟鳄梨、香蕉(黄色、红色、Lady Finger) 、红甜菜根、蓝莓、仙人掌果、...
- 桔黄色是一种较为明亮的橙色,接近于橘子的颜色。 15. **鹿皮色 (`moccasin`)**: `#FFE4B5` - 鹿皮色是一种略显淡黄色的橙色,给人一种温暖而舒适的感觉。 16. **纳瓦白 (`navajowhite`)**: `#FFDEAD` - ...
甜瓜馅饼、桑椹、油桃(普通、扁平)、坚果(森林、山核桃)、洋葱(红色、白色)、橘子、木瓜、西番莲、桃子(不同品种)、佩皮诺、梨(不同品种,阿巴特、福莱尔、凯撒、怪兽、红、石、威廉姆斯)、胡椒(红、绿、...
通过找朋友的游戏,学生们可以学习如何使用形容词来描绘水果的特征,例如红彤彤对应苹果,皮绿瓤红对应西瓜等。 2. 水果描述:课件中的谜语和描述锻炼学生的观察力和想象力,比如青青藤上的果实是西瓜,而挂满珍珠...