ContinuousIntegration final

50 %
50 %
Information about ContinuousIntegration final

Published on November 28, 2007

Author: Mee12


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: 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: 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: Slide5:  5 Continuous Integration Cycle Source: 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/${}.mxml" output="bin/${}.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}/"/> <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 FlexUnit Antennae Continuous Integration Matrix Flex Ant Tasks Resources Slide41:  41 Q & A

Add a comment

Related presentations

Related pages

Continuous Integration - Martin Fowler

Continuous Integration. Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each ...
Read more

Continuous Integration with Continuum Blog | Oracle Community

Continuous Integration with Continuum Blog. created by chrisadamson on May 26, 2006 5:36 PM, ... Continuous integration is the antidote to integration hell.
Read more

Continuous Integration with Jenkins - YouTube

Continuous Integration with Jenkins ... We made this video as part of a final project for ... Continuous Integration with Apache Maven ...
Read more

Final Chapter: Continuous Mobile Deployment with VSTS ...

In the final installment of my Continuous Integration & Continuous Deployment series, we’ll tackle the real wrench in the system: iOS.
Read more

Continuous Integration -

So "continuous integration" is impossible; ... Our AcceptanceTests are run before push to make the final check that we're OK. The result is that we can go ...
Read more

Continuous Integration & Automated Software Builds

Developers of Continuous Integration Servers, Automated Software Builds and Task Automation. Used and trusted by thousands of people around the world.
Read more

Continuous Integration Server - Continua CI

Continua CI - Continuous Integration that just works. Continua CI is an Easy to use, Scalable and Affordable Continuous Integration Server. With an ...
Read more

Continuous Integration - Assembla Blog

Continuous Delivery, Continuous Integration, and Continuous Deployment often get misused. Learn the difference and how they can all work together to ...
Read more