ContinuousIntegration final

Uploaded from authorPOINTLite
Views:
 
Category: Entertainment
     
 

Presentation Description

No description available.

Comments

By: ankita0802 (9 month(s) ago)

Hi please mail me copy of this at ankita_0802@yahoo.in. Thanks in advance.

Presentation Transcript

Continuous Integration with Flex, FlexUnit, and Ant: 

1 Joe Berkovitz VP Engineering Allurent, Inc. Continuous Integration with Flex, FlexUnit, and Ant

Slide2: 

2 Is your build process like a Rube Goldberg contraption? Manual Fragile Missing Current Build Process Image Source: http://mousetrapcontraptions.com/rube-cartoons-2.html

Slide3: 

3 Goal of this talk is to introduce tools and techniques to create a continuous integration based build process. Centralized Automated Self-Testing Ideal Build Process Image Source: http://science.ksc.nasa.gov/shuttle/missions/sts-105/images/contact105_medium.html

Slide4: 

4 Continuous Integration is a software development practice where members of a team integrate their work frequently. Each integration is verified by an automated build and test that detects integration errors as quickly as possible. Continuous Integration Source: http://www.martinfowler.com/articles/continuousIntegration.html

Slide5: 

5 Continuous Integration Cycle Source: http://www.methodsandtools.com/archive/archive.php?id=42

Slide6: 

6 Build Failure Notification

Slide7: 

7 Build Log

Slide8: 

8 Project Dashboard

Slide9: 

9 Project Distributions

Slide10: 

10 Continuous Integration Cycle

Slide11: 

11 Build Process Source Code Build File Generated Assets Build Tool

Slide12: 

12 Project View Project Build File Generated Assets /bin /src Source Code Build Tool /

Slide13: 

13 Build Automation Tool Widely Used Extensive Documentation Cross Platform Robust XML Based Ant

Slide14: 

14 Project Tree governed by a set of automated jobs or "targets" Ideally corresponds 1-to-1 with real projects XML defines targets Key Ant Concepts Property Holds a constant textual value or file location Accessed with ${xyz} syntax Environment or custom defined Target Logical chunk of work Can depend on other targets Works like a script Task Individual command Accepts arguments to control behavior Used in targets

Slide15: 

15 Ant Hello World Demonstration

Slide16: 

16 <project name="HelloWorld" default="build"> <property name="message" value="Hello World!"/> <target name="init" description="Initialize the build"> <tstamp/> </target> <target name="build" depends="init" description="Build the Hello World project"> <echo message="${message} Today is ${TODAY}"/> </target> </project> Hello World Build Script

Hello World Build Script Output: 

Hello World Build Script Output Executed build file Name of target being run Name of target being run Task name and output Result of the build Diagnostic information 17

Slide18: 

18 Ant mxmlc Demonstration

Slide19: 

19 <!-- Using the Flex Ant Tasks provided by Adobe Labs --> <project name="SampleApplication" default="build"> <taskdef resource="flexTasks.tasks" classpath="${basedir}/flexTasks/lib/flexTasks.jar"/> <property name="FLEX_HOME" value="C:/Talk/Flex2.0.1HF2"/> <target name="build"> <mxmlc file="src/${ant.project.name}.mxml" output="bin/${ant.project.name}.swf"> <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/> <source-path path-element="${FLEX_HOME}/frameworks"/> </mxmlc> </target> </project> Compiling an Application

Slide20: 

20 Keep source and output separated Don’t do work you’ve already done Provide reasonable defaults Centralize behavior Predictability Build Practices

Slide21: 

21 Build Templates Source Code Build File Generated Assets Build Tool Build Templates User Specific Overrides

Slide22: 

22 Build Templates Encapsulates Best Practices Handles Flex Applications, Libraries, and Documentation Cross Project Dependencies Multiple Project Builds Antennae

Slide23: 

23 Antennae Demonstration

Slide24: 

24 <project name="SampleApplication" default="build"> <property name="root.dir" location="../"/> <property file="${root.dir}/build-user.properties"/> <import file="${root.dir}/tools/build-imports.xml"/> <path id="flex2.lib.path"/> <target name="build" depends="init,flex2-application" description="Build the application" /> </project> Antennae Build Script

Slide25: 

25 Flex Builder can invoke Ant to compile a Flex project Flex Builder can use Ant targets… to do all build work just to do the non-compilation steps Using Ant and Flex Builder together

Slide26: 

26 Continuous Integration Cycle

Slide27: 

27 Build Verification Supports Flex and ActionScript Asynchronous Testing Facilities Graphical Test Results FlexUnit

Slide28: 

28 FlexUnit Test Results

Slide29: 

29 FlexUnit Demonstration

Slide30: 

30 FlexUnit Automation Test Suite Generation Test Filtering Actionscript to Java Result Reporting Antennae

Slide31: 

31 Antennae Demonstration

Slide32: 

32 <project name="SampleTestApplication" default="test"> <!-- Shared imports --> <import file="${root.dir}/lib/build-assets.xml" /> <path id="flex2.lib.path"> <pathelement location="${flexunit2.swc}"/> <pathelement location="${arc-flexunit2.swc}"/> <!-- Include asset under test here --> </path> <target name="build" depends="init,flex2-test-application" description="Build the test application"/> <target name="test" depends="build,test-flexunit2" description="Run the test application"/> </project> Automated Test Script

Slide33: 

33 Continuous Integration Cycle

Slide34: 

34 Ant Demonstration

Slide35: 

35 Complex Project Demonstration

Slide36: 

36 Complex Project View SubProject1 Assets /bin /src Source Code assets SubProject2 Assets /bin /src Source Code imports Project Build File /proj2 /proj1 /

Slide37: 

37 Many small projects keep dependencies under control But… Flex Builder is very slow when building many Library Projects Solution: Create single Flex Builder "super-project" that has multiple source paths in multiple projects. Building Complex Projects with Flex Builder

Slide38: 

38 Continuous Integration Cycle

Slide39: 

39 Key Concepts Source code repository Clean build machine Runs after every commit Popular platforms CruiseControl Apache Continuum Many others Continuous Integration

Slide40: 

40 Ant http://ant.apache.org/ FlexUnit http://code.google.com/p/as3flexunitlib/ Antennae http://code.google.com/p/antennae/ Continuous Integration Matrix http://docs.codehaus.org/x/gCk Flex Ant Tasks http://labs.adobe.com/wiki/index.php/Flex_Ant_Tasks Resources

Slide41: 

41 Q & A