Beautiful Builds - Roy Osherove at Microsoft Swit

49
Beautiful Builds @RoyOsherove Bouvet

description

more info at http://BeautifulBuilds.com Roy Osherove speaks at Microsoft SWIT conference in Ukraine about build patterns, build tools, continuous integration, continuous delivery, and how to make it all work.

Transcript of Beautiful Builds - Roy Osherove at Microsoft Swit

Page 1: Beautiful Builds - Roy Osherove at Microsoft Swit

BeautifulBuilds

@RoyOsheroveBouvet

Page 2: Beautiful Builds - Roy Osherove at Microsoft Swit

@RoyOsherove

Bouvet

Page 3: Beautiful Builds - Roy Osherove at Microsoft Swit

Release Compilation

Page 4: Beautiful Builds - Roy Osherove at Microsoft Swit

Why do we have builds?

• Code Compilation• Functionality Compilation• Deployment Compilation• Feedback

Page 5: Beautiful Builds - Roy Osherove at Microsoft Swit

Builds and tests are made to be broken

Page 6: Beautiful Builds - Roy Osherove at Microsoft Swit

What’s beautiful?

• See flow• Ease of change• Coherent

Page 7: Beautiful Builds - Roy Osherove at Microsoft Swit

Recommendations

• Use the right tools for build and CI• Use the right patterns to allow extra benefits

Page 8: Beautiful Builds - Roy Osherove at Microsoft Swit

Part of a Build Process

• Build Script/editor• Build Server / CI Server• Build Environments

Page 9: Beautiful Builds - Roy Osherove at Microsoft Swit

What’s the difference?

• Automated Build (what to do)• Continuous Integration (when to do it)

Page 10: Beautiful Builds - Roy Osherove at Microsoft Swit

Declarative• [Ant, nant,msbuild] (http://ant.apache.org/)• [Automake] (http://www.gnu.org/software/automake/)• [Boost Build] (http://www.boost.org/doc/tools/build/index.html)• [Cmake] (http://www.cmake.org/)• [Make] (http://www.gnu.org/software/make/)• [Ocamlbuild] (http://gallium.inria.fr/~pouillar/)• [Omake] (http://omake.metaprl.org/index.html)• [Qmake] (http://doc.trolltech.com/4.2/qmake-manual.html)• [Rake] (http://rake.rubyforge.org/)• [SCons] (http://www.scons.org/)• [Waf] (http://code.google.com/p/waf/)

Page 11: Beautiful Builds - Roy Osherove at Microsoft Swit

Xml Build Scripts (Ant) - declarative

Page 12: Beautiful Builds - Roy Osherove at Microsoft Swit

Procedural

• FinalBuilder• Visual build pro• Batch files• Powersell scripts

Page 13: Beautiful Builds - Roy Osherove at Microsoft Swit

Build Scripts (Bat)Procedural

Page 14: Beautiful Builds - Roy Osherove at Microsoft Swit

Domain Specific Language Build Scripts (Rake)

declarative

Page 15: Beautiful Builds - Roy Osherove at Microsoft Swit

Visual Build Scripts (FinalBuilder)

Page 16: Beautiful Builds - Roy Osherove at Microsoft Swit

Which one?

• Visual editing allows seeing FLOW• Easy to update and change by newbies• Easy to debug

• FinalBuilder or Visual Build Pro on windows• Rake on linux or mac

Page 17: Beautiful Builds - Roy Osherove at Microsoft Swit

The Right CI Tools

Page 18: Beautiful Builds - Roy Osherove at Microsoft Swit

TeamCity

Page 19: Beautiful Builds - Roy Osherove at Microsoft Swit

Jenkins

Page 20: Beautiful Builds - Roy Osherove at Microsoft Swit

CruiseControl

Page 21: Beautiful Builds - Roy Osherove at Microsoft Swit

Hudson

Page 22: Beautiful Builds - Roy Osherove at Microsoft Swit

Many others. Which one?

• TFS? TeamCity?• Support build agents• Support amazon ec2 auto scaling agents• Easy to setup and maintain• Free for a small team

• TeamCity is awesome

Page 23: Beautiful Builds - Roy Osherove at Microsoft Swit

But some CI servers support build actions too!

Page 24: Beautiful Builds - Roy Osherove at Microsoft Swit

Hardware

• Build Machine (with teamcity)– + agent machines (optional)

• Test Machine• Staging Machine• Production Machine

• This can all be in the cloud (EC2 is wonderful)

Page 25: Beautiful Builds - Roy Osherove at Microsoft Swit

Build Configurations

• Continuous Integration Build• Slow Build (nightly, optional)• Deploy to test servers• Deploy to staging servers (optional)• Deploy to production

Page 26: Beautiful Builds - Roy Osherove at Microsoft Swit
Page 27: Beautiful Builds - Roy Osherove at Microsoft Swit

Build Script Injection

• Allow version aware builds• Build scripts are part of source control• Build configurations on the CI server are dumb

triggers

Page 28: Beautiful Builds - Roy Osherove at Microsoft Swit

Fill In The Blanks

• Build Script uses placeholders for system related knowledge

• Placeholders are filled from environment variables or other types of parameters to the command line

• These variables are SET by the Build Configuration on the CI server

Page 29: Beautiful Builds - Roy Osherove at Microsoft Swit
Page 30: Beautiful Builds - Roy Osherove at Microsoft Swit

Location Agnostic Scripts

Page 31: Beautiful Builds - Roy Osherove at Microsoft Swit

Extract Script

Page 32: Beautiful Builds - Roy Osherove at Microsoft Swit

Build Chain Triggers

Triggered by checkin

Triggered by end of previous

Manual

Manual

Page 33: Beautiful Builds - Roy Osherove at Microsoft Swit

Slow Builds

Do X

Do X + Y

Do X + Y + Z

Do X + y + Z + N

Page 34: Beautiful Builds - Roy Osherove at Microsoft Swit

Cumulative, Fast Builds

Do X

Do Y

Do Z

Do N

Page 35: Beautiful Builds - Roy Osherove at Microsoft Swit

How Fast?

Page 36: Beautiful Builds - Roy Osherove at Microsoft Swit

Shipping Skeleton

• Start by releasing• Deploy a hello world empty skeleton• Then fill out the product• Continue adding small build features as you go

along

Page 37: Beautiful Builds - Roy Osherove at Microsoft Swit

More info beautifulbuilds.com

Page 38: Beautiful Builds - Roy Osherove at Microsoft Swit

Short Song?

Page 39: Beautiful Builds - Roy Osherove at Microsoft Swit

This is a test line

Page 40: Beautiful Builds - Roy Osherove at Microsoft Swit

It looks like you’re doing just fine

Page 41: Beautiful Builds - Roy Osherove at Microsoft Swit

The was a bomb in the kiev airline

Page 42: Beautiful Builds - Roy Osherove at Microsoft Swit

The build song

Why this song?

Page 43: Beautiful Builds - Roy Osherove at Microsoft Swit

Every build you break

• Refactoring you make• Every mock you fake• You little snake

• I’ll be watching you

Page 44: Beautiful Builds - Roy Osherove at Microsoft Swit

• Every stand up meeting• I believe you’re cheating• Every unit test• Pains my chest

• I’ll be stopping you

Page 45: Beautiful Builds - Roy Osherove at Microsoft Swit

• Oh can’t you see?• This is scaring me• Every time we deliver• I begin to shiver

Page 46: Beautiful Builds - Roy Osherove at Microsoft Swit

• When you say “transparent”• My fear is apparent• ‘Hide reality’• Is my mentality• I’ll be stopping you

Page 47: Beautiful Builds - Roy Osherove at Microsoft Swit

• Oh can’t you see• I would rather ski• Dealing with this change• Is gonna feel so strange

Page 48: Beautiful Builds - Roy Osherove at Microsoft Swit

• Every build you break…

Page 49: Beautiful Builds - Roy Osherove at Microsoft Swit

[email protected]

consulting

beautifulbuilds.com