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.
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
6. 2014
About the Speaker
Na’Tosha J. Bard
Copenhagen, Denmark
Lead Build &
Infrastructure
Developer, Unity
Technologies
Open-Source and Linux
Enthusiast
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
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. 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
18. 2014
Benefits of Build Automation
Verification
Parallelization
Groundwork for other software
development principles
19. 2014
Getting Started with Build Automation
TeamCity, Bamboo, Team Foundation
Server
Jenkins, Buildbot
Give careful thought to
buildserver/buildsystem configuration split
22. 2014
Getting Started with Continuous Integration
Generally, the same solutions as for Build
Automation apply here
Note: Sometimes “Frequent Integration” is
good enough
24. 2014
Automated Testing
Provides protection against regressions
Saves human resources
Keeps test suites from bit-rotting
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)
27. 2014
Benefits of Automated Deployment
Less error-prone than manual publishing
Easy to verify
Easy to track release history
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. 2014
The 5 Pillars of Build Infrastructure
One-Click
Builds
Build
Automation
Continuous
Integration
Automated
Testing
Automated
Deployment
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