Roy Osherove Sela Group [email protected] ISerializable.com (blog)
Beautiful Builds - Roy Osherove at Microsoft Swit
-
Upload
roy-osherove -
Category
Technology
-
view
748 -
download
1
description
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…