Transcript
Page 1: Build Infrastructure: What It Is and Why You Need It

2014

Build & Infrastructure

EngineeringWhat It Is and Why You Need It

Na’Tosha J. Bard

October 9, 2014

#GHC14

2014

Page 2: Build Infrastructure: What It Is and Why You Need It

2014

What is Build Engineering?

Page 3: Build Infrastructure: What It Is and Why You Need It

2014

Build Engineering is the glue

that holds the software

development process

together.

Page 4: Build Infrastructure: What It Is and Why You Need It

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

Page 5: Build Infrastructure: What It Is and Why You Need It

2014

Why do I care?

Page 6: Build Infrastructure: What It Is and Why You Need It

2014

About the Speaker

Na’Tosha J. Bard

Copenhagen, Denmark

Lead Build & Infrastructure Developer, Unity Technologies

Open-Source and Linux Enthusiast

Page 7: Build Infrastructure: What It Is and Why You Need It

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

Page 8: Build Infrastructure: What It Is and Why You Need It

2014

Build Engineering

at Unity Technologies

Page 9: Build Infrastructure: What It Is and Why You Need It

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

Page 10: Build Infrastructure: What It Is and Why You Need It

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

Page 11: Build Infrastructure: What It Is and Why You Need It

2014

Release Schedule Over Time

Every 2 to 6 weeks Weekly

Page 12: Build Infrastructure: What It Is and Why You Need It

2014

Foundation of Build

Infrastructure

Page 13: Build Infrastructure: What It Is and Why You Need It

2014

The 5 Pillars of Build Infrastructure

One-Click Builds

Build Automation

Continuous Integration

Automated Testing

Automated Deployment

Page 14: Build Infrastructure: What It Is and Why You Need It

2014

One-Click Builds

Building your software with just

one click.

Page 15: Build Infrastructure: What It Is and Why You Need It

2014

Benefits of One-Click Builds

KISS principle

Build early, build often

Groundwork for other software

development principles

Page 16: Build Infrastructure: What It Is and Why You Need It

2014

Getting Started with One-Click Builds

Depends on your application

Cohesive buildsystem

Keep platform-dependent issues in mind!

Page 17: Build Infrastructure: What It Is and Why You Need It

2014

Build Automation

A build server to run your one-

click builds.

Page 18: Build Infrastructure: What It Is and Why You Need It

2014

Benefits of Build Automation

Verification

Parallelization

Groundwork for other software

development principles

Page 19: Build Infrastructure: What It Is and Why You Need It

2014

Getting Started with Build Automation

TeamCity, Bamboo, Team Foundation

Server

Jenkins, Buildbot

Give careful thought to

buildserver/buildsystem configuration split

Page 20: Build Infrastructure: What It Is and Why You Need It

2014

Continuous Integration

Continuously run your automated

builds.

Page 21: Build Infrastructure: What It Is and Why You Need It

2014

Benefits of Continuous Integration

Increased developer productivity

Helps avoid “Integration Hell”

Automatically identifies exact failure point

Page 22: Build Infrastructure: What It Is and Why You Need It

2014

Getting Started with Continuous Integration

Generally, the same solutions as for Build

Automation apply here

Note: Sometimes “Frequent Integration” is

good enough

Page 23: Build Infrastructure: What It Is and Why You Need It

2014

Automated Testing

Execute tests on your

continuously-running builds.

Page 24: Build Infrastructure: What It Is and Why You Need It

2014

Automated Testing

Provides protection against regressions

Saves human resources

Keeps test suites from bit-rotting

Page 25: Build Infrastructure: What It Is and Why You Need It

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)

Page 26: Build Infrastructure: What It Is and Why You Need It

2014

Automated Deployment

Easily deploy your tested builds.

Page 27: Build Infrastructure: What It Is and Why You Need It

2014

Benefits of Automated Deployment

Less error-prone than manual publishing

Easy to verify

Easy to track release history

Page 28: Build Infrastructure: What It Is and Why You Need It

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

Page 29: Build Infrastructure: What It Is and Why You Need It

2014

The 5 Pillars of Build Infrastructure

One-Click

Builds

Build

Automation

Continuous

Integration

Automated

Testing

Automated

Deployment

Page 30: Build Infrastructure: What It Is and Why You Need It

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

Page 31: Build Infrastructure: What It Is and Why You Need It

2014

Thank You!

Page 32: Build Infrastructure: What It Is and Why You Need It

2014

Contact Information

@natosha_bard

https://linkedin.com/in/natoshabard

+NaToshaBard

Page 33: Build Infrastructure: What It Is and Why You Need It

2014

Got Feedback?

Rate and Review the session using the

GHC Mobile AppTo download visit www.gracehopper.org


Top Related