BeautifulBuilds@RoyOsheroveBouvet
@RoyOsheroveBouvet
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 Buil...
Xml Build Scripts (Ant) - declarative
Procedural• FinalBuilder• Visual build pro• Batch files• Powersell scripts
Build Scripts (Bat)Procedural
Domain SpecificLanguage BuildScripts (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...
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 m...
But some CI servers support buildactions too!
Hardware• Build Machine (with teamcity)– + agent machines (optional)• Test Machine• Staging Machine• Production Machine• T...
Build Configurations• Continuous Integration Build• Slow Build (nightly, optional)• Deploy to test servers• Deploy to stag...
Build Script Injection• Allow version aware builds• Build scripts are part of source control• Build configurations on the ...
Fill In The Blanks• Build Script uses placeholders for systemrelated knowledge• Placeholders are filled from environmentva...
Location Agnostic Scripts
Extract Script
Build Chain TriggersTriggered by checkinTriggered by end of previousManualManual
Slow BuildsDo XDo X + YDo X + Y + ZDo X + y + Z + N
Cumulative, Fast BuildsDo XDo YDo ZDo N
How Fast?
Shipping Skeleton• Start by releasing• Deploy a hello world empty skeleton• Then fill out the product• Continue adding sma...
More infobeautifulbuilds.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 songWhy 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.comcoursesconsultingbeautifulbuilds.com
Beautiful Builds - Roy Osherove at Microsoft Swit
Beautiful Builds - Roy Osherove at Microsoft Swit
Upcoming SlideShare
Loading in...5
×

Beautiful Builds - Roy Osherove at Microsoft Swit

837

Published on

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.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
837
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Beautiful Builds - Roy Osherove at Microsoft Swit

  1. 1. BeautifulBuilds@RoyOsheroveBouvet
  2. 2. @RoyOsheroveBouvet
  3. 3. Release Compilation
  4. 4. Why do we have builds?• Code Compilation• Functionality Compilation• Deployment Compilation• Feedback
  5. 5. Builds and tests are made to be broken
  6. 6. What’s beautiful?• See flow• Ease of change• Coherent
  7. 7. Recommendations• Use the right tools for build and CI• Use the right patterns to allow extra benefits
  8. 8. Part of a Build Process• Build Script/editor• Build Server / CI Server• Build Environments
  9. 9. What’s the difference?• Automated Build (what to do)• Continuous Integration (when to do it)
  10. 10. 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/)
  11. 11. Xml Build Scripts (Ant) - declarative
  12. 12. Procedural• FinalBuilder• Visual build pro• Batch files• Powersell scripts
  13. 13. Build Scripts (Bat)Procedural
  14. 14. Domain SpecificLanguage BuildScripts (Rake)declarative
  15. 15. Visual Build Scripts (FinalBuilder)
  16. 16. 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
  17. 17. The Right CI Tools
  18. 18. TeamCity
  19. 19. Jenkins
  20. 20. CruiseControl
  21. 21. Hudson
  22. 22. 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
  23. 23. But some CI servers support buildactions too!
  24. 24. Hardware• Build Machine (with teamcity)– + agent machines (optional)• Test Machine• Staging Machine• Production Machine• This can all be in the cloud (EC2 is wonderful)
  25. 25. Build Configurations• Continuous Integration Build• Slow Build (nightly, optional)• Deploy to test servers• Deploy to staging servers (optional)• Deploy to production
  26. 26. Build Script Injection• Allow version aware builds• Build scripts are part of source control• Build configurations on the CI server are dumbtriggers
  27. 27. Fill In The Blanks• Build Script uses placeholders for systemrelated knowledge• Placeholders are filled from environmentvariables or other types of parameters to thecommand line• These variables are SET by the BuildConfiguration on the CI server
  28. 28. Location Agnostic Scripts
  29. 29. Extract Script
  30. 30. Build Chain TriggersTriggered by checkinTriggered by end of previousManualManual
  31. 31. Slow BuildsDo XDo X + YDo X + Y + ZDo X + y + Z + N
  32. 32. Cumulative, Fast BuildsDo XDo YDo ZDo N
  33. 33. How Fast?
  34. 34. Shipping Skeleton• Start by releasing• Deploy a hello world empty skeleton• Then fill out the product• Continue adding small build features as you goalong
  35. 35. More infobeautifulbuilds.com
  36. 36. Short Song?
  37. 37. This is a test line
  38. 38. It looks like you’re doing just fine
  39. 39. The was a bomb in the kiev airline
  40. 40. The build songWhy this song?
  41. 41. Every build you break• Refactoring you make• Every mock you fake• You little snake• I’ll be watching you
  42. 42. • Every stand up meeting• I believe you’re cheating• Every unit test• Pains my chest• I’ll be stopping you
  43. 43. • Oh can’t you see?• This is scaring me• Every time we deliver• I begin to shiver
  44. 44. • When you say “transparent”• My fear is apparent• ‘Hide reality’• Is my mentality• I’ll be stopping you
  45. 45. • Oh can’t you see• I would rather ski• Dealing with this change• Is gonna feel so strange
  46. 46. • Every build you break…
  47. 47. roy@osherove.comcoursesconsultingbeautifulbuilds.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×