使用hudson做代码规范检查.ppt
使用hudson做代码规范检查胡正林南京 2012-7-6项目中集成checkstyle基本属性配置执行checkstyle任务的ant脚本Checkstyle依赖包根据checkstyle结果生成html的xsl脚本代码检查规范基本属性配置说明基本属性配置说明文件列表文件列表checkstyle.results.dir=checkstyle-resultscheckstyle.rules=emagsoftware_checks.xmlcheckstyle.xsl=checkstyle-noframes-severity-sorted.xslcheckstyle.cache.file=checkstyle-cachesource.dir=./src项目中集成checkstyle Ant脚本定义checkstyle ant 任务执行checkstyle ant 任务Checkstyle结果报告生成html报告项目中集成checkstyle 执行l l HudsonHudson介绍介绍介绍介绍l l Hudson Hudson工作原理工作原理工作原理工作原理l l Hudson Hudson主界面主界面主界面主界面l l Hudson Hudson系统的基本配置系统的基本配置系统的基本配置系统的基本配置l l 使用使用使用使用HudsonHudson构建项目构建项目构建项目构建项目HudsonooHudson Hudson 是近年来应用得比较广泛的、扩展的、是近年来应用得比较广泛的、扩展的、是近年来应用得比较广泛的、扩展的、是近年来应用得比较广泛的、扩展的、一个持续集成工具。一个持续集成工具。一个持续集成工具。一个持续集成工具。oo什么是持续集成(什么是持续集成(什么是持续集成(什么是持续集成(Continuous IntegrationContinuous Integration)?)?)?)?oo持续集成(持续集成(持续集成(持续集成(CICI)是一种实践,可以让团队在持续的基础上收到反馈并进行改)是一种实践,可以让团队在持续的基础上收到反馈并进行改)是一种实践,可以让团队在持续的基础上收到反馈并进行改)是一种实践,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发人员的每一次代码提交,都自动地把人员的每一次代码提交,都自动地把人员的每一次代码提交,都自动地把人员的每一次代码提交,都自动地把RepositoryRepository中所有代码中所有代码中所有代码中所有代码Check outCheck out到一个空目到一个空目到一个空目到一个空目录,并且自动运行所有录,并且自动运行所有录,并且自动运行所有录,并且自动运行所有Test CaseTest Case。如果成功则接受这次提交,否则告诉所有人,。如果成功则接受这次提交,否则告诉所有人,。如果成功则接受这次提交,否则告诉所有人,。如果成功则接受这次提交,否则告诉所有人,这是一个失败的这是一个失败的这是一个失败的这是一个失败的RevisionRevision。ooHudsonHudson应用场景:应用场景:应用场景:应用场景:oo1.1.持续、自动地构建持续、自动地构建持续、自动地构建持续、自动地构建/测试软件项目。测试软件项目。测试软件项目。测试软件项目。oo2.2.监控一些定时执行的任务。监控一些定时执行的任务。监控一些定时执行的任务。监控一些定时执行的任务。oo官方网站:官方网站:官方网站:官方网站:http:/hudson-ci.org/http:/hudson-ci.org/6Hudson 介绍HudsonHudsonHudsonHudson有哪些特性?有哪些特性?有哪些特性?有哪些特性?l l易于安装:易于安装:易于安装:易于安装:只要把只要把只要把只要把hudson.warhudson.war部署到部署到部署到部署到servletservlet容器,不需要数容器,不需要数容器,不需要数容器,不需要数据库支持。据库支持。据库支持。据库支持。l l易于配置:易于配置:易于配置:易于配置:所有配置都是通过其提供的所有配置都是通过其提供的所有配置都是通过其提供的所有配置都是通过其提供的webweb界面实现。界面实现。界面实现。界面实现。l l集成集成集成集成RSS/E-mail/IMRSS/E-mail/IM:通过通过通过通过RSSRSS发布构建结果或当构建失败发布构建结果或当构建失败发布构建结果或当构建失败发布构建结果或当构建失败时通过时通过时通过时通过e-maile-mail实时通知。实时通知。实时通知。实时通知。l l生成生成生成生成JUnit/TestNGJUnit/TestNG测试报告测试报告测试报告测试报告l l分布式构建支持:分布式构建支持:分布式构建支持:分布式构建支持:HudsonHudson能够让多台计算机一起构建能够让多台计算机一起构建能够让多台计算机一起构建能够让多台计算机一起构建/测试。测试。测试。测试。l l文件识别:文件识别:文件识别:文件识别:HudsonHudson能够跟踪哪次构建生成哪些能够跟踪哪次构建生成哪些能够跟踪哪次构建生成哪些能够跟踪哪次构建生成哪些jarjar,哪次构,哪次构,哪次构,哪次构建使用哪个版本的建使用哪个版本的建使用哪个版本的建使用哪个版本的jarjar等。等。等。等。l l插件支持:插件支持:插件支持:插件支持:HudsonHudson可以通过插件扩展,你可以开发适合自可以通过插件扩展,你可以开发适合自可以通过插件扩展,你可以开发适合自可以通过插件扩展,你可以开发适合自己团队使用的工具。己团队使用的工具。己团队使用的工具。己团队使用的工具。Hudson 介绍81 1 程序员通过程序员通过程序员通过程序员通过SVNSVN客户端提交代码客户端提交代码客户端提交代码客户端提交代码2 Hudson2 Hudson用用用用svnupdatesvnupdate命令从命令从命令从命令从svnsvn 中更新代码到本地中更新代码到本地中更新代码到本地中更新代码到本地33 HudsonHudson调用项目里的调用项目里的调用项目里的调用项目里的AntAnt或者或者或者或者MavenMaven 脚本进行构建。构建结束,生成报脚本进行构建。构建结束,生成报脚本进行构建。构建结束,生成报脚本进行构建。构建结束,生成报 告并记录日志,发送结果。告并记录日志,发送结果。告并记录日志,发送结果。告并记录日志,发送结果。4 4 用户可随时通过浏览器在用户可随时通过浏览器在用户可随时通过浏览器在用户可随时通过浏览器在HudsonHudson 上浏览构建结果上浏览构建结果上浏览构建结果上浏览构建结果AntAnt才是构建工作的核心,才是构建工作的核心,才是构建工作的核心,才是构建工作的核心,而而而而HudsonHudson则相当于一个调度者、管理者则相当于一个调度者、管理者则相当于一个调度者、管理者则相当于一个调度者、管理者HudsonHudson工作原理工作原理工作原理工作原理Hudson 主界面Hudson 基本配置l lHudsonHudson工作目录工作目录工作目录工作目录l lJDK JAVA_HOMEJDK JAVA_HOME(必要条件)(必要条件)(必要条件)(必要条件)l lANT ANT_HOME/Maven ANT ANT_HOME/Maven MAVEN_HOMEMAVEN_HOME(二选一)(二选一)(二选一)(二选一)l lSubversion/CVSSubversion/CVS(二选一)(二选一)(二选一)(二选一)l lMailMail(SendMail/PostfixSendMail/Postfix)l l启用安全启用安全启用安全启用安全 可选可选可选可选 Hudson 基本配置使用Hudson 构建项目How to create a new project?How to create a new project?How to create a new project?How to create a new project?Edit the information of projectEdit the information of projectEdit the information of projectEdit the information of project使用Hudson 构建项目l lProject NameProject Name:工程名称,可随便修改,不是在工程名称,可随便修改,不是在工程名称,可随便修改,不是在工程名称,可随便修改,不是在EclipseEclipse中创建工程时的那个工程名,但允许与其同名。中创建工程时的那个工程名,但允许与其同名。中创建工程时的那个工程名,但允许与其同名。中创建工程时的那个工程名,但允许与其同名。l lDescriptionDescription:对构建工程的一些说明和描述信息,可以对构建工程的一些说明和描述信息,可以对构建工程的一些说明和描述信息,可以对构建工程的一些说明和描述信息,可以留空,也可以是任意的留空,也可以是任意的留空,也可以是任意的留空,也可以是任意的HTMLHTML标记语言。标记语言。标记语言。标记语言。l lDiscard old buildsDiscard old builds:抛弃旧的构建。抛弃旧的构建。抛弃旧的构建。抛弃旧的构建。HudsonHudson默认保留过默认保留过默认保留过默认保留过去的构建信息。去的构建信息。去的构建信息。去的构建信息。l lThis build is parameterizedThis build is parameterized:如果选择此选项,如果选择此选项,如果选择此选项,如果选择此选项,HudsonHudson将允许您提供一套任意的键值对(将允许您提供一套任意的键值对(将允许您提供一套任意的键值对(将允许您提供一套任意的键值对(key=valuekey=value)参数,)参数,)参数,)参数,它们会被传递到构建过程里。配置的参数往往是构建运它们会被传递到构建过程里。配置的参数往往是构建运它们会被传递到构建过程里。配置的参数往往是构建运它们会被传递到构建过程里。配置的参数往往是构建运行环境中的一些环境变量。行环境中的一些环境变量。行环境中的一些环境变量。行环境中的一些环境变量。l lDisable BuildDisable Build:禁用工程构建。禁用工程构建。禁用工程构建。禁用工程构建。l lExecute concurrent builds if necessaryExecute concurrent builds if necessary:并发构建工程。并发构建工程。并发构建工程。并发构建工程。测试版功能,慎用测试版功能,慎用测试版功能,慎用测试版功能,慎用 Parameters of projectParameters of projectParameters of projectParameters of project使用Hudson 构建项目Subversion SettingsSubversion SettingsSubversion SettingsSubversion Settings使用Hudson 构建项目l lBuild after other projects are builtBuild after other projects are built:构建依赖,构建依赖,构建依赖,构建依赖,需指定其它需指定其它需指定其它需指定其它projects projects 的的的的namename;多个项目名间用;多个项目名间用;多个项目名间用;多个项目名间用逗号分隔。逗号分隔。逗号分隔。逗号分隔。l lBuild periodicallyBuild periodically:定期(周期性的)静态执定期(周期性的)静态执定期(周期性的)静态执定期(周期性的)静态执行构建任务,行构建任务,行构建任务,行构建任务,不检查源码仓库是否有变化。不检查源码仓库是否有变化。不检查源码仓库是否有变化。不检查源码仓库是否有变化。l lPoll SCMPoll SCM:轮询调度构建任务。每次执行构建轮询调度构建任务。每次执行构建轮询调度构建任务。每次执行构建轮询调度构建任务。每次执行构建前会检查源码仓库是否有变化,有变化则先执前会检查源码仓库是否有变化,有变化则先执前会检查源码仓库是否有变化,有变化则先执前会检查源码仓库是否有变化,有变化则先执行代码更新,然后再执行构建。行代码更新,然后再执行构建。行代码更新,然后再执行构建。行代码更新,然后再执行构建。ScheduleSchedule的配置规则是有的配置规则是有的配置规则是有的配置规则是有4 4个空格隔开的字符组成,个空格隔开的字符组成,个空格隔开的字符组成,个空格隔开的字符组成,从左到右分别代表:分从左到右分别代表:分从左到右分别代表:分从左到右分别代表:分 时时时时 天天天天 月月月月 年;年;年;年;“*”“*”代表所有。代表所有。代表所有。代表所有。举例:举例:举例:举例:0 12,20*0 12,20*在每天的在每天的在每天的在每天的1212点整和点整和点整和点整和2020点整进行一次构建。点整进行一次构建。点整进行一次构建。点整进行一次构建。0,15,30,45*0,15,30,45*每隔每隔每隔每隔1515分钟进行一次构建分钟进行一次构建分钟进行一次构建分钟进行一次构建注:注:注:注:同一时间级别的多个值间用逗号隔开同一时间级别的多个值间用逗号隔开同一时间级别的多个值间用逗号隔开同一时间级别的多个值间用逗号隔开Schedule UsageSchedule UsageSchedule UsageSchedule UsageExecute shellExecute shell:执行执行执行执行ShellShell脚本进行构建脚本进行构建脚本进行构建脚本进行构建Invoke top-level Maven targetsInvoke top-level Maven targets:调用调用调用调用MavenMaven进行构建进行构建进行构建进行构建Execute Windows batch commandExecute Windows batch command:批处理进行构建批处理进行构建批处理进行构建批处理进行构建Invoke AntInvoke Ant:调用调用调用调用AntAnt对工程进行构建对工程进行构建对工程进行构建对工程进行构建Build Project with AntBuild Project with AntCheckStyle ReportCheckStyle ReportCheckStyle ReportCheckStyle Report