持续集成就是快速且高频率地自动构建项目的所有源码,并为项目成员提供丰富的反馈信息。
一次完整的集成往往会包括以下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