问题的引出:

有一段我们的前端构建总会现git上分支名称中的版本号和工程里的版本号不一致的问题:这样会导致构一个问题:构建后的产品名称叫做1.1,但是进入app的关于页面,看到的版本还是1.0。这会让人很困惑,也会加大弄混被测物版本的风险。
最初,我们向开发提了这个问题,并且写了一份简要的说明文档贴在内部wiki上。结果发现效果并不理想,一部分开发会依照约定这么做,但是一部分开发不会这么做。由于多人多feature开发,这样的问题每2周就会出现一次,还很不好排查。维护Jenkins的小伙伴很郁闷,因为这样老去找开发同事费时费力。
经过讨论,我们加入了一个fail条件: “如果git分支名称上的版本号和工程文件中的版本号不一致,则构建失败,并且明确给出失败原因(wiki的链接贴出来)”
我们默默的加入了这个条件后,发现问题再也不存在了。从来没有开发找来,我们翻看构建历史,发现有这样的构建失败样例,但是后续开发就自助的修改了(给出wiki链接后,估计5分钟他们就能明白问题,并搞定)。

问题的总结:

1.在IT项目中我们常说一句话:约定大于配置。这句话在很大程度上是对的,但不一定完全奏效。上面就是一个反例。
2.口头约定不一定有效的情况下,如果成本不高,采取一些强制措施会有用。一个例子是:强制静态代码检查,虽然会给很多人带来痛苦,但会有效提高代码质量。
3.具体就这件事儿来说:在构建过程中做一定检查是必要的,以前忽略了这个问题。后续的改进工作是检查别的Job存不存在这样的检查点,如果有,加上。

最新文章

  1. 使用Web.Config Transformation配置灵活的配置文件
  2. 获取 苹果UDID 序列号
  3. 增强型for循环,用于遍历数组元素
  4. Material
  5. sql拆分查询
  6. BitmapSource ConvertTo Bitmap
  7. c扩展调用php的函数(调用实现php函数的c函数)
  8. 关于FastDFS Java客户端源码中的一个不太明白的地方
  9. U-boot新手入门
  10. javascript-for-loop-example--reference
  11. 关于IE8导航串行的问题
  12. 1137: 零起点学算法44——多组测试数据输出II
  13. 写出一条Sql语句:取出表Customer中第31到第40记录(SQLServer,以自动增长的Id作为主键,注意:Id可能不是连续的。
  14. Java对象的访问定位
  15. 转发 Delphi中线程类TThread 实现多线程编程
  16. cordova 开发笔记
  17. 模拟器运行报错:ld: symbol(s) not found for architecture x86_64
  18. C++的重载流输出运算符
  19. 阿里Java开发规范&谷歌Java开发规范&华为Java开发规范&Tab键和空格比较&Eclipse的Tab键设置 总结
  20. 彻底清除Github上某个文件以及历史

热门文章

  1. 利用批处理结合Msbuild实现快速编译
  2. linux系统管理命令kata练习
  3. TeamCity实战(2):NuGet服务器
  4. 一步步做程序优化-讲一个用于OpenACC优化的程序(转载)
  5. ckplayer插件播放视频
  6. 一篇RxJava友好的文章(二)
  7. linux服务器安装nginx及使用
  8. 12.1.0.2自适应特性导致SQL性能下降
  9. ios xmppFramework框架的导入步骤和介绍
  10. textkit