没有合适的资源?快使用搜索试试~ 我知道了~
持续集成第二版.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 50 浏览量
2023-09-11
15:17:18
上传
评论
收藏 55KB DOCX 举报
温馨提示
试读
25页
持续集成第二版
资源推荐
资源详情
资源评论
持续集成(第二版)
持续集成 是一种软件开发实践。在持续集成中,团队成员频繁集成他们的工作成果,
一般每人每天至少集成一次,也可以多次。每次集成会经过自动构建(包括自动测试)的 检
验,以尽快发现集成错误。许多团队发现这种方法可以显著减少集成引起的问题,并可以加
快团队合作软件开发的速度。这篇文章简要介绍了持续集成的技巧和它 最新的应用。
目录
用持续集成构建特性
持续集成实践
只维护一个源码仓库
自动化 build
让你的 build 自行测试
每人每天都要向 mainline 提交代码
每次提交都应在集成计算机上重新 构建 mainline
保持快速 build
在模拟生产环境中进行测试
让每个人都能轻易获 得最新的可执行文件
每个人都能看到进度
自动化部署
持续集成的益处
引入持续集成
最后的思考
延伸阅读
我还可以生动记起第一次看到大型软件工程的情景。我当时在一家大型英国电子公司的 QA
部门实习。我的经理带我熟悉公司环境,我们进到一间巨大的,充满了压抑感和格子间的的
仓库。我被告知这个项目
已
经 开发了
好几
年,现在
正
在集成
阶段
,并
已
经集成了
好几
个月。
我的向
导
还告
诉
我
没
人知
道
集成要多
久才
能
结束
。
从此
我
学
到了软件开发的一个
惯例
:集成
是一个
很耗
时并
难
以
预
测的过程。
但
是
事
实并
非总
是
如此
,我的 ThoughWorks
同事所
做
的项目,以
及很
多
其
它
遍布世界各地
的软件项目,都
不
会
把
集成当
回事
。
任何
一个开发者
本地
的代码和项目
共享基准
代码的
差别仅仅
只
有几小
时的工作
而已
,
而且
这只要
几分钟
的时
间
就
可以被集成
回去
。
任何
集成错误都可以
很
快被发现,并被快速
修复
。这
鲜明
的
差别
并
非
源于
昂贵
和
复杂
的工
具
。
其
中的
精华蕴含
于一个简
单
的实践:
使
用
统
一的代码仓库并频繁集
成(
通常
每天一次)。
当我向
别
人介绍持续集成方法时,人们
通常
会
有 两
种
反
应:
“
这(在我们这
儿
)
不管
用
”
和
“做
了也
不
可能
有什么不同”
。
但如
果他们
真
的试过了,
就
会发现持续集成
其
实
比听
起
来
要
简
单
,并
且
能
给
开发过程带
来
巨大的改
变
。
因此
第
三
种
常见
的
反
应是:
“
我们
就
是这
么做
的,
做
开发
怎
可能
不
用它
呢
?
”
“
持续集成
”
一词
来
源于 极限编程(Extreme Programming),作为它的 12 个实践之一
出现。当我开始在 ThoughWorks 开始顾问职业生涯时,我鼓励我
所
参与的项目
使
用这种
技巧。Matthew Foemmel 将我抽象的指
导
思想转化为
具
体的行动。我们看到了项目
从
少
而
繁
杂
的集成进步到我
所
描述的
不
当
回事
。Metthew 和我将我们的经验写进了这篇论文的
第一版 里。这篇论文后
来
成了我网站里最受欢迎的文章之一。
尽
管
持续集成
不
需要
什么
特
别
的工
具
,我们发现
使
用一个持续集成服务器软件还是
很有
效果
的。最出名的持续集成服务器软件是 CruiseControl, 这 是 一 个 开源工
具
,最早由
ThoughWorks 的
几
个人开发,现在由社区维护。之后还
有
许多
其
他持续集成服务器软件
出现,
有
些是开源的,
有
些则是商业软件,
比如
ThoughtWorks Studio 的 Cruise。
用持续集成构建特性
对我
来
说,解释持续集成最简
单
的方法
就
是用一个简
单
的
例
子
来
示范开发一个
小
feature。
现在假设我要完成一个软件的一部
分
功能,
具
体
任
务是
什么
并
不
重要,我们先假设这个
feature
很小
,只用
几
个
小
时
就
可以完成。(我们稍后会研究更大的
任
务的情况。)
一开始,我将
已
集成的源代码
复
制 一 份到
本地
计算机。这可以
通
过
从
源码
管
理系
统
的
mainline 上 check out 一份源代码
做
到。
如
果 你用过
任何
源代码
管
理系
统
,理解上面的文字应该
不
成问题。
但如
果你
没
用过,可能
会
有
读天书的感觉。
所
以我们先快速解释一个这些概念。源代码
管
理系
统
将项目 的
所有
源
代码都保存在一个
“
仓库(repository)
”
中。系
统
的当前状态
通常
被称为
“
mainline
”
。开
发者随时都可以
把
mainline
复
制 一份到他们自己的计算机,这个过程被称为
“
check out
”
。
开发者计算机上的拷贝被称为
“
工作拷贝(working c op y )
”
。(绝大部
分
情况下,你最终都
会
把
工作拷贝的内容提交到 mainline 上
去
,
所
以
两
者实际上应该
差不
多。)
现在我拿到了工作拷贝,接下
来
需要
做
一些
事
情
来
完成
任
务。这包括
修
改产品代码和添加
修
改自动化测试。在持续集成中,软件应该包
含
完善的可自动运行 的测试,我称之为自测试
代码。这一般需要用到某一个流行的 XUnit 测试框架。
一旦完成了
修
改,我
就
会在 自己的计算机上启动一个自动化 build。这会将我的工作拷贝
中的源代码编译并链接成为一个可执行文件,并在之上运行自动化测试。只
有
当
所有
的
build 和测试都完成并
没有任何
错误时,这个 build 过程
才
可以认为是成功的。
当我 build 成功后,我
就
可以考虑将改动提交到源码仓库。
但
麻烦的情况在于
别
人可能
已
经在我之前
修
改过 mainline。这时我需要首先
把别
人的
修
改更新到我的工作拷贝中,再重
新
做
build。
如
果
别
人的代码和我的
有
冲突,
就
会在编译或测试的过程中引起错误。我
有
责
任
改
正
这些问题,并重
复
这一过程,直到我的工作拷贝能
通
过 build 并和 mainline 的代
码
同
步。
一旦我
本地
的代码能
通
过 build,并和 mainline
同
步,我
就
可以
把
我的
修
改提交到源码仓
库。
然
而
,提交完代码
不
表示
就
完
事
大吉了。我们还要
做
一
遍
集成 build,这次在集成计算机
上并要
基
于 mainline 的代码。只
有
这次 build 成功了,我的
修
改
才
算告一
段
落。
因
为
总
有
可能我忘了
什么
东西在自己的机器上
而没有
更新到源码仓库。只
有
我提交的改动被成功的
集成了,我的工作
才
能
结束
。这 可以由我手工运行,也可以由 Cruise 自动运行。
如
果
两
个开发者的
修
改存在冲突,这
通常
会被第二个人提 交代码前
本地做
build 时发现。
即
使
这时侥幸过关,接下
来
的集成 build 也会失败掉。
不管怎
样,错误都会被
很
快检测出
来
。
此
时首要的
任
务
就
是改
正
错误并让 build 恢
复正常
。在持续集成环境里,你必须尽可
能快
地修复
每一个集成 build。
好
的团队应该每天都
有
多个成功的 build。错误的 build 可
以出现,
但
必须尽快得到
修复
。
这样
做
的
结
果是你
总
能得到一个稳定的软件,它可能
有
一些 bug,
但
可以
正常
工作。每个
人都
基
于相
同
的稳定代码进行开发,
而且不
会离得太远,否则
就
会
不
得
不
花
很
长时间集成
回
去
。Bug 被发现得越快,花在改
正
上的 时间
就
越短。
持续集成实践
从
上面的故
事
我们大概了解了持续集 成是
如何
在我们的日
常
工作中发挥作用的。
但
让一切
剩余24页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1899
- 资源: 3854
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功