Submit Search
Upload
持续集成中的反模式
•
1 like
•
639 views
Kai Feng Zhang
Follow
AgileTour 2011 天津
Read less
Read more
Technology
Report
Share
Report
Share
1 of 33
Download now
Download to read offline
Recommended
Open stack在企业持续集成中的实战
Open stack在企业持续集成中的实战
Yong Luo
前端编译平台
前端编译平台
Welefen Lee
百度前端性能监控与优化实践
百度前端性能监控与优化实践
Welefen Lee
客服系統的軟體架設計分享
客服系統的軟體架設計分享
Johnson Gau
持续集成入门
持续集成入门
Lieping Xie
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1
天青 王
Monitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - Consul
Andrew Wu
哥寫的不是程式,是軟體 - 從嵌入式系統看軟體工程全貌
哥寫的不是程式,是軟體 - 從嵌入式系統看軟體工程全貌
Tun-Yu Chang
Recommended
Open stack在企业持续集成中的实战
Open stack在企业持续集成中的实战
Yong Luo
前端编译平台
前端编译平台
Welefen Lee
百度前端性能监控与优化实践
百度前端性能监控与优化实践
Welefen Lee
客服系統的軟體架設計分享
客服系統的軟體架設計分享
Johnson Gau
持续集成入门
持续集成入门
Lieping Xie
从CI到CD[麻袋理财王天青]v1
从CI到CD[麻袋理财王天青]v1
天青 王
Monitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - Consul
Andrew Wu
哥寫的不是程式,是軟體 - 從嵌入式系統看軟體工程全貌
哥寫的不是程式,是軟體 - 從嵌入式系統看軟體工程全貌
Tun-Yu Chang
VSCode Remote Development
VSCode Remote Development
Philip Zheng
領域驅動設計 (Domain Driven Design)
領域驅動設計 (Domain Driven Design)
Jeff Chu
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
Andrew Wu
PyCon China 2012 孙毅
PyCon China 2012 孙毅
Yi Sun
SITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with Webpack
昱安 周
Scrum深入淺出
Scrum深入淺出
Taien Wang
持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版
Kirk Chen
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
Andrew Wu
互联网持续交付整形记
互联网持续交付整形记
Ryan YU
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
Philip Zheng
VSCode Remote Development 介紹
VSCode Remote Development 介紹
Philip Zheng
大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計
大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計
Andrew Wu
我們與Azure DevOps的距離
我們與Azure DevOps的距離
Edward Kuo
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
twMVC
James-版本控制
James-版本控制
Study4TW
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
微服務對IT人員的衝擊
微服務對IT人員的衝擊
Philip Zheng
十二項架構設計原則
十二項架構設計原則
Philip Zheng
十分鐘上手 I os jenkins ci
十分鐘上手 I os jenkins ci
Ting-Yen Kuo
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
Will Huang
Continuous integration
Continuous integration
netdbncku
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min 中文
Shuyong Lin
More Related Content
What's hot
VSCode Remote Development
VSCode Remote Development
Philip Zheng
領域驅動設計 (Domain Driven Design)
領域驅動設計 (Domain Driven Design)
Jeff Chu
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
Andrew Wu
PyCon China 2012 孙毅
PyCon China 2012 孙毅
Yi Sun
SITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with Webpack
昱安 周
Scrum深入淺出
Scrum深入淺出
Taien Wang
持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版
Kirk Chen
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
Andrew Wu
互联网持续交付整形记
互联网持续交付整形记
Ryan YU
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
Philip Zheng
VSCode Remote Development 介紹
VSCode Remote Development 介紹
Philip Zheng
大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計
大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計
Andrew Wu
我們與Azure DevOps的距離
我們與Azure DevOps的距離
Edward Kuo
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
twMVC
James-版本控制
James-版本控制
Study4TW
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
微服務對IT人員的衝擊
微服務對IT人員的衝擊
Philip Zheng
十二項架構設計原則
十二項架構設計原則
Philip Zheng
十分鐘上手 I os jenkins ci
十分鐘上手 I os jenkins ci
Ting-Yen Kuo
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
Will Huang
What's hot
(20)
VSCode Remote Development
VSCode Remote Development
領域驅動設計 (Domain Driven Design)
領域驅動設計 (Domain Driven Design)
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
PyCon China 2012 孙毅
PyCon China 2012 孙毅
SITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with Webpack
Scrum深入淺出
Scrum深入淺出
持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
互联网持续交付整形记
互联网持续交付整形记
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
VSCode Remote Development 介紹
VSCode Remote Development 介紹
大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計
大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計
我們與Azure DevOps的距離
我們與Azure DevOps的距離
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
James-版本控制
James-版本控制
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
微服務對IT人員的衝擊
微服務對IT人員的衝擊
十二項架構設計原則
十二項架構設計原則
十分鐘上手 I os jenkins ci
十分鐘上手 I os jenkins ci
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
Similar to 持续集成中的反模式
Continuous integration
Continuous integration
netdbncku
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min 中文
Shuyong Lin
Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...
Jimmy Lai
美团前端架构简介
美团前端架构简介
pan weizeng
李成银:前端编译平台
李成银:前端编译平台
taobao.com
Nodejs & NAE
Nodejs & NAE
q3boy
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
jalamar
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
LetAgileFly
合久必分,分久必合
合久必分,分久必合
Qiangning Hong
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
Max Lai
網站上線了,然後呢?
網站上線了,然後呢?
Kirk Chen
网站前端代码静态检查工具研究
网站前端代码静态检查工具研究
pop2008
持续交付的魅力
持续交付的魅力
Qiao Liang
Heat在企业中的应用实践
Heat在企业中的应用实践
xuanlangjian
Git&Github Tutorial
Git&Github Tutorial
Ting Wen Su
姚彤 从360手机卫士的研发经历看大型移动应用开发
姚彤 从360手机卫士的研发经历看大型移动应用开发
Trinea Trinea
Open cdn快速部署你的私有cdn集群
Open cdn快速部署你的私有cdn集群
挺
持续集成中的六步提交
持续集成中的六步提交
Qiao Liang
网站前端代码静态检查工具综述
网站前端代码静态检查工具综述
pop2008
Similar to 持续集成中的反模式
(20)
Continuous integration
Continuous integration
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min 中文
Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...
美团前端架构简介
美团前端架构简介
李成银:前端编译平台
李成银:前端编译平台
Nodejs & NAE
Nodejs & NAE
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
合久必分,分久必合
合久必分,分久必合
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
網站上線了,然後呢?
網站上線了,然後呢?
网站前端代码静态检查工具研究
网站前端代码静态检查工具研究
持续交付的魅力
持续交付的魅力
Heat在企业中的应用实践
Heat在企业中的应用实践
Git&Github Tutorial
Git&Github Tutorial
姚彤 从360手机卫士的研发经历看大型移动应用开发
姚彤 从360手机卫士的研发经历看大型移动应用开发
Open cdn快速部署你的私有cdn集群
Open cdn快速部署你的私有cdn集群
持续集成中的六步提交
持续集成中的六步提交
网站前端代码静态检查工具综述
网站前端代码静态检查工具综述
持续集成中的反模式
1.
持续集成及反模式
张凯峰 1
2.
关于我 ThoughtWorks中国公司高级软件咨询师 InfoQ中文站资深编辑 技术图书译者
2
3.
议题 2007. 01
持续集成的概念 持续集成反模式 3
4.
持续集成 区别于传统的在开发完成后才开始质量控制 和集成的方式,持续集成实现了频繁的、增 量的软件质量控制,从而提高软件质量,缩 短软件发布的周期。 《持续集成》第二版,译者:雷镇,作者:Martin Fowler http://article.yeeyan.org/view/2251/94882
4
5.
传统的集成存在什么问题 • 用大量的时间集成不同来源的代码 • 集成时间甚至长于开发时间 •
每个人都要花很大的力气才能构建系统 • 发布在即,bug却越来越多 • …… 5
6.
于是…
集成时问题多、 主干质量不稳 时间长 定 容易引入Bug 本地代码堆积 不想不敢更新 很久才进行集 代码 成 6
7.
究其根源 • 缺乏有效的反馈手段,集成过程不透明、缺乏管理 • 对当前主干质量情况缺乏一个基本认识 •
集成频率太低。一次集成太多内容导致成本高、时 间长、容易出错 7
8.
如果引入持续集成…
小步频繁集成, 错误及时得到 快速反馈 修复 尽早修复Bug 每次集成成本 主干质量稳 低,出错几率 定 小 8
9.
持续集成是一种软件开发的实践。通过这个实践团队 的成员频繁整合他们的工作,通常每人每天至少集成 一次,通过不断地练习,最终达到每日多次集成。每次集成 通过自动化的编译和测试等手段进行验证,来达到尽快 发现集成错误的目的。
9
10.
一次成功的持续集成 《持续集成理论和实践的新进展》,肖鹏 http://www.infoq.com/cn/articles/ci-theory-practice
10
11.
持续集成的原则 • 只维护一个源代码库 • 自动化构建 •
自动化测试 • 每人每天向代码主线提交代码 • 每次提交触发构建 • 保持快速构建 • 在模拟生产环境下测试 • 每个人可轻易获得最新的可执行文件 • 每个人都能看到进度 • 自动化部署 11
12.
持续集成平台 • Jenkins/Hudson • TeamCity •
ThoughtWorks Go 12
13.
持续集成的反模式 • 标准化类反模式 • 自动化类反模式
13
14.
反模式一:非最小依赖 • 需要开发者定义和配置环境变量 • 需要开发者安装大量工具才能构建
14
15.
模式一:最小依赖 • 将需要预安装的工具减至最少 • 将构建和部署所需环境配置减至最少 •
Tips – 自动化建立依赖的过程 – 制作镜像 15
16.
反模式二:只能在个别机器上构建
“在我的机器上构建没有问题啊!” 16
17.
模式二:在独立专用的机器上构建 • 选择CI服务器需要考虑 –
统 – 构 – 馈 报 17
18.
反模式三:非独立构建 • 自动构建依赖IDE的设置 •
构 18
19.
模式三:独立构建 • 与IDE分离的构建脚本 • CI可以调用命令行开始构建
19
20.
反模式四:通过文件系统管理和共享文件 • 在团队成员机器上管理文件 • 通过文件系统共享
20
21.
模式四:所有文件版本化 • 由版本控制系统管理文件 • 授权访问给特定用户
21
22.
反模式五:积攒大量的代码质量问题 • 等待大量的代码问题爆发 • 增加维护的成本 •
影响既有的功能实现 22
23.
模式五:构建的阈值 • 构建时检查 –
代码测试覆盖率 – 代码圈复杂度 • 让构建失败,并通知开发团队 23
24.
反模式六:弱反馈 • 很少的反馈 • 垃圾邮件反馈
24
25.
模式六:持续反馈 • CI发布持续、自动的反馈 •
馈 – 馈 – 邮 – RSS 25
26.
反模式七:手动参与构建过程 • 手工不断重复同样的构建 • 部分自动构建,需要额外的手工配置
26
27.
模式七:构建过程全部自动化 • 从源代码开始,完全自动化构建 • 创建不依赖IDE的构建脚本,能从命令行调
用 27
28.
反模式八:耗时的人工代码审查 • 专门的代码审查会议 • 无视代码审查
28
29.
模式八:自动代码审查 • 运行自动代码分析找到通常问题 • 代码分析作为自动构建的一部分
29
30.
反模式九:没有自动化测试 • 不运行测试 • 没有回归测试 •
人工测试 30
31.
模式九:自动化测试 • 回归测试 • 自动化构建的重要部分
31
32.
总结 • 每个团队有最适合自己的持续集成方式 • 不为了持续集成而持续集成
32
33.
谢谢
33
Download now