橘子红了很好看,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) 、红甜菜根、蓝莓、仙人掌果、...
在第一页,课程用谜语的形式引入了水果——橘子:“小小红坛子,装满红饺子,吃掉红饺子,吐出白珠子。”这样的开场不仅趣味性十足,还能让学生在猜谜的过程中思考橘子的外观和特性。第二页鼓励学生亲自品尝橘子,...