使用Hudson进行持续集成

持续集成就是快速且高频率地自动构建项目的所有源码,并为项目成员提供丰富的反馈信息。

一次完整的集成往往会包括以下6个步骤:

  持续编译:所有正式的源代码都应该提交到源码控制系统中,持续集成服务器按一定频率检查源码控制系统,如有新的代码,就出发一次集成,旧的已编译的字节码应当全部清除,然后服务器编译所有最新的源码

  持续数据库集成:在很多项目中,源代码不仅仅值Java代码,还包括了数据库SQL脚本。每次发现新的SQL脚本。就应该清理集成环境的数据库,重新创建表结构,并填入预备的数据

  持续测试:单元测试和集成测试都应该在每次集成的时候运行,并且在发生问题的时候能产生具体报告

  持续审查:持续集成可以使用Checkstyle和PMD之类的工具来生成个类报告,当审查发现问题时,可以给开发人员反馈警告信息

  持续部署

  持续反馈:将集成失败报告发送给这次集成相关的代码提交者,项目经理应该受到所有失败报告

持续集成的好处:尽早暴露问题;减少重复操作;简化项目发布;建立团队信心

在创建Hudson持续集成任务之前,用户需要对Hudson系统做一些基本的配置,包括JDK安装位置和Maven安装等在内的重要信息都不必须首先配置正确。

对于一般的Maven项目,可选择的类型有Build a free-style software project和Build a maven2 project。前者不仅支持Maven,还支持Ant,Shell等。

Discard Old Builds:配置如何抛弃旧的构件

  Days to keep builds:如果其值为非空的N,就仅保留N天之内的构建文件

  Max # of builds to keep:如果#非空,就保留最多#个最近构建的相关文件

Source Code Management:源码仓库配置

Build Triggers:任务的构建触发配置

  Build after other project are build:在其他项目构建完之后再构建本项目

  Build periodically:周期性构建本项目

  Poll SCM:周期性地轮询源码仓库,发现有更新的时候构建本项目

Hudson使用了Unix任务调度工具Cron所使用的配置方式。这种配置方式使用5个字段表示不同的时间单位:分(0-59) 时(0-23) 日(1-31) 月(1-12) 星期几(0-7)

每个字段除了可以使用其范围内的值以外,还可以使用一些特殊的字符:

  *:匹配范围内所有值

  M-N:连字符 表示匹配M到N范围内的所有值

  A,B,...,Z:逗号表示匹配多个值

  */X或M-N/X:范围加上斜杠表示匹配范围内能被X整除的值

常用的配置方式

* * * *:每分钟

5 * * * *:每小时中的第5分钟

*/10 * * * *:每隔10分钟

45 10 * * 1-5:周一到周五的上午10:45

Hudson使用各种颜色表示人物当前的状态

  蓝色:任务最近一次的构建时成功的

  红色:任务最近一次的构建时失败的

  黄色:任务最近一次的构建时成功的,但不稳定,有失败的测试

  灰色:任务从未被执行或被禁用了

Hudson使用一组天气的图标表示人物长期的一个状态

  万里晴空:任务80%以上的集成都是成功的

  稍有乌云:任务60%-80%的集成是成功的

  乌云密布:任务只有40%-60%的集成是成功的

  阴雨绵绵:任务的集成的成功率只有20%-40%

  电闪雷鸣:任务的集成成功率不到20%

用户配置Hudson任务时,在配置页面的Post-build Actions部分选择Publish JUnit test result report选项,并且将Test report XMLs赋值为**/target/surefire-reports/TEST*.xml

为Hudson配合邮件服务器信息

  SMTP server:SMTP邮件服务器地址

  Default user e-mail suffix:默认用户邮件后缀

  System Admin E-mail Address :系统管理员邮件地址

  Hudson URL:hudson服务器的地址

  SMTP Authentication:SMTP相关认证配置

Hudson配置邮件反馈

  进入任务的配置页面,Post-build Actions中check E-mail Notification复选框

一个典型的Hudson工作目录如下:

*.xml:这些XML文件是Hudson核心及相关插件的配置

war:若用户独立运行hudson.war,其内容会被释放到该目录后再启动

users:hudson所存储的用户信息

userContent:用户可以将任意内容放到该目录下通过Hudson服务页面的子路径访问

updates:各类可更新的插件信息

plugins:所有Hudson插件都被安装在该目录而不会影响到Hudson的核心

jobs:包含了所有Hudson任务的配置、存储的构件、归档的构件输出等内容

原文地址:https://www.cnblogs.com/forerver-elf/p/6252658.html