狠狠撸

狠狠撸Share a Scribd company logo
持续集成在贵濒别虫/础厂3开发中的应用
                                                     JexChan @gmail.com
                                       新浪微博: http://weibo.com/agilelife




Saturday, December 17, 11
持续集成介绍
                            持续集成实践
                            扩展阅读

                            Q&A

Saturday, December 17, 11
一个简单的调查...




Saturday, December 17, 11
Martin Fowler
                               对持续集成的定义




                      持续集成是一种软件开发实践,团队                                  发成员经常集成他们的工
                      作,每天可能会发生多次集成。每次集成都通过自动化的构建(包
                      括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。
                      许多团队发现这个过程可以大大                   少集成的问题,让团队能                        更快的   发
                      内聚的软件。



                            http://martinfowler.com/articles/continuousIntegration.html
Saturday, December 17, 11
持续集成的关键是...




Saturday, December 17, 11
快速反馈
                            自动化构建
                            软件开发实践而不是工具



Saturday, December 17, 11
持续集成实践流程示意
                                TeamB




                            依            一的
                                        代




                                              并
                                              布




                                TeamA


Saturday, December 17, 11
持 集成


                            1. 使用Ant构建Flex应用程序
                            2. 应用Ivy配合Ant进行依赖管理
                            3. 使用Nexus作为版本库仓库
                            4. 使用Hudson/Jenkins作为持续集成服务器



Saturday, December 17, 11
1
                                使用Ant进行Flex应用程序构建
                                flexTasks.jar
                                Flash Builder安装目录sdks4.5.0antlib

                                flexunitTasks-4.1.0-8.jar
                                在下载的FlexUnit压缩包中可以找到


                                build.xml

Saturday, December 17, 11
build.xml
Saturday, December 17, 11
<!-- 加入构建Flex应用程序需要的Ant扩展包flexTasks.jar -->
                     <taskdef resource="flexTasks.tasks"
                     classpath="${FLEX_HOME}/ant/lib/flexTasks.jar" />




Saturday, December 17, 11
<!-- 加入运行单元测试需要的Ant扩展包flexUnitTasks.jar -->
                      <taskdef resource="flexUnitTasks.tasks" >
                         <classpath>
                            <fileset dir="${lib.loc}">
                               <include name="flexUnitTasks*.jar" />
                            </fileset>
                         </classpath>
                      </taskdef>




Saturday, December 17, 11
常用的础苍迟任务
                            <mxmlc>      编译.MXML文件
                            <compc>      编译.AS文件
                            <html-wrapper> 生成SWF文件的HTML包装页面
                            <asdoc>      生成础厂顿辞肠文档

                            <flexunit>   运行单元测试并以XML形式生成测试报告
                            <junitreport> 根据上述XML生成HTML测试报告页面


Saturday, December 17, 11
编译主程应用程序

                    <!-- 编译主程序 -->
                    <target name="compile" depends="init">
                    	 <mxmlc file="${src.loc}/FlexAntFirstStep.mxml"
                    	 	 output="${build.loc}/FlexAntFirstStep.swf" />
                    </target>


                                    ant compile

Saturday, December 17, 11
生成贬罢惭尝封装页面


                            <!-- 使用HTML页面来包装生成的主程序 -->
                            <target name="package" depends="compile">
                            	 <html-wrapper swf="FlexAntFirstStep"
                            	 	 output="${build.loc}"
                            	 	 height="100%" width="100%" />
                            </target>

                                          ant package

Saturday, December 17, 11
生成础厂顿辞肠文档


          <!-- 生成础厂顿辞肠文档 -->
          <target name="build-doc" depends="init">
             <asdoc output="${build.doc}" failonerror="true"
                  	
                  main-title="Created with Ant"
                  	
                  footer="Copyright 2011 jchen">
             <doc-sources path-element="${src.loc}/com/jchen/events"/>
                  </asdoc>
          </target>


                               ant build-doc
Saturday, December 17, 11
生成测试报告齿惭尝文件


                    <!-- 以XML形式输出测试运行报告 -->
                    <target name="test" depends="compile">
                    	 <flexunit swf="${dist.loc}/TestRunner.swf"
                    toDir="${report.loc}" haltonfailure="false" />
                    </target>


                                   ant test

Saturday, December 17, 11
生成测试报告贬罢惭尝页面

            <!-- 根据test阶段生成的XML文件来生成测试运行报告的HTML页面 -->
            <target name="report" depends="test">
            	 <junitreport todir="${report.loc}">
            	 	 <fileset dir="${report.loc}">
            	 	 	 <include name="TEST-*.xml" />
            	 	 </fileset>
            	 	 <report format="frames" todir="${report.loc}/html" />
            	 </junitreport>
            </target>

                               ant report
Saturday, December 17, 11
操作演示...




Saturday, December 17, 11
小技巧:
                            Flash Builder安装目录sdks4.5.0bin


                            mxmlc -help list advanced details
                            查看命令参数及用法



Saturday, December 17, 11
2
                                应用Ivy配合Ant进行依赖管理

                                                  FlexCustomLib


                                      TeamA
                                                                  publish

                                                                                    FlexCustomLib-1.0.0.swc
                                                                            Nexus   FlexCustomLib-1.1.0.swc
                                                                                    FlexCustomLib-1.2.0.swc

                                                       resolve




                                MainApplication


Saturday, December 17, 11
ivy.xml   依赖关系配置与设定

                            ivysettings.xml   仓库配置及路径匹配模式设置

                            build.xml   调用Ivy相关的任务完成依赖关系解决




Saturday, December 17, 11
build.xml 导入ivy命名空间


               <?xml version="1.0" encoding="UTF-8" standalone="no"?>
               <project name="FlexCustomLibs"
               	 xmlns:ivy="antlib:org.apache.ivy.ant">
               </project>




Saturday, December 17, 11
3
                                搭建Nexus版本仓库(私服)
                                http://nexus.sonatype.org/downloads
                                将war包部署到常见的Web容器中 (nexus-webapp-1.9.2.3.war)




Saturday, December 17, 11
Saturday, December 17, 11
操作演示...




Saturday, December 17, 11
4
                                搭建Hudson持续集成服务器
                                http://java.net/downloads/hudson/war/

                                也可以将war包部署到常见的Web容器中 (hudson-2.2.0.war)


                                java -jar hudson.war --httpPort=8000




Saturday, December 17, 11
Saturday, December 17, 11
应用持续集成时常遇到的问题

                            . 频繁构建习惯(合适的轮询规则设定)
                            . Ant脚本与程序同等重要
                            . 合理规划版本库布局




Saturday, December 17, 11
推荐阅读书籍与站点
                            . 官方文档
                            (flexantTasks/flexunitTasks/compile args)

                            . Martin Fowler相关文章
                             http://martinfowler.com/articles/continuousIntegration.html
                            . 书籍
                            《持续交付-发布可靠软件的系统方法》




Saturday, December 17, 11
谢谢?~?~
                            http://weibo.com/agilelife/
                            https://github.com/jexchan/9riapreso




Saturday, December 17, 11

More Related Content

持续集成在贵濒别虫冲补蝉3应用程序中的应用惫4

  • 1. 持续集成在贵濒别虫/础厂3开发中的应用 JexChan @gmail.com 新浪微博: http://weibo.com/agilelife Saturday, December 17, 11
  • 2. 持续集成介绍 持续集成实践 扩展阅读 Q&A Saturday, December 17, 11
  • 4. Martin Fowler 对持续集成的定义 持续集成是一种软件开发实践,团队 发成员经常集成他们的工 作,每天可能会发生多次集成。每次集成都通过自动化的构建(包 括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。 许多团队发现这个过程可以大大 少集成的问题,让团队能 更快的 发 内聚的软件。 http://martinfowler.com/articles/continuousIntegration.html Saturday, December 17, 11
  • 6. 快速反馈 自动化构建 软件开发实践而不是工具 Saturday, December 17, 11
  • 7. 持续集成实践流程示意 TeamB 依 一的 代 并 布 TeamA Saturday, December 17, 11
  • 8. 持 集成 1. 使用Ant构建Flex应用程序 2. 应用Ivy配合Ant进行依赖管理 3. 使用Nexus作为版本库仓库 4. 使用Hudson/Jenkins作为持续集成服务器 Saturday, December 17, 11
  • 9. 1 使用Ant进行Flex应用程序构建 flexTasks.jar Flash Builder安装目录sdks4.5.0antlib flexunitTasks-4.1.0-8.jar 在下载的FlexUnit压缩包中可以找到 build.xml Saturday, December 17, 11
  • 11. <!-- 加入构建Flex应用程序需要的Ant扩展包flexTasks.jar --> <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar" /> Saturday, December 17, 11
  • 12. <!-- 加入运行单元测试需要的Ant扩展包flexUnitTasks.jar --> <taskdef resource="flexUnitTasks.tasks" > <classpath> <fileset dir="${lib.loc}"> <include name="flexUnitTasks*.jar" /> </fileset> </classpath> </taskdef> Saturday, December 17, 11
  • 13. 常用的础苍迟任务 <mxmlc> 编译.MXML文件 <compc> 编译.AS文件 <html-wrapper> 生成SWF文件的HTML包装页面 <asdoc> 生成础厂顿辞肠文档 <flexunit> 运行单元测试并以XML形式生成测试报告 <junitreport> 根据上述XML生成HTML测试报告页面 Saturday, December 17, 11
  • 14. 编译主程应用程序 <!-- 编译主程序 --> <target name="compile" depends="init"> <mxmlc file="${src.loc}/FlexAntFirstStep.mxml" output="${build.loc}/FlexAntFirstStep.swf" /> </target> ant compile Saturday, December 17, 11
  • 15. 生成贬罢惭尝封装页面 <!-- 使用HTML页面来包装生成的主程序 --> <target name="package" depends="compile"> <html-wrapper swf="FlexAntFirstStep" output="${build.loc}" height="100%" width="100%" /> </target> ant package Saturday, December 17, 11
  • 16. 生成础厂顿辞肠文档 <!-- 生成础厂顿辞肠文档 --> <target name="build-doc" depends="init"> <asdoc output="${build.doc}" failonerror="true" main-title="Created with Ant" footer="Copyright 2011 jchen"> <doc-sources path-element="${src.loc}/com/jchen/events"/> </asdoc> </target> ant build-doc Saturday, December 17, 11
  • 17. 生成测试报告齿惭尝文件 <!-- 以XML形式输出测试运行报告 --> <target name="test" depends="compile"> <flexunit swf="${dist.loc}/TestRunner.swf" toDir="${report.loc}" haltonfailure="false" /> </target> ant test Saturday, December 17, 11
  • 18. 生成测试报告贬罢惭尝页面 <!-- 根据test阶段生成的XML文件来生成测试运行报告的HTML页面 --> <target name="report" depends="test"> <junitreport todir="${report.loc}"> <fileset dir="${report.loc}"> <include name="TEST-*.xml" /> </fileset> <report format="frames" todir="${report.loc}/html" /> </junitreport> </target> ant report Saturday, December 17, 11
  • 20. 小技巧: Flash Builder安装目录sdks4.5.0bin mxmlc -help list advanced details 查看命令参数及用法 Saturday, December 17, 11
  • 21. 2 应用Ivy配合Ant进行依赖管理 FlexCustomLib TeamA publish FlexCustomLib-1.0.0.swc Nexus FlexCustomLib-1.1.0.swc FlexCustomLib-1.2.0.swc resolve MainApplication Saturday, December 17, 11
  • 22. ivy.xml 依赖关系配置与设定 ivysettings.xml 仓库配置及路径匹配模式设置 build.xml 调用Ivy相关的任务完成依赖关系解决 Saturday, December 17, 11
  • 23. build.xml 导入ivy命名空间 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <project name="FlexCustomLibs" xmlns:ivy="antlib:org.apache.ivy.ant"> </project> Saturday, December 17, 11
  • 24. 3 搭建Nexus版本仓库(私服) http://nexus.sonatype.org/downloads 将war包部署到常见的Web容器中 (nexus-webapp-1.9.2.3.war) Saturday, December 17, 11
  • 27. 4 搭建Hudson持续集成服务器 http://java.net/downloads/hudson/war/ 也可以将war包部署到常见的Web容器中 (hudson-2.2.0.war) java -jar hudson.war --httpPort=8000 Saturday, December 17, 11
  • 29. 应用持续集成时常遇到的问题 . 频繁构建习惯(合适的轮询规则设定) . Ant脚本与程序同等重要 . 合理规划版本库布局 Saturday, December 17, 11
  • 30. 推荐阅读书籍与站点 . 官方文档 (flexantTasks/flexunitTasks/compile args) . Martin Fowler相关文章 http://martinfowler.com/articles/continuousIntegration.html . 书籍 《持续交付-发布可靠软件的系统方法》 Saturday, December 17, 11
  • 31. 谢谢?~?~ http://weibo.com/agilelife/ https://github.com/jexchan/9riapreso Saturday, December 17, 11