通过持续集成尽早发现缺陷 - 编程入门网
代码管理
为了让 CI 正确地发挥作用,需要一个源代码管理(SCM)系统或存储库,比 如 Subversion 或 CVS。CI 服务器向 SCM 存储库查询代码修改。在找到修改时 ,CI 服务器执行签出(即更新本地沙箱)并执行构建。除了执行得更频繁之外, 构建过程与在本地环境中执行的构建相同。 CI 服务器 对于成功的 CI 过程,需要用一个自动的过程监视 SCM 存储库并在探测到修 改时运行构建,这也非常重要。对于 Java 平台,有许多可用的 CI 服务器,包 括开放源码软件和商业产品。它们的基本配置都很相似,适合监视特定的 SCM 并 在探测到修改时运行构建。所有 CI 服务器都有自己的优缺点。Hudson 尤其让人 感兴趣,因为它容易配置而且具有强大的插件,这些插件可以显示测试结果趋势 等信息。 Hudson 简介 Hudson 是一种革命性的开放源码 CI 服务器,它从以前的 CI 服务器吸取了 许多经验教训。Hudson 最吸引人的特性之一是它很容易配置:很难找到更容易设 置的 CI 服务器,也很难找到开箱即用特性如此丰富的 CI 服务器。Hudson 容易 使用的第二个原因是它具有强大的插件框架,所以很容易添加特性。例如,一个 Hudson 插件可以随时间的推移跟踪 FindBugs 和代码覆盖。它还可以报告测试结 果的趋势(来自 JUnit 或 TestNG)以及构建结果和对应的执行时间。 Hudson 需要运行 Java 5。如果需要使用 Hudson 附带的嵌入式容器 (Winstone)之外的其他容器,那么只需使用一种 Servlet 2.4 容器。对于大多 数情况,Winstone 就足够了。 开始使用 CI 本节讨论如何把 CI 过程的各个组件组合在一起,以及采用这种方式的原因。 在此之后,就可以开始编写代码了! 先决条件:一个构建系统! 可重复的可靠构建是可预测的软件过程的基础。正如前面提到的,Ant 是 Java 平台上流行的构建工具,它的主要用途是自动执行编译和部署等常见任务。 Ant 还有助于用 JUnit 和 TestNG 等测试框架进行单元测试,而且它可以与许多 其他工具集成,比如 PMD 和 FindBugs(用来自动执行静态代码分析)。使用 Ant 编译源文件很容易,只需在命令提示下发出 ant compile 命令。 可靠性与可重复性 尽管 Ant 有助于保证可重复性,但是可重复性 主要取决于开发人员自己。在 软件构建方面,可重复性意味着,不同的开发人员在发出编译或测试等命令时, 会得到相同的结果。如果由于某种原因(比如构建本身没有显式引用一个必需的 库),一位开发人员无法完成编译,而另一个开发人员可以完成编译,那么构建 就是不可靠的,也可以认为它是不可重复的! 可靠性和可重复性对于 CI 非常重要。因为 CI 是一个没有人为干预的自动过 程,所以 CI 最终调用的构建过程必须没有瑕疵。构建过程必须是一个简单的活 动,不依赖于 CI 服务器无法控制的东西,比如需要精确引用的库、没有明确文 档记录的位置和手工刷新的数据库。当然,某些构建操作会失败,例如某人签入 了无法编译的代码;但是构建不能由于本身的缺陷而失败。 通过持续集成尽早发现缺陷(3)时间:2011-07-08 IBM Andrew Glover基本的构建过程 要想让 CI 能够促进软件开发过程,构建的作用必须不仅仅是编译代码。因为 在每次修改代码时都会运行构建,所以这是运行测试和代码检查的好时机。 基本的构建过程包含以下任务: 编译源代码,包括测试 执行测试,包括用 JUnit 或 TestNG 编写的测试 运行代码检查,比如 PMD 将最终的产品存档为 JAR、WAR 或一系列文件 部署最终的产品(假设最终产品允许部署) 请记住,这些是最基本的步骤,构建过程可能包含更高级的步骤,比如处理数 据库或软件产品的其他方面。 设置目录结构 有许多种设置软件项目目录结构的策略,它们各有优缺点。我喜欢把源代码 与测试 分隔开的方式,而 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |