the tantric team: getting your automated build groove on

Post on 15-Jan-2015

816 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Want to take your build automation to the next level? This session explains the process of setting up an automated software development infrastructure using the Atlassian tools, focusing on continuous integration. This session outlines key steps involved in automating a typical Java project using Ant, Bamboo, FishEye, Clover, JIRA and a large cast of other supporting tools.Customer Speaker: Rik Tam-DanielsKey Takeaways:Continuous integration how-toIntegrating multiple Atlassian tools, along with other development infrastructure

TRANSCRIPT

The Tantric Team: Getting Your Automated

Build Groove OnRik Tamm-Daniels

Build Automation: How to do Bamboo

Rik Tamm-Daniels VP, Engineering June 2nd, 2009

©2007Confiden,al&Proprietary.AllRightsReserved.

•  Located in Newton, MA •  Founded August 2007 •  45+ Employees •  What we do: Unified Information Access

About Attivio

©2007Confiden,al&Proprietary.AllRightsReserved.

•  Attivioʼs Active Intelligence Engine –  Unified Information Access Platform –  Query Unstructured and Structured Information with

the Precision of SQL and the Fuzziness of Search •  Shipped Product (OEM and Direct)

–  Maintenance Release Window at the end of each sprint

–  Minor Release every 3-4 months –  Major Releases Every 12-18 months

What are we building?

©2007Confiden,al&Proprietary.AllRightsReserved.

•  Automate Everything •  Everything builds off of Bamboo •  Maintain High-Quality

–  8000+ Automated Tests –  Code coverage using Clover –  Static Analysis: Findbugs

•  Source code insight/Build Failure Investigation –  Fisheye

Builds @ Attivio

©2007Confiden,al&Proprietary.AllRightsReserved.

•  Our Code Base •  100% Java (core product; 95% including add-on

modules) •  Grails •  Flex •  C++ (3rd Party Code + Wrappers)

•  Installer (Install4J) –  Java based installer –  XML configuration + Graphical UI

Key Product Stats

©2007Confiden,al&Proprietary.AllRightsReserved.

•  Platforms –  Linux –  Windows –  Solaris –  32 and 64-bit

Supported Platforms

©2007Confiden,al&Proprietary.AllRightsReserved.

•  ANT –  Heavy Use of MacroDefs –  Custom Ant Tasks –  Custom JUnit Wrappers for Testing –  Generalized Model (Maven like Ant Structure) –  Heavy use of AntCall and Ant tasks –  Top – Level directory build-import.xml defines all the tasks

that are used by sub-projects –  Dependency management MacroDef at top level inherited

by sub tasks •  Source Control

–  Subversion

Build System

©2007Confiden,al&Proprietary.AllRightsReserved.

Attivio Build Directory Structure

A=vio

Common(3rdParty) App Core

Component1

Component2

Modules

Module1 Module2 Module3

Customers

Customer1 Customer2 Customer3

Installer

©2007Confiden,al&Proprietary.AllRightsReserved.

Component

build

classes dist kit doc clover findbugs checkstyle

src

com

a=vio

test

com

a=vio

Attivio Build Directory Structure (Cont.)

©2007Confiden,al&Proprietary.AllRightsReserved.

Branching Methodology

Source:Collabnet

©2007Confiden,al&Proprietary.AllRightsReserved.

•  We use the Unstable Branching Strategy –  Fits with the agile methodology better that the Agile

Branching strategy •  No need to deal with too many branches •  Since our modules are already self contained we are

continually integrating all modules right in trunk •  Less merging more branching •  Ready to release code at any time without merging or

branching –  In large part because of our test coverage –  Having system, integration, smoke and performance testing as

part of our daily activity

Branching Methodology

©2007Confiden,al&Proprietary.AllRightsReserved.

•  We use Bamboo for Continuous Integration, Nightly Builds and System Test Builds –  Continuous Builds run on each check-in –  Nightly Builds of each Branch are scheduled –  System Test Builds depend upon Nightly Builds

•  All Bamboo Agents run on VMWare Virtual Machines

Bamboo

©2007Confiden,al&Proprietary.AllRightsReserved.

Linuxx64VM

DefaultAgent

Linuxx64VM

Con,nuousTrunkBuild

FullNightlyBuild

Linuxx64VM

OldVersionCon,nuous

Linuxx64VM

QAInstall/SystemTests

Linuxx86VM

FullNightlyBuild

Windowsx86VM

CodeCheck

FullNightlyBuild

Windowsx64VM

FullNightlyBuild

Solarisx64VM

FullNightlyBuild

Build Agent Configuration BuildAgent

BuildType

©2007Confiden,al&Proprietary.AllRightsReserved.

•  Trunk Continuous – check-in triggered •  Trunk Nightly Full (Windows, Linux, Solaris) •  Code Check – Clover, Findbugs, Corbertura,

FlexCover •  System Test •  QA –Product Installer is run on isolated VMs •  Supported Version Continuous •  Support Version Full •  Move Head Tag – ensures consistent SVN version

for all nightly builds

Build Plans

©2007Confiden,al&Proprietary.AllRightsReserved.

•  Nightly builds are scheduled •  Version Consistency

–  An SVN tag is built using a “Move to Head Tag” Plan –  OS Specific builds are kicked off on the tag –  Code coverage Plan is kicked off on the tag –  System Test Plan kicked off on the tag

•  Artifacts –  Short-circuit default behavior –  Send to NFS mount via symbolic link

Nightly Builds

©2007Confiden,al&Proprietary.AllRightsReserved.

•  Run separately from other builds to reduce build times

•  Produces Code Coverage Artifacts –  Clover –  Cobertura –  Findbugs

•  We donʼt use Bambooʼs integrated Clover Report because it doesnʼt ft our build directory structure (each module built separately)

Code Coverage Build

©2007Confiden,al&Proprietary.AllRightsReserved.

•  Runs system tests –  Installs our product to one or more nodes –  Runs functional and/or performance tests –  Tests produce JUnit-like output

System Test Build

©2007Confiden,al&Proprietary.AllRightsReserved.

•  QA picks up the latest successful build artifacts –  Post Build plug-in called to tag successful,

unsuccessful and unsuccessful builds that just had test failures.

•  QA runs multiple Plans testing customer specific, system, performance and scalability tests from Bamboo

•  All QA tests are written using a custom JUnit framework

QA Builds

©2007Confiden,al&Proprietary.AllRightsReserved.

•  Java Docs automatically generated via ANT task and written to the Confluence Wiki

•  Hotfixes are posted on and linked from Confluence to the Artifact Repository

Post-Build Automation

©2007Confiden,al&Proprietary.AllRightsReserved.

•  Why do we do Bamboo? –  Quality, quality, quality –  Time-to-market –  Release Flexibility

Takeaways

©2007Confiden,al&Proprietary.AllRightsReserved.

Questions?

top related