持续集成作为一种软件开发中的最佳实践被越来越多的项目组采用。因为项目在被持续的构建,">团队成员可以更早地发现代码中被引入的错误,也更为方便的定位到错误是由谁在什么时候提交的哪一部分代码中引入的。由于持续地产出可部署的部件,虽然这些部件没有实现所有的功能,但却是可部署的,这让项目开发的整个过程变得更为可控。同时持续集成与测试驱动开发等其他软件开发最佳实践的结合更能代码健壮性和可靠性。下面我们将开始介绍如何搭建这样一个包含对项目进行持续构建与部署的持续集成环境。
下一代项目构建工具 Gradle
目前,在 Java 软件构建中 Maven 已经成为了事实标准。Maven 提供了预定义流程、组建管理与大量的插件,能方便地对项目进行构建并且提供丰富的功能。同时其 XML 格式的配置文件也比较容易理解,使新手能更快的掌握 Maven 的使用。但是 Maven 也存在着几方面的弊端。首先,XML 的配置文件虽然易懂,但当项目构建过程变的复杂的时候,配置文件会变得非常冗余和难以维护。第二,Maven 是基于插件的,构建中用到的功能全部来自于插件。当插件不提供您需要的功能时,在配置文件中您将无能为力,也就是说 Maven 的配置文件不够灵活。第三,当没有插件满足您的功能需求时,您需要自己开发一个插件,而这个学习曲线是陡增的。
作为下一代项目构建工具 Gradle 使对项目的构建变得更为容易,并且提供更为强大的功能与更好的扩展性能。Gradle 提供对项目进行编译、构建、测试、打包以及部署等功能。Gradle 具有以下特点:
基于 Groovy 之上的 DSL 的构建脚本具有非常好的扩展性并且更容易被组织 提供预定义的构建流程并且可以被容易地定制 真正支持多项目构建 提供多种方式来管理依赖并且兼容 Maven 和 Ivy 的组件库 可以集成并支持 Ant 任务 Gradle wrapper 可以在没有 Gradle 的环境中执行构建
团队协作开发工具 Rational Team Concert
Rational Team Concert(RTC)是基于 Jazz 平台的软件家族的第一个成员。Jazz 是一个用于管理软件开发整个生命周期的可扩展的协作平台。RTC 的架构是基于客户端/服务端模式的,并且是跨平台的。在功能上,RTC 提供包括工作项集成、源代码控制、报表和对构建管理的支持。RTC 为敏捷团队带来高度协作化的开发环境,并且针对中小规模团队进行了优化。RTC 同时集成了与 Ration ClearCase、Ration ClearQuest 以及 SVN 等工具的互操作功能。这些功能将为团队提供极大的可扩展性,帮助企业组建更为出色的开发团队。
项目构建整体架构
现在我们开始来搭建一个基于 Gradle 和 RTC 的持续构建与部署系统。首先对整体架构进行介绍,在后面部分再针对各个重点部分进行详细的说明。
图 1. 架构图
从图中我们可以看到,除了前文提到的 Gradle 与 RTC,还用到了其他一些工具,下面针对架构图的分析中会说明这些工具的作用。整个构建过程由 RTC 的用户发起,用户向 RTC 发起针对某个构建定义的构建请求。同时构建请求也可以由定义在构建定义中的 Schedule 发起。RTC 服务器接受到构建请求后,会根据指定的构建定义与该构建定义所关联的构建引擎,去把一个构建任务发送给构建服务器中的 Jazz Build Engine(JBE)。JBE 是一个运行在构建服务器中的服务,它会一直等待构建任务的到来,一旦收到构建任务,便会根据构建定义中的内容执行相应的构建任务。这里,JBE 会执行定义在构建定义中的 Gradle 命令来启动构建过程。Gradle 会完成项目的编译、测试、归档等项目构建过程,并把构建产物部署到应用服务器 WebSphere Application Server(WAS)和 Nexus 上。Nexus 是一个组件管理仓库,可以用作 Maven 中央仓库的本地镜像,也可以用来管理自己的组件。Gradle 对 Maven 的组件仓库是完全兼容的。在 Gradle 执行完构建过程或则构建失败后,JBE 会收集产生的日志并传回给 RTC 服务器。
根据架构图,需要安装 RTC Server、JBE、Gradle、WAS 和 Nexus。关于各个工具的安装方法,请参考相应的文档。案例的构建环境有三台服务器,三台服务器安装的操作系统是 CentOS 6.4,选用的 RTC Server 版本是 4.0.3M4 。
表 1. 服务器
Server-1 Rational Team Concert Server Server-2 Jazz Build Engine, Gradle Server-3 WebSphere Application Server, Nexus
Rational Team Concert 的配置
在安装完 RTC Server 并配置好 RTC Client 后,第一步是配置构建定义。
图 2. 新建构建引擎