build infrastructure: what it is and why you need it

33
2014 Build & Infrastructure Engineering What It Is and Why You Need It Na’Tosha J. Bard October 9, 2014 #GHC14 2014

Upload: natosha-bard

Post on 24-Jun-2015

509 views

Category:

Software


3 download

DESCRIPTION

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.

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