• Ledge
  • 腾讯云-云开发
  • 携程
  • 小米
  • 美团
  • 大型银行转型
  • 招商银行
  • Atlassian
  • Netflix
  • HP
  • Etsy
  • DaoCloud
  • 中国银行
  • 农业银行
  • 华为
  • 百度
  • 腾讯
  • 博云
  • 阿里巴巴
  • 政采云
  • 大搜车
  • 微博
  • 优酷
  • Bilibili

小米

背景介绍

小米研发效能领域的三个阶段

开源工具采用
商业采购
自研研发交通平台

开源工具采用

  • 代码质量工具
    • Phabricator
      • Facebook出品,小米早期员工引入
      • 更人性化的代码Diff功能
      • 代码检查集成:Sonar、JsLint等
    • SonarQube
      • 开源代码质量管理平台
      • 支持Java、C\C++、C#等语言
      • SonarLint\Mvn+Jacoco+Jenkins
  • 二进制存储与管理
    • Nexus
      • 优秀的Maven仓库管理器
      • 强大的仓库管理与搜索功能
  • 持续集成持续交付引擎
    • Jenkins
      • 扫描、发布类需求
      • 监控、测试类需求
    • Jenkins on K8S
      • 资源:物理理机做Slave资源利利⽤用率低
      • 隔离:基于Docker提供更更好的隔离性

商业采购

进行商业采购的诉求

基于开源方案遇到困难
性能瓶颈
业务需求⽇益多元化,但团队规模有限
扩展更多的能力
更多元化的代码质量检查
审计需求
二进制、镜像安全扫描

采购经验总结

分类收益风险
自研平台功能产出
技术积累
人员变动
技术攻关失败
产品可用性差
采购更快价值交付
更快获取业界一流经验
数据泄漏
供应商不可控因素无法提供服务等
  • 货比三家,一定要多试用比较
  • 售后服务与咨询很重要
  • 采购可整合性更好的产品
  • 尽量离线部署以防止数据泄露

自研研发效能平台

  • 自研研发效能平台的目标:标准化整合各⼯具,⽽非⾃研每⼀个独⽴工具
    • 理清组织结构、项目结构(符合某特征的必须审计的项目有哪些?没人能清楚)
    • 降低接入成本(N个平台M个场景J个团队,经常做重复接入、遇到同样的问题)
    • 标准化打通各个系统整合工具,赋能研发(如果打通部署?如果集成诸如压测等其它系统)

架构分析:

平台层
运维平台
小米私有云
小米生态云
能力层
团队注册
一键接入
检测扫描工具集成
发布部署
标准化工具接入
工具层
Gitlab
Phabricator
Jenkins on K8s
代码质量扫描
安全/法律合规扫描
二进制&产出物存储
二进制安全扫描
二进制法务审计扫描
部署服务
数据层
数据智能应用
研发效能数据仓库

核心实现:Jenkins无状态优化

  • Job数据无状态化
    • Job的参数配置、Jenkinsfile等均由平台管理
    • 每次Build时依次选集群、新建或更新Job、执行
    • 执行结果通过插件同步导入ES
  • 集群信息无状态化