对中国开发者最具吸引力的科技企业有哪些?快来为你 pick 的企业投票! 了解详情
写点什么

百度技术沙龙第 16 期回顾:持续交付的魅力(含资料下载)

2011 年 8 月 01 日

在 7 月 23 日百度主办、InfoQ 策划组织实施的第 16 期百度技术沙龙活动上,来自百度高级工程师乔梁、腾讯持续集成专家陈小光、FreeWheel 工程经理党政法分别分享了各自在持续交付领域所取得的成果及经验,话题涉及百度在持续集成上的经验分享、FreeWheel 的持续交付历程以及腾讯搜搜是如何将包管理结合到持续交付中的实践等。本文将对他们各自的分享做下简单的回顾,同时提供相关资料的下载。

主题一:持续交付的魅力——百度持续集成经验分享视频,MP3 和 Slides 等资料下载

来自百度项目管理部的乔梁第一个为大家分享,重点介绍了“六步提交法”,六步提交法是根据业界多年实践总结的持续集成工作流程和规范,意义在于提高团队协作能力,高效开发软件应用,主要分为:

  1. ​把代码从版本库中检出到本地
  2. ​为新功能或修改某个缺陷而修改代码,增加测试
  3. ​运行第一次本地验证
  4. ​验证无问题后,再次与版本库中的代码合并,运行本地验证
  5. ​二次验证无问题后,提交代码到版本库
  6. ​关注持续集成服务器运行完提交构建,直至其成功

其中,有以下几点需要注意:

步骤一:必须在持续集成当前状态为绿色(即成功)时,才能检出代码;

步骤三:本地构建的目的是验证本人的修改没有问题;

步骤四:由于在你修改代码时,别人可能会提交代码,所以要与这些线上代码合并;只有当线上持续集成当前状态为绿色时才能迁出代码进行合并。 此外,本次构建的目的是验证合并后的代码没有问题。

​步骤六:代码提交者要一直关注由自己的提交所出发的持续集成线上构建,直至其成功。如果失败,必须作为最高优先级任务对其进行修复。

​此外,乔梁还介绍了持续集成的概念及特点,持续集成如何开始​,​最初的方法就是分支策略,同时倡导主干开发,实时集成的方法。通过将需求划分成多个小功能来实现,这样在一个星期之内就可以开发测试完成一个小功能点,​另外,还可使用配置开关进行隔离。

​最后,乔梁从主干开发、代码同源、分级测试、所有内容版本控制、功能开关以及一键式部署的角度总结了今天的案例分享。乔梁提出,要想让持续交付成为现实,需要做到以下几点:

  • ​持续集成和版本控制
  • ​全流程自动化
  • ​环境标准化
  • ​通过版本控制一键式发布

主题二:与大象共舞——持续交付高质量的产品视频,MP3 和 Slides 等资料下载

来自 FreeWheel 的党政法通过对开发过程中的四个关键阶段的介绍,说明了 FreeWheel 是如何通过技术手段应对挑战的。

​与大象共舞的含义是指,每个客户都很庞大,在项目的进展过程中,既要保证开发和项目实施的节奏,同时也要注意安全。换句话来说,在满足不同客户需求的同时,还要开发出高质量的产品。而 FreeWheel 采用的则是持续交付的方式来不断完善和发展产品。FreeWheel 主要注重持续交付过程中的四个环节。下面分别介绍每一个环节和 FreeWheel 的尝试,​持续交付第一步,确定自己的步伐(Mind Your Step):

  • ​资源是有限的
  • 不要害怕同客户沟通计划(提前一个月预发布通知、上线通知等,这样的话可以保证开发计划的按时进行)
  • ​预设好客户的期望(事情不会像想象中的那么容易,尤其是涉及到很多外部接口开发和联调的情况,所以要通过持续交付的方式来同客户达成共识:有问题不可怕,会及时的改善)

这一步很关键,尤其是对 B2B 公司来讲,但这种合作关系不可能一开始的时候就达成,需要慢慢的同客户建立信赖的关系。第二个环节是开发过程中的持续集成,FreeWheel 采用的是 Hudson 做 CI 服务器配合自动化测试框架,并用邮件通知的方式实现。​集成服务器中有几点需要注意:

  • ​统一的工具和库
  • 编码风格和语法检查
  • ​对触发机制的检查
  • CI​要和自动化测试相结合
  • 及时的将集成的结果自动反馈(邮件的形式)​

第三个阶段是产品的可控部署,在此阶段,FreeWheel 分别采用了 Staging、Phase Rollout 配合自动化部署和快速验证工具,可以极大地降低新产品上线带来的风险,同时也保证了对客户的服务质量:

  • ​Staging 环境是生产环境的简化版,在物理上和流程上都保持与生产环境相同,唯一的差别仅仅是规模不同,因此,Staging 是 Production 的一个彩排,用来验证升级流程的正确性以及用真实的流量来验证新版本。
  • Phase Rollout 指的是分批次的部署,好处是在降低风险的同时增加了回滚机制,坏处是增加了部署的复杂度以及兼容性测试。

​最后一个阶段是在生产环境的持续测试,主要包括系统级别的监控(磁盘、CPU、IO 以及网络等),外部监控(主要采用的 Gomez),此外,还包含在生产环境的对真实用户的模拟来达到测试的目的。

主题三:包管理 & 持续交付助跑研发效率视频,MP3 和 Slides 等资料下载

来自腾讯搜搜的陈小光分别从 SOSO 的 CI 实践、包管理概念以及 CI& 包管理结合的实践等角度来分享搜搜在持续交付上的经验。陈小光谈到了搜搜构建脚本统一的解决方法:

  • ​步骤分离 -Build、UnitTest、AutoTest、CodeCheck
  • ​制定规范 - 执行各步骤的编写规范
  • ​功能提取 - 相似功能进行提取脚本实现

接下来陈小光介绍了包管理系统的概念以及包管理系统提供的主要功能:

  • ​完整性校验(checksum)
  • 数字签名(signature)
  • ​压缩存档(archive)
  • ​版本控制(version)
  • ​软件管理(find/install/upgrade/remove/configure)
  • ​依赖管理(dependency,包括编译依赖和运行依赖)

​最后,陈小光介绍了统一的持续集成系统:首先从 CM Server 检出指定代码到编译集群,编译集群中执行构建任务,构建完成后通过调用自动化测试任务进行自动化测试,测试完成后会自动将测试结果返回到编译集群中。测试成功时,会再将编译包上传到包管理服务器,后续的测试包和安装包的安装都将基于这个包管理服务器。另外,陈小光还通过具体的实例描述了包管理和持续集成结合的流程。

Open Space(开放式讨论环节)

和以往的环节一样,​为了让参会者能够有更多的时间进行相互的交流,本次活动依然设置了 Open ​Space(开放式讨论)环节。除了讲师​乔梁、党政法和陈小光外,SCM Life 创始人孙常波,Fizzback 工程师翁翔成也参与了小组讨论。在 Open Space 的总结环节,几位嘉宾​分别对讨论的内容进行了总结:

乔梁主要分享了企业内如何做好持续交付的话题,党政法小组主要围绕 TDD 及 UT 进行了讨论,陈小光小组讨论了如何让 CI 服务于整个开发流程的话题,孙常波则从配置管理实践的角度展开了讨论,最后第五组,由来自 Fizzback 的翁翔成分享了 CI 与 Debian 的安装包制作经验。

会后新浪微博 ID 为 @张权先生的参会者分享了他的感受:​​

​很有收获,特别是后面的分组讨论,乔梁的持续集成之路,人、流程、技术和工具很受启发。

此外,讲师 @乔梁 QL 也分享了参会感受:

  • 《持续交付的魅力》“六步提交法”中的两次本地构建中都做些什么?关键在于要在十分钟内完成,并给开发者一定的质量信心指数。在十分钟内能完成所有测试,就包括全部好了。如果办不到,那么通常是编译、打包、静态代码检查、所有单元测试、一些集成测试和少量系统级冒烟测试。
  • 《持续交付的魅力》以广度为主,但在 OpenSpace 环节与大家的讨论还算深入。感觉“持续集成” 这个主题被接受的程度远远高过两年前。

延伸阅读

1. 乔梁在 InfoQ 的专栏

2.QClub 北京站,ThoughtWorks CTO Rebecca 谈 DevOps 和持续交付

3.InfoQ 中文站关于持续交付的相关文章

有关百度技术沙龙的更多信息,可以通过新浪微博关注** @百度技术沙龙,或者加入百度技术沙龙微群 **,InfoQ 上也总结了过往 16 期所有百度技术沙龙的演讲视频和资料等,感兴趣的读者可以直接浏览阅读

2011 年 8 月 01 日 02:043129
用户头像

发布了 156 篇内容, 共 42.1 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

一文搞懂三级管和场效应管驱动电路设计及使用

不脱发的程序猿

电路设计 三极管 28天挑战 3月日更 场效应管

使用“零信任”,不惧“内部威胁”!

龙归科技

管理 数据完整性 零信任 内部威胁

Java 和 Python 关于 % 的那些坑

与你一起学算法

Java Python

阿里巴巴最新推出王者笔记:“Spring MVC源码与实践”

周老师

Java 编程 程序员 架构 面试

2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)

比伯

Java 编程 架构 面试 程序人生

电子门锁没电的解决办法

孙叫兽

生活 程序人生 电子锁

源中瑞智慧社区解决方案,社区服务平台

13530558032

在线数据迁移,数字化时代的必修课 —— 京东云数据迁移实践

京东科技开发者

数据库 数据迁移

收藏!Linux常用命令合集

roseduan

Linux

跟我学ModelArts丨探索ModelArts平台个性化联邦学习API

华为云开发者社区

联邦学习 API 华为云 modelarts AI算法

区块链电子发票平台,区块链电子发票优势

13530558032

论文免费开源:NB-IoT智慧路灯监控系统

不脱发的程序猿

论文 28天挑战 3月日更 NB-IoT智慧路灯 大学生毕业

北京市工贸技师学院加入ACA世界大赛,坚持以赛促教,以赛促学

Adobe国际认证

安卓嵌入式底层开发!整理出这份8万字Android性能优化实战解析,已开源

欢喜学安卓

android 程序员 面试 移动开发

冲击大厂!阿里P9纯手打Java面试小抄(21版)在GitHub上已获80万star

云流

Java 程序员 面试

EGG Network公链技术创新,EFTalk打造高效全能公链

币圈那点事

区块链

Python 生成 QR 二维码

HoneyMoose

一个合格的CloudNative应用:程序当开源软件编写,应用配置外置

华为云开发者社区

云原生 华为云 Cloud Native CCE CSE

LeetCode题解:213. 打家劫舍 II,动态规划(不缓存偷盗状态),JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

【LeetCode】设计停车系统Java题解

HQ数字卡

算法 LeetCode 28天写作 3月日更

Java面试必看!阿里(嵩山版)分布式核心原理笔记来了

Java架构追梦

Java 阿里巴巴 架构 面试 架构分布式

智慧党建信息管理平台系统建设

13530558032

如何批量下载YouTube视频到本地

科技猫

软件 音视频 经验分享 资源分享 工具分享

【前端面试题】关于一些js的一些面试题(金融行业),我和面试官扯了三个小时

孙叫兽

JavaScript 前端 金融 笔试题

干货 | 万字详解整个数据仓库设计体系

五分钟学大数据

大数据 数据仓库 28天写作 3月日更

快点来学吧!Android性能优化面试题集锦,深度解析,值得收藏

欢喜学安卓

android 程序员 面试 移动开发

2B营销路径: 9大步骤自我拆解

boshi

营销数字化 七日更

MySQL的锁

一个大红包

3月日更

「面试高频」秒杀架构的设计套路,你值得拥有

我爱娃哈哈😍

架构设计 架构设计实战 秒杀架构

GO训练营第10周——日志&指标&链路追踪

Glowry

爱了!阿里巴巴JAVA岗发布,最新内部面试题(含P5-P7)

周老师

Java 编程 程序员 架构 面试

华为云 TechWave 全球技术峰会

华为云 TechWave 全球技术峰会

百度技术沙龙第16期回顾:持续交付的魅力(含资料下载)-InfoQ