Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Build Infrastructure: What It Is and Why You Need It

1,162 views

Published on

Talk given at the 2014 Grace Hopper Conference in Phoenix, Arizona.

Covers the history of the Build & Release Engineering area at Unity (from 2010 to the current state in 2014), and then follows with an overview and introduction to the "5 Pillars of Build Engineering" and what they mean in practice.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Build Infrastructure: What It Is and Why You Need It

  1. 1. 2014 Build & Infrastructure Engineering What It Is and Why You Need It Na’Tosha J. Bard October 9, 2014 #GHC14 2014
  2. 2. 2014 What is Build Engineering?
  3. 3. 2014 Build Engineering is the glue that holds the software development process together.
  4. 4. 2014 Examples of Build Engineering  Choosing, configuring, customizing, and maintaining a CI server  Applying/Optimizing development models (branch-based, patch-based, etc.)  Build optimizations (distributed builds, bulk builds, etc.)  … and much more
  5. 5. 2014 Why do I care?
  6. 6. 2014 About the Speaker  Na’Tosha J. Bard  Copenhagen, Denmark  Lead Build & Infrastructure Developer, Unity Technologies  Open-Source and Linux Enthusiast
  7. 7. 2014 What is Unity?  Game engine and content creation toolkit  Editor for Mac OSX and Windows  Runtime ported to ~20 platforms  Mostly written in C++  Gameplay code written in C#  Scripting engine for gameplay code built with Mono
  8. 8. 2014 Build Engineering at Unity Technologies
  9. 9. 2014 2010  Unstable SVN server  All developers commit directly to trunk  Unstable CI server  6 VisualStudio and Xcode solutions wrapped in Perl  Automated tests nightly on 2 platforms  4 machines for building  Deployment scripts running from developer machines  No automatic verification of deployed builds
  10. 10. 2014 2014  DVCS with Mercurial  Branch-based development  Project files generated with Jamplus  Stable CI solution (internally-developed)  Automated tests running on developer branches and on our mainline on 7+ platforms  Build Cloud of over 200 virtual and physical machines  Deployment scripts running from central deployment server with verification  Publishing portal for deployment is in-development
  11. 11. 2014 Release Schedule Over Time Every 2 to 6 weeks Weekly
  12. 12. 2014 Foundation of Build Infrastructure
  13. 13. 2014 The 5 Pillars of Build Infrastructure  One-Click Builds  Build Automation  Continuous Integration  Automated Testing  Automated Deployment
  14. 14. 2014 One-Click Builds Building your software with just one click.
  15. 15. 2014 Benefits of One-Click Builds  KISS principle  Build early, build often  Groundwork for other software development principles
  16. 16. 2014 Getting Started with One-Click Builds  Depends on your application  Cohesive buildsystem  Keep platform-dependent issues in mind!
  17. 17. 2014 Build Automation A build server to run your one-click builds.
  18. 18. 2014 Benefits of Build Automation  Verification  Parallelization  Groundwork for other software development principles
  19. 19. 2014 Getting Started with Build Automation  TeamCity, Bamboo, Team Foundation Server  Jenkins, Buildbot  Give careful thought to buildserver/buildsystem configuration split
  20. 20. 2014 Continuous Integration Continuously run your automated builds.
  21. 21. 2014 Benefits of Continuous Integration  Increased developer productivity  Helps avoid “Integration Hell”  Automatically identifies exact failure point
  22. 22. 2014 Getting Started with Continuous Integration  Generally, the same solutions as for Build Automation apply here  Note: Sometimes “Frequent Integration” is good enough
  23. 23. 2014 Automated Testing Execute tests on your continuously-running builds.
  24. 24. 2014 Automated Testing  Provides protection against regressions  Saves human resources  Keeps test suites from bit-rotting
  25. 25. 2014 Getting Started with Automated Testing  Find a test framework for your technology  NUnit, JUnit, PyUnit (unittest)  Sometimes creating your own frameworks is an answer (i.e, High-Level Integration Tests)
  26. 26. 2014 Automated Deployment Easily deploy your tested builds.
  27. 27. 2014 Benefits of Automated Deployment  Less error-prone than manual publishing  Easy to verify  Easy to track release history
  28. 28. 2014 Getting Started with Automated Deployment  Often related to build automation/CI solution  Highly dependent on your organization’s server infrastructure and type of software  Start with a simple script and expand
  29. 29. 2014 The 5 Pillars of Build Infrastructure One-Click Builds Build Automation Continuous Integration Automated Testing Automated Deployment
  30. 30. 2014 A Call to Arms: Tips for Getting Started  Just do something  When advocating for change, focus on the benefits  Don’t underestimate the value of having dedicated build engineers
  31. 31. 2014 Thank You!
  32. 32. 2014 Contact Information @natosha_bard https://linkedin.com/in/natoshabard +NaToshaBard
  33. 33. 2014 Got Feedback? Rate and Review the session using the GHC Mobile App To download visit www.gracehopper.org

×