SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
持续集成在Flex/AS3开发中的应用
                                                     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
常用的Ant任务
                            <mxmlc>      编译.MXML文件
                            <compc>      编译.AS文件
                            <html-wrapper> 生成SWF文件的HTML包装页面
                            <asdoc>      生成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封装页面


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

                                          ant package

Saturday, December 17, 11
生成ASDoc文档


          <!-- 生成ASDoc文档 -->
          <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文件


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


                                   ant test

Saturday, December 17, 11
生成测试报告HTML页面

            <!-- 根据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

Contenu connexe

Similaire à 持续集成在Flex_as3应用程序中的应用v4

SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践
lifesinger
 
Flex 3 Cookbook 中文版V1
Flex 3 Cookbook 中文版V1Flex 3 Cookbook 中文版V1
Flex 3 Cookbook 中文版V1
yiditushe
 
Tmall demo environment
Tmall demo environmentTmall demo environment
Tmall demo environment
tbmallf2e
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
yiditushe
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
cachowu
 
X Fire开发指南
X Fire开发指南X Fire开发指南
X Fire开发指南
yiditushe
 
Liferay环境搭建
Liferay环境搭建Liferay环境搭建
Liferay环境搭建
donotbeevil
 
利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版
xingsu1021
 
Velocity beijing 2011 xianyu
Velocity beijing 2011   xianyuVelocity beijing 2011   xianyu
Velocity beijing 2011 xianyu
tbmallf2e
 
iOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techpartyiOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techparty
Gump Law
 

Similaire à 持续集成在Flex_as3应用程序中的应用v4 (20)

SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
Flex 入门培训
Flex 入门培训Flex 入门培训
Flex 入门培训
 
Flex 3 Cookbook 中文版V1
Flex 3 Cookbook 中文版V1Flex 3 Cookbook 中文版V1
Flex 3 Cookbook 中文版V1
 
Tmall demo environment
Tmall demo environmentTmall demo environment
Tmall demo environment
 
Flex国际化I18N解决方案
Flex国际化I18N解决方案Flex国际化I18N解决方案
Flex国际化I18N解决方案
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
 
Flex 4.5 action custom component development
Flex 4.5 action custom component developmentFlex 4.5 action custom component development
Flex 4.5 action custom component development
 
X Fire开发指南
X Fire开发指南X Fire开发指南
X Fire开发指南
 
Liferay环境搭建
Liferay环境搭建Liferay环境搭建
Liferay环境搭建
 
利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版利用Cent Os快速构建自己的发行版
利用Cent Os快速构建自己的发行版
 
Demo review
Demo reviewDemo review
Demo review
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档
 
自由軟體鑄造場_20111023_Subversion版本控制系統之操作_曾義峰(ant)
自由軟體鑄造場_20111023_Subversion版本控制系統之操作_曾義峰(ant)自由軟體鑄造場_20111023_Subversion版本控制系統之操作_曾義峰(ant)
自由軟體鑄造場_20111023_Subversion版本控制系統之操作_曾義峰(ant)
 
Velocity beijing 2011 xianyu
Velocity beijing 2011   xianyuVelocity beijing 2011   xianyu
Velocity beijing 2011 xianyu
 
项目自动化实施
项目自动化实施项目自动化实施
项目自动化实施
 
Windows智慧运维 深入解析USMT配置文件
Windows智慧运维 深入解析USMT配置文件Windows智慧运维 深入解析USMT配置文件
Windows智慧运维 深入解析USMT配置文件
 
iOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techpartyiOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techparty
 

持续集成在Flex_as3应用程序中的应用v4

  • 1. 持续集成在Flex/AS3开发中的应用 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. 常用的Ant任务 <mxmlc> 编译.MXML文件 <compc> 编译.AS文件 <html-wrapper> 生成SWF文件的HTML包装页面 <asdoc> 生成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封装页面 <!-- 使用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. 生成ASDoc文档 <!-- 生成ASDoc文档 --> <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文件 <!-- 以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. 生成测试报告HTML页面 <!-- 根据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