Beautiful Builds - Roy Osherove at Microsoft Swit

Post on 13-Jan-2015

748 views 1 download

Tags:

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

BeautifulBuilds

@RoyOsheroveBouvet

@RoyOsherove

Bouvet

Release Compilation

Why do we have builds?

• Code Compilation• Functionality Compilation• Deployment Compilation• Feedback

Builds and tests are made to be broken

What’s beautiful?

• See flow• Ease of change• Coherent

Recommendations

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

Part of a Build Process

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

What’s the difference?

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

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/)

Xml Build Scripts (Ant) - declarative

Procedural

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

Build Scripts (Bat)Procedural

Domain Specific Language Build Scripts (Rake)

declarative

Visual Build Scripts (FinalBuilder)

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

The Right CI Tools

TeamCity

Jenkins

CruiseControl

Hudson

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

But some CI servers support build actions too!

Hardware

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

• Test Machine• Staging Machine• Production Machine

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

Build Configurations

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

Build Script Injection

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

triggers

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

Location Agnostic Scripts

Extract Script

Build Chain Triggers

Triggered by checkin

Triggered by end of previous

Manual

Manual

Slow Builds

Do X

Do X + Y

Do X + Y + Z

Do X + y + Z + N

Cumulative, Fast Builds

Do X

Do Y

Do Z

Do N

How Fast?

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

More info beautifulbuilds.com

Short Song?

This is a test line

It looks like you’re doing just fine

The was a bomb in the kiev airline

The build song

Why this song?

Every build you break

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

• I’ll be watching you

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

• I’ll be stopping you

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

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

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

• Every build you break…

roy@osherove.comcourses

consulting

beautifulbuilds.com