Beautiful Builds by Roy Osherove

  • 834 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
834
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
12
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Beautiful @RoyOsherove Builds Bouvet
  • 2. roy@osherove.com courses consultingbeautifulbuilds.com
  • 3. Why do we have builds?
  • 4. Builds and tests are made to be broken
  • 5. What’s beautiful?• See flow• Ease of change• Coherent
  • 6. Recommendations• Use the right tools for build and CI• Use the right patterns to allow extra benefits
  • 7. Part of a Build Process• Build Script/editor• Build Server / CI Server• Build Environments
  • 8. What’s the difference?• Automated Build (what to do)• Continuous Integration (when to do it)
  • 9. Build Scripts (Bat) Procedural
  • 10. Xml Build Scripts (Ant) - declarative
  • 11. Domain SpecificLanguage Build Scripts (Rake) declarative
  • 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. Procedural• FinalBuilder• Visual build pro• Batch files• Powersell scripts
  • 14. Visual Build Scripts (FinalBuilder)
  • 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. The Right CI Tools
  • 17. TeamCity
  • 18. Jenkins
  • 19. CruiseControl
  • 20. Hudson
  • 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. But some CI servers support build actions too!
  • 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. Build Configurations• Continuous Integration Build• Slow Build (nightly, optional)• Deploy to test servers• Deploy to staging servers (optional)• Deploy to production
  • 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. 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. Location Agnostic Scripts
  • 28. Extract Script
  • 29. Build Chain Triggers Triggered by checkin Triggered by end of previous Manual Manual
  • 30. Slow Builds Do X Do X + Y Do X + Y + Z Do X + y + Z + N
  • 31. Cumulative, Fast Builds
  • 32. How Fast?
  • 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. roy@osherove.com courses consultingbeautifulbuilds.com
  • 35. @RoyOsherove Bouvet