Transcript
Page 1: The Tantric Team: Getting Your Automated Build Groove On

The Tantric Team: Getting Your Automated

Build Groove OnRik Tamm-Daniels

Page 2: The Tantric Team: Getting Your Automated Build Groove On

Build Automation: How to do Bamboo

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

Page 3: The Tantric Team: Getting Your Automated Build Groove On

©2007Confiden,al&Proprietary.AllRightsReserved.

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

About Attivio

Page 4: The Tantric Team: Getting Your Automated Build Groove On

©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?

Page 5: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 6: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 7: The Tantric Team: Getting Your Automated Build Groove On

©2007Confiden,al&Proprietary.AllRightsReserved.

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

Supported Platforms

Page 8: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 9: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 10: The Tantric Team: Getting Your Automated Build Groove On

©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.)

Page 11: The Tantric Team: Getting Your Automated Build Groove On

©2007Confiden,al&Proprietary.AllRightsReserved.

Branching Methodology

Source:Collabnet

Page 12: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 13: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 14: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 15: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 16: The Tantric Team: Getting Your Automated Build Groove On
Page 17: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 18: The Tantric Team: Getting Your Automated Build Groove On
Page 19: The Tantric Team: Getting Your Automated Build Groove On
Page 20: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 21: The Tantric Team: Getting Your Automated Build Groove On
Page 22: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 23: The Tantric Team: Getting Your Automated Build Groove On
Page 24: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 25: The Tantric Team: Getting Your Automated Build Groove On
Page 26: The Tantric Team: Getting Your Automated Build Groove On

©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

Page 27: The Tantric Team: Getting Your Automated Build Groove On

©2007Confiden,al&Proprietary.AllRightsReserved.

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

Takeaways

Page 28: The Tantric Team: Getting Your Automated Build Groove On

©2007Confiden,al&Proprietary.AllRightsReserved.

Questions?


Top Related