101
PETER LESCHEV TEAM LEAD ATLASSIAN @PETERLESCHEV Build Engineering @ Atlassian: Scaling to 150k builds per month & beyond Puppet Camp - Singapore 2015

How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Embed Size (px)

Citation preview

Page 1: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

PETER LESCHEV • TEAM LEAD • ATLASSIAN • @PETERLESCHEV

Build Engineering @ Atlassian:Scaling to 150k builds per month & beyond

Puppet Camp - Singapore 2015

Page 2: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

T E A M

I N T R O D U C T I O N

I N F R A S T R U C T U R E

B A M B O O S E RV E R S

Introduction

C O N C L U S I O N

Page 3: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Build platform & services used internally within

Atlassian to build, test & deliver

software

Page 4: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Developers expect a reliable infrastructure

& fast CI feedback

Page 5: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

• 12 Bamboo Servers• maven.atlassian.com / 9 Nexus instances / 9 TB

• 7 Nexus proxies for internal traffic

• Monitoring• opsview, graphite, statsd, newrelic, datadog

Build Engineering today @ Atlassian

• 1200 build agents on EC2• include SCM clients, JDKs, JVM build tools, databases, headless

browser testing, Python builds, NodeJS, installers & more

• Maintain 20 AMIs of various build configurations

Page 6: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

4 years ago:

Builds per month

21k

Page 7: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Last month:

Builds per month

225k

Page 8: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Build Engineering @ Atlassian

Page 9: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015
Page 10: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

JIRA alone has

Automated tests

49k

Page 11: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015
Page 12: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

3 stories of gaining maturity to handle Atlassian growth

Page 13: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

I N T R O D U C T I O N

T E A M

I N F R A S T R U C T U R E

B A M B O O S E RV E R S

Team

C O N C L U S I O N

Page 14: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

History of team roles

Page 15: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Individual Engineers

Information silos

Fault investigation, requests for advice, unplanned work

Little project work

Very interrupt driven

Duplication of effort

Limited to customer driven changes

Page 16: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Disturbed roleKnowledge Transfer

when switching between project / disturbed roles is difficult

More project workNon-disturbed can focus on larger tasks

Context switching

Reduction in duplication of effort, promotes collaboration within the team

2 week rotation

Page 17: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Team expands

Build Engineers

Page 18: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Team expands

Build Engineers

Page 19: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Team expands

Infra Engineers

Developers

Build Engineers

Page 20: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Team expands

Infra Engineers

Developers

Build Engineers

Page 21: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Disturbed for Dev & Infra

Too interrupt driven

To encourage knowledge transfer between infra & dev

Staggered changeoversMinimising disruption due to context switching

Disturbed pairing

Couldn’t handle smaller customer raised requests & interrupt driven work

Page 22: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Supporting Developers

team channel

Page 23: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Supporting Developers

Page 24: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Supporting Developers

Page 25: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

1. Measure the pain

2. Continuous Improvement

Page 26: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Technical Debt

Page 27: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Technical Debt

Page 28: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Contact Rate

+ Confluence Questions+ Hipchat queriesCustomer JIRA issues

Number of Developers

( )÷

=

Page 29: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Contact Rate

Page 30: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

The Shield

http://www.clker.com/cliparts/e/d/c/4/11970889822084687040sinoptik_Medieval_shield.svg.hi.png

Page 31: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Rebranding MaintenanceDisturbed

Removing the negative attitude towards the old role within the team

Page 32: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Project

work

Maintenance

The Shield

Page 33: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

How do we avoid this in the future?P E T E R L E S C H E V

“ ”

Page 34: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Fix it now, fix it for the future

Page 35: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Self service

Page 36: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Chat bots

Self Service

Page 37: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Self Service

Maven Self Help Tool

Page 38: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

I N T R O D U C T I O N

I N F R A S T R U C T U R E

T E A M

B A M B O O S E RV E R S

Infrastructure

C O N C L U S I O N

Page 39: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Infrastructure as Code

= Puppet + SCM ?

Page 40: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

4 years ago…

Started using Puppet

Manually maintained snow flakes

Page 41: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Production rollout

puppetmaster

build agents

Page 42: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Production rollout failure

puppetmaster

build agents

Page 43: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Low confidence of change

Page 44: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015
Page 45: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

atlassian.com/git

Page 46: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Style in Pull Requests

Page 47: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Puppet Lint

https://github.com/rodjek/puppet-lintTim Sharpe

@rodjek

Runs checks & posts results, fails if there are any warnings or errors

Automated Build

Automated Style Checking

Page 48: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

• Coding on Puppet Master• Culture of manually modifying production - Configuration Drift• Impact on Builds

Using Staging for Development

puppetmaster

build agents

staging puppet environment

Page 49: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Vagrant

www.vagrantup.comMitchell Hashimoto

@mitchellh

Packer

packer.io

Page 50: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Rolling out to stagingRolling out to production

Broken build agents

Developing locally

Page 51: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Behaviour Driven Development

Cucumber

https://github.com/cucumber/aruba

Page 52: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

But it works on my machineE V E RY D E V E L O P E R

“ ”

Page 53: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Continuous Integration‘From scratch’ provisioning

Confidence that you can rebuild in disaster

Page 54: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

The Pets: you give nice names, you stroke them, and when they get ill, you nurse them back to health, taking a long time over it.

”The Cattle: you give them numbers. When they get ill, you shoot them T I M B E L L , C E R N

Page 55: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Provisioning from scratch is slow

Page 56: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Profiling Puppet Runs

Add “--evaltrace” to puppet apply

+ =Collect and show the longest occurrences of:“Evaluated in ([\d\.]+) seconds”

Page 57: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Profiling Cucumber runs

http://itshouldbeuseful.wordpress.com/2010/11/10/find-your-slowest-running-cucumber-features/

Page 58: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

• Faster local provisioning• Different class of problems found• Closer to production

Delta Provisioning

‘from scratch’ provision ‘delta’ provision

provision VM

export VM fileshare

import VM box

provision VM

on success

Page 59: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Broken buildsmaster

Page 60: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Branch builds

BUILDENG-5670

BUILDENG-5669

master

Page 61: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Infrequent Releases

Page 62: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

• Puppet runs impacted running builds• Disabling all the build agents

• Manually performing the roll out

• git clone / librarian-puppet / symlink update on puppetmaster

• Kick off puppet on all the build agents

• Enabling all the build agents

• Set of Puppet environments for every Bamboo server

Painful Puppet Rollouts

Page 63: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Graceful Service restarts

+Bamboo Agent JVM process watches for touch file & shutdowns when Idle(written as a Bamboo Plugin)

Page 64: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Puppet environments reduced

stagingproduction

server1_stagingserver1_productionserver2_stagingserver2_productionserver3_stagingserver3_production

etc

Page 65: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Bamboo Deployments

How environments work

Task list Available agents

Available agents

Available agents

Destination server

Destination server

Production

TASK 1TASK 2

TASK 1TASK 2

TASK 1TASK 2

1.3

Task list

Task list Available agents

TASK 1TASK 2

Task list

Task list

Release

Production

TASK 1TASK 2

1.3

Task list Available agents Destination server

Production

TASK 1TASK 2

1.3

Available agents Destination server

TASK 1TASK 2

Task list

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

staging

production

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

build• git clone

• librarian-puppet

• to specific environments

• scp to puppet master & symlink update

test deploy• ‘delta’ & ‘from scratch’

vagrant provisions

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Releasebuild & test AMIs

• Generated using Packer

• AMIs on Bamboo Servers updateddeploy AMIs

Page 66: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Puppet Build, Test & Deploy Pipeline

Page 67: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Puppet Build, Test & Deploy Pipeline

Page 68: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Terraform Pipeline

Plan & Apply changesof staging & production environments

terraform.io

Page 69: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

‘open prs’ Bot

Page 70: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Less human effort through automation

= Increased frequency

& reliability of releases

Page 71: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

SnowflakesPets

CattleStateless Machines

Page 72: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Infrastructure consistency is key

Page 73: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Challengesintroduces instability

Lots of packagesLarge number of constantly updating package dependencies

External dependencies

Page 74: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

I N T R O D U C T I O N

B A M B O O S E RV E R S

T E A M

I N F R A S T R U C T U R E

Bamboo Servers

C O N C L U S I O N

Page 75: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

At scale is hard

Page 76: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Bamboo Servers

12

Page 77: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Build Plans

3500

Page 78: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Plan Branches

14k

Page 79: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Bamboo is great, but hard to manage at scale

Page 80: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Build Configuration as code

Page 81: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Plan Templates

Bamboo Plugin:

Page 82: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Plan Templates

Checked into SCM

Bamboo Plugin:Reusable snippets

changes can be code reviewed

Export plans for backup, or move to another Bamboo instance easily

Bulk changes

Export existing plans

Update 100s of job requirements with a single commit

Page 83: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Pushing Bamboo to its limits

Page 84: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Agent Smith Wallboard

Bamboo Plugin:

Trend data sent to Graphite

https://marketplace.atlassian.com/plugins/com.atlassian.bamboo.plugin.agent-smith-wallboard

Page 85: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015
Page 86: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Add metrics, then alert on them

Page 87: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Bamboo Monitoring Plugin

Metrics to graphiteBamboo Plugin:

Bamboo HealthActiveMQ, Database connections, Tomcat, JVM Memory usage.

Background thread workers. Number of plans / plan branches, plans / plan branches for deletion.

https://marketplace.atlassian.com/plugins/com.atlassian.bamboo.plugin.bamboo-monitoring-plugin

Page 88: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015
Page 89: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

When a Bamboo Server starts

misbehaving…

Page 90: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Infrastructure differences? Is it Bamboo Configuration?

Is it a Bamboo Plugin? Is it Bamboo the product?

How is it being used?

Page 91: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Infrastructure consistency of Bamboo Servers is key

Page 92: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Bamboo Puppet provider

+

REST API for Administration

Bamboo Puppet Provider

REST calls

https://forge.puppetlabs.com/atlassian/bamboo_rest

Page 93: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Bamboo Puppet provider

https://forge.puppetlabs.com/atlassian/bamboo_rest

Hipchat Notification

Managed via Puppet

Page 94: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Bamboo Plugins‘Continuous Plugin Deployment’ Task

This text box is not intended to contain a bunch of copy.

1-click upgrades of

How environments work

Task list Available agents

Available agents

Available agents

Destination server

Destination server

Production

TASK 1TASK 2

TASK 1TASK 2

TASK 1TASK 2

1.3

Task list

Task list Available agents

TASK 1TASK 2

Task list

Task list

Release

Production

TASK 1TASK 2

1.3

Task list Available agents Destination server

Production

TASK 1TASK 2

1.3

Available agents Destination server

TASK 1TASK 2

Task list

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

All Bamboo Servers

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

build

Deploy

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

build & test AMIs

Build

https://marketplace.atlassian.com/plugins/com.atlassian.bamboo.plugins.deploy.continuous-plugin-deployment

Page 95: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Bamboo Servers1-click upgrades of

Using scp / ssh & puppet

How environments work

Task list Available agents

Available agents

Available agents

Destination server

Destination server

Production

TASK 1TASK 2

TASK 1TASK 2

TASK 1TASK 2

1.3

Task list

Task list Available agents

TASK 1TASK 2

Task list

Task list

Release

Production

TASK 1TASK 2

1.3

Task list Available agents Destination server

Production

TASK 1TASK 2

1.3

Available agents Destination server

TASK 1TASK 2

Task list

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release Upgrade Bamboo

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Build Bamboo

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

jira-bamboo

servicedesk-bamboo

Page 96: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Infrastructure differences? Is it Bamboo Configuration?

Is it a Bamboo Plugin? Is it Bamboo the product?

How is it being used?

Page 97: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

T E A M

I N F R A S T R U C T U R E

B A M B O O S E RV E R S

Conclusion

C O N C L U S I O N

I N T R O D U C T I O N

Page 98: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Constant improvement

Page 99: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

We’ve matured to handle the growth of Atlassian

Page 100: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Come join us!

Page 101: How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – Puppet Camp Singapore 2015

Thank you!

PETER LESCHEV • TEAM LEAD • ATLASSIAN • @PETERLESCHEV