Extreme CI Savings with Bamboo 3.1: The JIRA Story
Upcoming SlideShare
Loading in...5
×
 

Extreme CI Savings with Bamboo 3.1: The JIRA Story

on

  • 2,624 views

 

Statistics

Views

Total Views
2,624
Views on SlideShare
2,316
Embed Views
308

Actions

Likes
0
Downloads
17
Comments
0

9 Embeds 308

http://summit.atlassian.com 258
https://summit.atlassian.com 31
http://www.atlassian.com 8
https://wacdev.internal.atlassian.com 5
url_unknown 2
http://magnolia-staging.private.atlassian.com:8080 1
http://twitter.com 1
http://a0.twimg.com 1
https://www.atlassian.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Finally if we got a successful CI build, we would have our artifacts deployed to Maven, but it took us 8 hours to run this build in addition to any previous failed builds.
  • We can’t run CI in 8 hours
  • So we had to break things up. But the sad story is we have no way of aggregating the results of all 15 jobs. Though to get test feedback we did, of course, speed up this part of the CI loop.
  • Though we broke up our build, we still had to run our serialized testing build to test and deploy our maven jira artifacts. We wanted to have artifacts fully tested because so many of our other applications depend on these artifacts to build like the numerous great plugins that are available.
  • So we had to break things up. But the sad story is we have no way of aggregating the results of all 15 jobs. Though to get test feedback we did, of course, speed up this part of the CI loop.
  • A developer validates change locally, updates their checkout workspace, runs tests, then commits. Bamboo detects the changes in SCM and launches our functional tests and selenium web browser tests. We have these both in two plans and then we deploy our artifacts to maven if our functional test plan passes. On a nightly basis we then can consume the latest passing JIRA artifacts into our four sets of testing. We do performance regression tests for obvious reasons. By testing the SAME functional tests now against different databases and different distributions, we can ENSURE that any tests failures here are because of the database or distribution itself failing. We especially get this with tests against Oracle. Finally, we also want to test JIRA plugins that need to consume the JIRA artifacts as a dependency to ensure that these also do not break with the changes to JIRA.
  • If our Outer Loops passes we can then be confident about dogfooding JIRA inside Atlassian on our production environments to get soak time. This will then lead to more confidence to release JIRA to customers.
  • Wow that’s a lot of tests in your Outer Loop CI!!!
  • We have Bamboo 3.1!
  • Adding stages and jobs are fast, especially when we can clone jobs. Each stage must pass in order to go onto the next.
  • Recall our old build… and now we give it an extreme makeover
  • Though we broke up our build, we still had to run our serialized testing build to test and deploy our maven jira artifacts. We wanted to have artifacts fully tested because so many of our other applications depend on these artifacts to build like the numerous great plugins that are available.
  • Recall our old build… and now we give it an extreme makeover
  • We can have our broken up functional tests and now be able to act upon those results because they are aggregated through stages. One build now runs faster and we can do more with those results.
  • Our old selenium CI plan with stages has a timing of 61 minutes +/- 5 minutes depending on my elastic agent startup times and IO on those agents.
  • Each of our test jobs checkout JIRA source from SVN and then compiles all of the JIRA artifacts. We think that’s a waste of time that each job does this and would like to use artifact passing for re-use and to reduce times.
  • Adding a producer job to build a set of shared artifacts is straight-forward in Bamboo
  • Our new selenium CI plan is reduced to 38 minutes +/- 5 minutes depending on my elastic agent startup times and IO on those agents.
  • Adding stages and jobs are fast, especially when we can clone jobs. Each stage must pass in order to go onto the next.
  • I can get some cheap infrastructure with amazon and spot pricing now in Bamboo 3.1!
  • JIRA’s build server is able to get a spot instance for each linux and windows at greatly reduced prices. We had one here, that was not able to be a spot instance and was still able to boot with regular pricing to give us the infrastructure we need.
  • I save $2000 per month by using spot instances for my JIRA bamboo server!!!!
  • Which one of these factors do you want to start with to get your builds going in the right direction or reliable, faster, and cheaper?

Extreme CI Savings with Bamboo 3.1: The JIRA Story Extreme CI Savings with Bamboo 3.1: The JIRA Story Presentation Transcript

  •  
  • Extreme CI Savings with Bamboo 3.1
  • The Story…
    • JIRA’s past CI problems
    • Create new CI goals
    • Staging
    • Artifact Passing
    • Outsource Infrastructure and Reduce Cost
    • The Future of our CI
  • Where were we for CI? Compile 11,000 Junit Tests 3000 Functional Tests Deploy JIRA Artifacts Minimum 8 Hours in Serial
  • Where were we for CI? Compile 11,000 Junit Tests 3000 Functional Tests Deploy JIRA Artifacts We had to break things up
  • Where were we for CI? Test 1 SCM Trigger Test 6 Test 11 Test 2 Test 7 Test 12 Test 3 Test 8 Test 13 Test 4 Test 9 Test 5 Test 10 Test 14 Test 15
  • We still had to…. Compile 11,000 Junit Tests 3000 Functional Tests Deploy JIRA Artifacts Minimum 8 Hours in Serial
  • Unable to Aggregate Results 15 builds with 15 results Test 1 SCM Trigger Test 6 Test 11 Test 2 Test 7 Test 12 Test 3 Test 8 Test 13 Test 4 Test 9 Test 5 Test 10 Test 14 Test 15 ? ? ? ? ?
  • Old JIRA Release Build Compile 11,000 Junit Tests 3000 Functional Standalone 3000 Functional War 3000 Functional Windows 3000 Functional Source 23 HOURS 1 Build
    • Chance of infrastructure or test failure
    • Impacts Validation time
    • Release slip
  • What do we want?
    • Run all tests as a fast CI loop
    • QA Engineers focused on feature stories
    • Deploy JIRA on green builds
    • Release JIRA faster!
  • What do we want?
    • Run all tests as a fast CI loop
    • QA Engineers focused on feature stories
    • Deploy JIRA on green builds
    • Release JIRA faster!
  • What do we want?
    • Run all tests as a fast CI loop
    • QA Engineers focused on feature stories
    • Deploy JIRA on green builds
    • Release JIRA faster!
  • What do we want?
    • Run all tests as a fast CI loop
    • QA Engineers focused on feature stories
    • Deploy JIRA on green builds
    • Release JIRA faster!
  • JIRA CI Design Goals Functional Tests Selenium Web Browser Tests Performance Tests Database Tests Supported Plugins Tests Inner Loop CI Outer Loop CI Distribution Tests
  • CI Feeds Release Validation
    • There’s more!!!
    JIRA Outer Loop CI Validation
  • Outer Loop CI for Release
    • 46774
    • Total Tests
  • Seems like a mountain of tests to climb and is out of reach
  • But we have Bamboo 3.1!
  • Stages Job 1 Job 2 Job 3 Job 4 Job 5 Job 6 Job 7 Job 8 Job 9
  • Stages transforms our old CI 15 builds with 15 results Test 1 SCM Trigger Test 6 Test 11 Test 2 Test 7 Test 12 Test 3 Test 8 Test 13 Test 4 Test 9 Test 5 Test 10 Test 14 Test 15
  • We still had to…. Compile 11,000 Junit Tests 3000 Functional Tests Deploy JIRA Artifacts Minimum 8 Hours in Serial
  • Stages transforms our old CI 15 builds with 15 results Test 1 SCM Trigger Test 3 Test 11 Test 2 Test 7 Test 12 Test 3 Test 8 Test 13 Test 4 Test 9 Test 5 Test 10 Test 14 Test 15 1 build 15 jobs 1 result
  • New CI Plan: Add a Stage Test 1 Test 3 Test 11 Test 2 Test 7 Test 12 Test 3 Test 8 Test 13 Test 4 Test 9 Test 5 Test 10 Test 14 Test 15 Deploy Artifacts to Maven Nexus Repository Continue to Next Stage if Previous Passes One Build Plan
  • JIRA CI as a Producer
    • JIRA CI Build Plan
    Maven Deploy Studio JIRA Integration Greenhopper Plugin Deploy JIRA to Test Server Distro, Perf, DB Tests Nexus Maven Repository Consumers depend on Maven Deploy
  • JIRA CI: From 8 hours to… Stages
  • JIRA Release from 23 hours… Stages
  • Stages
    • Aggregated Results
    • Deployed JIRA to Maven
    • Other applications can consume
    • Deployed JIRA to QA Test Servers
  • Artifact Passing Produce Artifact Consumer 1 Consumer 2 Consumer 3 Copies original artifact
  • Remove Redundancies Test 1 Test 3 Test 11 Test 2 Test 7 Test 12 Test 3 Test 8 Test 13 Test 4 Test 9 Test 5 Test 10 Test 14 Test 15 Produce Application Artifacts
  • How does it work?
    • Producer artifact definitions
    • Consumer artifact definitions
    • Builder plumbing
  • Maven Plumbing
    • <dependency>
    • <groupId>com.atlassian.jira</groupId>
    • <artifactId>jira-webapp-dist</artifactId>
    • <version>${project.version}</version>
    • <type>war</type>
    • <scope> system </scope>
    • <systemPath>${basedir}/PassedArtifacts/jira-webapp-dist-${project.version}.war</systemPath>
    • </dependency>
  • Maven Plumbing
    • <dependency>
    • <groupId>com.atlassian.jira</groupId>
    • <artifactId>jira-webapp-dist</artifactId>
    • <version>${project.version}</version>
    • <type>war</type>
    • <scope>system</scope>
    • <systemPath>${basedir}/ PassedArtifacts /jira-webapp-dist-${project.version}.war</systemPath>
    • </dependency>
  • The New Selenium CI Plan
  • Multi Module Application Module 1 Distribution Deploy to Test Server 1 Deploy to Test Server 2 Module 2 Module 3 Module 4
  • Artifact Passing
    • Helped to improve JIRA’s Selenium CI testing build
    • Remove redundant checkouts and compilation
    • Over 10 minutes saving compute time per job!
  • The Build Infrastructure
    • Reliability
    • Reproducible
    • Redundant
    • Allow for Growth
    • Easy to Administrate
    • Cost effective
  • JIRA development cost for using Amazon? $4000 per month!!!
  • Bamboo 3.1 Saves you Money! Configurable spot price bids
  • Linux Spot Instance Windows Regular Instance Windows Spot Instance
  • What is this worth to JIRA? $2000 per month!!!
  • Our CI Future Infrastructure Improvements DVCS Bamboo upgrade from 3.0 to 3.1.1: Tasks Personal Builds Bamboo 3.2 Amazon enhancements Bamboo 3.2 restart failed tasks
  • The Story… JIRA CI Past Problems Slow, unreliable Created New CI Goals Faster promotional CI Bamboo Staging Aggregated Results, Deployment Bamboo Artifact Passing Speed, Re-use, Deployment Outsourcing Infrastructure Amazon, Admin, Attractive Pricing Deliver Awesome