0
Beautiful   @RoyOsherove Builds        Bouvet
roy@osherove.com     courses    consultingbeautifulbuilds.com
Why do we have builds?
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)
Build Scripts (Bat)   Procedural
Xml Build Scripts (Ant) - declarative
Domain SpecificLanguage Build Scripts (Rake)  declarative
Declarative• [Ant, nant,msbuild] (http://ant.apache.org/)• [Automake] (http://www.gnu.org/software/automake/)• [Boost Buil...
Procedural•   FinalBuilder•   Visual build pro•   Batch files•   Powersell scripts
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?•   Support build agents•   Support amazon ec2 auto scaling agents•   Easy to setup and maintain•  ...
But some CI servers support build          actions too!
Hardware• Build Machine (with teamcity)  – + agent machines (optional)• Test Machine• Staging Machine• Production Machine•...
Build Configurations•   Continuous Integration Build•   Slow Build (nightly, optional)•   Deploy to test servers•   Deploy...
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 system  related knowledge• Placeholders are filled from environment...
Location Agnostic Scripts
Extract Script
Build Chain Triggers              Triggered by checkin              Triggered by end of previous              Manual      ...
Slow Builds              Do X              Do X + Y              Do X + Y + Z              Do X + y + Z + N
Cumulative, Fast Builds
How Fast?
Shipping Skeleton•   Start by releasing•   Deploy a hello world empty skeleton•   Then fill out the product•   Continue ad...
roy@osherove.com     courses    consultingbeautifulbuilds.com
@RoyOsherove   Bouvet
Beautiful Builds by Roy Osherove
Beautiful Builds by Roy Osherove
Upcoming SlideShare
Loading in...5
×

Beautiful Builds by Roy Osherove

940

Published on

more info at http://beautifulbuilds.com . Roy Osherove from Bouvet discussed patterns for maintainable, coherent build processes.

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

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

No notes for slide

Transcript of "Beautiful Builds by Roy Osherove"

  1. 1. Beautiful @RoyOsherove Builds Bouvet
  2. 2. roy@osherove.com courses consultingbeautifulbuilds.com
  3. 3. Why do we have builds?
  4. 4. Builds and tests are made to be broken
  5. 5. What’s beautiful?• See flow• Ease of change• Coherent
  6. 6. Recommendations• Use the right tools for build and CI• Use the right patterns to allow extra benefits
  7. 7. Part of a Build Process• Build Script/editor• Build Server / CI Server• Build Environments
  8. 8. What’s the difference?• Automated Build (what to do)• Continuous Integration (when to do it)
  9. 9. Build Scripts (Bat) Procedural
  10. 10. Xml Build Scripts (Ant) - declarative
  11. 11. Domain SpecificLanguage Build Scripts (Rake) declarative
  12. 12. 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/)
  13. 13. Procedural• FinalBuilder• Visual build pro• Batch files• Powersell scripts
  14. 14. Visual Build Scripts (FinalBuilder)
  15. 15. 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
  16. 16. The Right CI Tools
  17. 17. TeamCity
  18. 18. Jenkins
  19. 19. CruiseControl
  20. 20. Hudson
  21. 21. Many others. Which one?• Support build agents• Support amazon ec2 auto scaling agents• Easy to setup and maintain• Free for a small team• TeamCity is awesome
  22. 22. But some CI servers support build actions too!
  23. 23. Hardware• Build Machine (with teamcity) – + agent machines (optional)• Test Machine• Staging Machine• Production Machine• This can all be in the cloud (EC2 is wonderful)
  24. 24. Build Configurations• Continuous Integration Build• Slow Build (nightly, optional)• Deploy to test servers• Deploy to staging servers (optional)• Deploy to production
  25. 25. Build Script Injection• Allow version aware builds• Build scripts are part of source control• Build configurations on the CI server are dumb triggers
  26. 26. 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
  27. 27. Location Agnostic Scripts
  28. 28. Extract Script
  29. 29. Build Chain Triggers Triggered by checkin Triggered by end of previous Manual Manual
  30. 30. Slow Builds Do X Do X + Y Do X + Y + Z Do X + y + Z + N
  31. 31. Cumulative, Fast Builds
  32. 32. How Fast?
  33. 33. 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
  34. 34. roy@osherove.com courses consultingbeautifulbuilds.com
  35. 35. @RoyOsherove Bouvet
  1. A particular slide catching your eye?

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

×