已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于基于 AntAnt 搭建敏捷开发过程中的持续集成环境搭建敏捷开发过程中的持续集成环境 持续集成 CI 是敏捷开发过程中至为关键的一个环节 在每个迭代开发周期中 合理地 对软件产品进行持续集成 将有效协调软件编码 测试以及版本发布各个团队的工作进程 降低软件开发风险 对客户需求做出最及时有效的反馈 Apache Ant 提供了丰富的核 心任务以及扩展任务来完成持续集成过程中的各项工作 同时开源社区 Ant Contrib 提供 的 Ant 任务更是大大增强了 Ant 的可编程性 使得 Ant 有能力完成更为复杂的逻辑操作 基本的持续集成环境 一个持续 稳定的构建是整个持续集成过程中的关键 在每个迭代周期的开发过程中 软件开发团队应当及时将最新的功能代码进行提交和构建 以便使软件测试团队能够进 行功能或系统测试 及早发现缺陷并尽快解决 同时 在相应迭代周期的后期 版本发布 团队应该能够获取经过验证后的最新的产品构建 并将其打包成可交付产品或进行线上产 品的更新 交由产品的项目关系人或最终客户进行使用 确保客户需求与软件产品一致 目前在 Web 2 0 应用的敏捷开发过程中多采用这样一种集成环境 以满足 Web 2 0 应 用最为典型的 Always Beta 特性 下图展示了一种基本的持续集成环境的拓扑结构 图 1 持续集成环境的拓扑结构 持续构建服务器上的 Ant 脚本首先从源代码管理库获取最新的代码 并按照特定的构 建策略执行构建 比如在固定时间触发每日构建 而后将构建结果自动上传至 FTP 服务 器用以保存和分发 功能测试 FVT 或系统测试 SVT 环境则包括了测试服务器和测试 数据等信息 其上的 Ant 脚本则负责从 FTP 服务器获取最新的构建 提取更新所需的产 品代码 如果需要 还要提取必要的数据库更新脚本 完成数据库架构的重构 来完成测 试环境的更新 而后调用测试脚本进行测试并产生测试报告 产品环境则是面向终端用户 的产品运行环境 其上的 Ant 脚本可以将通过测试的构建生成可交付的产品或线上产品更 新包 这一过程常伴随产品版权信息验证 产品包压缩以及产品部署等动作 Ant 如何帮助持续集成 Ant 作为 Java 开发领域应用最为广泛的自动构建工具 不仅可以帮助开发团队实施 每日构建生成构建包 更支持在此构建包基础之上 生成测试团队和版本发布团队所需要 的构建包以完成后续的产品测试与发布工作 最终使得整个迭代周期过程的产品集成实现 自动化 本文不会对 Ant 的基本概念和所有任务进行逐一介绍 而是将作者在实践过程中 认为对持续集成有所帮助的概念和任务加以解释阐明 以期读者更好地了解 Ant 的能力 并加以灵活的运用 与 与 任务提供了在一个构建脚本内调用外部脚本特定目标 target 的能力 这种 能力可以很好的帮助我们管理整个持续集成过程 特别是在有多个项目构建需求的情况时 设计一个独立的控制脚本 借助 任务使其通过调用不同的项目构建脚本完成整 体项目的集成 这样做的一个最明显好处是使我们可以快速的适应项目变动 符合随需应 变 On Demand 的开发模式 任务区别于 任务之处在于 其只能调用同一个构建脚本之内的构建 目标 他所提供的是对一个构建脚本自身的清晰管理 以往依赖于 depends 属性的方式 使得我们很容易迷失在复杂的目标依赖关系中 而使用 则能够将每个构建脚本 的任务以显式的 易修改的方式呈现给项目构建者 和 是 ant contrib 开源项目提供的扩展任务 是增强版本 的 和 任务 他们不仅具备前二者的基本能力 还可以返回外部脚本或 同脚本其他目标中的属性 可类比编程语言中带返回值的方法调用 Available 与 Condition 在构建过程中 构建脚本不可避免地会对许多外部资源 文件 目录 URL 等 进行 访问甚至修改 而为了能够有效的对这些资源进行操作 所需做的第一步通常是验证资源 的可用性 任务可以帮助我们对各种外部资源进行判断 通过设置相应的属 性来表明判断结果 进而引导后续的构建操作 另外 在某些情况下 构建脚本或许需要对多个资源同时进行判断而不仅仅是单个资 源 任务通过支持丰富的内嵌标记 nested element 如 等 具备了对资源进行更加复杂的逻辑判断能力 For 与 If 当我们使用 Ant 脚本编写一些较为复杂的逻辑功能 比如循环和流程判断时 自然希 望 Ant 能支持这种编程能力 然而 Ant 核心任务中并没有提供 任务 只是在 任务的属性中支持 if 属性 比如 即表示只有 module A present 属性存在才执行 build module A 目标 但是 必须注意的一点是 这里的 if 并不是判断 module A present 属性是否设置为特定值 而 仅仅是检查该属性是否被设置了 因而其可编程性并不是很强 Ant contrib 为 Ant 提供了与通常所使用的编程语言功能相同的 和 任务 在构建过程中灵活运用这两个任务 将大大增强 Ant 对逻辑操作的控制能力 这其实就 是一种基于 XML 脚本的编程 在具体的实践过程 有一点需要特别注意 在使用 任务的过程中 如果我们期 望在循环体内使用一个变量 而非 Ant 的 property 则需借助由 ant contrib 提供的 任务 ant contrib 任务 来实现 尽管这与 property 的值一经设置便无法改变的 设计原则相抵 但有时能够给构建脚本很大程度上的灵活性 Replace 与 ReplaceRegExp 在由开发构建包向产品构建包转变的过程中 替换与开发环境相关的属性值是主要工 作之一 比如我们不能假设用户会将 JDK 安装在与开发环境相同的路径下 这时便可以 使用 ant 的 任务 任务可以针对特定的字符串的执行替换操作 不仅如此 利用 Ant 扩展任务所提供的 任务 还可以实现基于正则表 达式的替换 例如 要将 test bat 文件中的行首 java 字符串替换为 java bin java 而不影响其 他 java 字符串 可以使用如下 ant 脚本 Filterchain 与 Mapper Filterchain 和 Mapper 是在集成脚本中经常用到的 ant 概念 Filterchain 增强了面 向数据传输的 ant 任务的能力 如 Concat Copy Loadproperties 和 Move 借助于各 种不同功能的 filter 使得这些任务具备了数据筛选和处理的能力 非常类似于 Unix 系统 中的管道的概念 例如 要实现将 A 文件夹复制到 B 文件夹 同时对 B 文件夹中所有 jsp 文件的文 件头添加 copyright txt 文件内容的任务 可以使用如下 ant 脚本 Mapper 则常出现于 Copy Move 或 Unzip 任务中 它的作用在于为这些任务增加指定 输出文件的能力 使得我们不仅可以通过 来指定源文件集 更可以通过各种不 同功能的 mapper 来实现重新命名输出文件文件名或更改输出文件目录结构的能力 这 在构建持续集成环境中起到了极为灵活的作用 很好的理解这两个概念有助于写出简单而 功能全面的 ant 脚本 Taskdef 另外 在一个复杂的持续集成环境中 我们不可避免地会涉及一些商业产品或者开源 项目来搭建整个环境 比如使用 CVS SVN 或 IBM ClearCase 作为项目源代码库 使 用 Apache Tomcat IBM WebSphere Application 作为测试或产品环境的部署服务器 使用 LiquiBase DBdeploy 作为产品数据库的持续重构工具等 而 Ant 借助其易扩展的 特性 对所有这些工具提供了很好的支持 外部工具的提供者只要实现特定的 Ant 任务接 口 就可以提供自定义的 Ant 任务 我们只需要通过 任务引入这些特定的 A nt 任务 便可以实现与这些工具的连接 实现通过 Ant 脚本来管理整个集成环境的目的 实现一个基本的持续集成环境 在一个典型的线上 Web 2 0 应用的迭代开发周期中 持续集成通常涉及构建 部署 测试和上线等一系列动作 而这些动作能够自动运行的前提是获取各自需要的产品包 比如基于 Java EE 的产品都须提供的 WAR 或 EAR 文件 因此 在构建服务器上调 用一个综合性的 Ant 构建脚本 清单 1 产生其它动作所需要的产品包 则成为整个 持续集成过程中最为核心的一步 清单 1 产生其它动作所需要的产品包 不难看出 任务通过调用不同的任务组合达到了为不同构建目的提供不同构建 动作的目的 其中包括对 冒烟 测试 功能测试以及产品环境安装的特定支持 而各个环 境所需要的产品包也因 任务目标的不同而不同 这种松散组合的方式为今后脚本 的维护和更新提供了良好的基础 在为产品环境提供产品包 perform productBuild 的目标中 扩展任务 通过调用外部的 checkLicese xml 脚本来对产品进行版权核查 任何没有版权信息的文本 文件都将被记录到 reportFile 中 虽然类似的这种功能可以使用多种脚本语言来方便的实 现 比如 Python 和 Ruby 等 但这里给出了基于 Ant 的实现 以更好的展示 Ant 脚本 的灵活性和可编程性 清单 2 是使用 Ant 实现版权信息检查的部分脚本 清单 2 使用 Ant 实现版权信息检查的部分脚本 对于测试环境和产品环境而言 获取产品包并自动的进行产品部署是两者共同的首要工 作 而这个过程中所面临的主要问题通常涉及不同操作系统的脚本移植性问题 幸好 Ant 具备了良好的跨平台能力 我们不必为不同的部署环境 Windows 或 Linux 去编写不同 的部署脚本 只需将精力
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版心脏病常见症状及护理要点
- FMECAFMEA故障模式影响分析课件
- 肝硬化常见症状及护理方法培训
- 营养风险的筛查评估表
- 有关说的几种方式训练
- 病理科组织切片技术实操指南
- 2025年电力交易员笔试题含答案
- 2025年证券从业之金融市场基础知识考试题库含答案
- 人工智能训练师高级理论A卷题库及答案
- 绿化工程维护养护方案
- 山坪塘工程设计规范
- 2023年厦门大学招聘辅导员试题及答案
- 机械制造与自动化专业调研报告
- 房屋抵押合同电子版查询范文
- 2023年优才伤寒复习指导
- 数字金融与风险管理
- 泰国历史概况
- 第5章 机器人的运动控制
- 老年人静脉血栓栓塞症防治中国专家共识(2023版)解读
- 2013年高考日语试题及答案
- 2023-2023学年成都市青羊区树德实验中学西区八年级月考数学试卷
评论
0/150
提交评论