SlideShare a Scribd company logo
1 of 44
Download to read offline
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
BUILD
INFRASTRUCTURE
What It Is, Why You Need It,
and How to Use Python to
Fuel It
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
WHAT IS BUILD
ENGINEERING?
BUILD ENGINEERING
IS THE GLUE THAT
HOLDS THE
SOFTWARE
DEVELOPMENT
PROCESS
TOGETHER.
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
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
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
WHY DO I CARE?
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
• Na’Tosha J. Bard
• Copenhagen, Denmark
• Engineering Tools Lead at Unity
Technologies (5+ years)
• Open-Source & Linux Enthusiast
• Married
• 2 cats
ABOUT THE
SPEAKER
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
FOR YOUR REFERENCE
Slides will be available here:
http://natoshabard.com/speaking
Keep in touch:
Twitter: @natosha_bard
E-mail: natosha@gmail.com
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
WHAT IS UNITY?
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
WHAT IS UNITY?
• Game Engine & Content Creation Toolkit
• Editor for Mac OS X & Windows
• Experimental build for Linux
• Runtime ported to 22 platforms
• Mostly written in C++
• Gameplay scripts written in C#
• Scripting engine for gameplay code built on
top of Mono
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
BUILD
ENGINEERING AT
UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
2010
• Unstable SVN Server
• All developers commit directly to trunk
• Unstable CI Server
• 6 VisualStudio and Xcode projects 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
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
2015
• 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 various platforms
• Build cloud of over 200 virtual and physical
machines
• Web-based publishing portal for deploying
builds
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
OUR RELEASE
CYCLES WENT
FROM AS LONG AS
18 MONTHS
TO EVERY 3
MONTHS
WHILE OUR
DEVELOPMENT
TEAM GREW 400%.
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
FOUNDATION OF
BUILD
INFRASTRUCTURE
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
THE 5 PILLARS OF
BUILD
INFRASTRUCTURE
• ONE-CLICK BUILDS
• BUILD AUTOMATION
• CONTINUOUS
INTEGRATION
• AUTOMATED TESTING
• AUTOMATED
DEPLOYMENT
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
WHAT ON EARTH
DOES THIS ALL HAVE
TO DO WITH
PYTHON?
PYTHON IS AN
AMAZING LANGUAGE
FOR WRITING
DEVELOPMENT
TOOLS.
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
ONE-CLICK BUILDS:
BUILDING YOUR
SOFTWARE WITH
JUST ONE CLICK
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
BENEFITS OF ONE-CLICK BUILDS
• KISS principle
• Build early, Build often
• Groundwork for other software
development principles
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
GETTING STARTED WITH ONE-
CLICK BUILDS
• Depends on your application
• Possible Solutions: SCons, Waf
• Cohesive buildsystem
• Keep platform-dependent issues in mind!
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
WHAT UNITY DOES
• Currently using Jamplus and Perl
• Didn’t find a good Python-based tool that
met all of our requirements :-(
• Migrating to Gradle
• http://gradle.org/migrating-a-large-c-
codebase-to-gradle/
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
BUILD
AUTOMATION:

A BUILD SERVER
TO RUN YOUR ONE-
CLICK BUILDS
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
BENEFITS OF BUILD AUTOMATION
• Verification
• Parallelization
• Groundwork for other software
development principles
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
GETTING STARTED WITH BUILD
AUTOMATION
• Depends on feature set you need
• Possible Solution: Buildbot
• Give careful thought to buildserver/
buildsystem configuration split
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
HOW UNITY DOES IT
• Custom solution built on top of Buildbot -
“Katana”
• https://github.com/Unity-Technologies/katana/
• http://mariangemarcano.blogspot.dk/
• Katana’s Build Cloud configured with Salt
• http://saltstack.com/
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
CONTINUOUS
INTEGRATION:

CONTINUOUSLY
RUN THOSE
AUTOMATED
BUILDS
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
BENEFITS OF CONTINUOUS
INTEGRATION
• Increased Developer Productivity
• Helps avoid “Integration Hell”
• Automatically identifies exact failure point
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
GETTING STARTED WITH
CONTINUOUS INTEGRATION
• Generally, the same solutions as for Build
Automation apply here
• Note: Sometimes “Frequent Integration” is
good enough
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
HOW UNITY DOES IT
• We don’t…yet
• Frequent integration
• Nightly builds on mainlines
• On-demand builds on other branches
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
AUTOMATED
TESTING:

RUN TESTS ON
THOSE
CONTINUOUSLY-
RUNNING BUILDS
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
BENEFITS OF AUTOMATED
TESTING
• Provides protection against regressions
• Saves human resources
• Keeps test suites from bit-rotting
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
GETTING STARTED WITH
AUTOMATED TESTING
• Find a test framework for your technology
• PyUnit (unittest), nose
• Sometimes creating your own frameworks
is an answer (i.e, High-Level Integration
Tests)
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
HOW UNITY DOES IT
• No Python :-(
• Custom test frameworks in C#
• Heavy use of NUnit
• Custom test runner in Perl
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
AUTOMATED
DEPLOYMENT:

EASILY DEPLOY
THOSE TESTED
BUILDS
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
BENEFITS OF AUTOMATED
DEPLOYMENT
• Less error-prone than manual publishing
• Easy to verify
• Easy to track release history
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
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
• Consider integrating directly with your
already-existing build server solution
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
HOW UNITY DOES IT
• Web-based publishing portal - “Saihai”
• Promoting builds to internal QA and
publishing to external testers.
• Publishing final releases to CDN
• Provides API regarding published releases
for other internal services
COPYRIGHT 2014 @ UNITY
TECHNOLOGIES
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
The 5 pillars of Build Infrastructure.
ONE-CLICK
BUILDS
BUILD
AUTOMATION
CONTINUOUS
INTEGRATION
AUTOMATED
TESTING
AUTOMATED
DEPLOYMENT
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
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 on your team
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
COME JOIN US!
• Release Managers
• Web Developers (Full-Stack & Front-End
Only)
• Low-level Build Engineers
• High-level Build Engineers
• Version Control Experts
• Packaging & Distribution Engineers
http://unity3d.com/jobs
COPYRIGHT 2015 @ UNITY
TECHNOLOGIES
les
vels
pt.
pt.
pt.
pt.
pt.
AB
ely,
Thank You!
@natosha_bard

More Related Content

What's hot

Manila MuleSoft Meetup - May 2018
Manila MuleSoft Meetup - May 2018Manila MuleSoft Meetup - May 2018
Manila MuleSoft Meetup - May 2018Ryan Anthony Andal
 
High quality live broadcasting with PHP 27 07-2016
High quality live broadcasting with PHP 27 07-2016High quality live broadcasting with PHP 27 07-2016
High quality live broadcasting with PHP 27 07-2016Martin de Keijzer
 
Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++Gilang Mentari Hamidy
 
How to keep Jenkins logs forever without performance issues
How to keep Jenkins logs forever without performance issuesHow to keep Jenkins logs forever without performance issues
How to keep Jenkins logs forever without performance issuesLuca Milanesio
 
The fight for surviving in the IoT world - Radu Vunvulea
The fight for surviving in the IoT world - Radu VunvuleaThe fight for surviving in the IoT world - Radu Vunvulea
The fight for surviving in the IoT world - Radu VunvuleaITCamp
 
How to Grow and Measure Your API Program - I ♥ APIs 2015
How to Grow and Measure Your API Program - I ♥ APIs 2015How to Grow and Measure Your API Program - I ♥ APIs 2015
How to Grow and Measure Your API Program - I ♥ APIs 2015Andrew Mager
 
Jenkins Pipeline on your Local Box to Reduce Cycle Time
Jenkins Pipeline on your Local Box to Reduce Cycle TimeJenkins Pipeline on your Local Box to Reduce Cycle Time
Jenkins Pipeline on your Local Box to Reduce Cycle TimeLuca Milanesio
 
How to เสร็จเร็ว (Use Agile for your project with team)
How to เสร็จเร็ว (Use Agile for your project with team)How to เสร็จเร็ว (Use Agile for your project with team)
How to เสร็จเร็ว (Use Agile for your project with team)Jirayut Nimsaeng
 
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...Amir Zmora
 
Mix-IT - Des Produits avec des Equipes Distribuées
Mix-IT - Des Produits avec des Equipes DistribuéesMix-IT - Des Produits avec des Equipes Distribuées
Mix-IT - Des Produits avec des Equipes DistribuéesAlexis Monville
 
Documentation-driven development for Python web APIs v2
Documentation-driven development for Python web APIs v2Documentation-driven development for Python web APIs v2
Documentation-driven development for Python web APIs v2José Haro Peralta
 
From Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines KergosienFrom Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines KergosienITCamp
 
Manila MuleSoft Meetup #4 January 2019
Manila MuleSoft Meetup #4 January 2019Manila MuleSoft Meetup #4 January 2019
Manila MuleSoft Meetup #4 January 2019Christopher Co
 
Productive & easy mobile app dev
Productive & easy mobile app devProductive & easy mobile app dev
Productive & easy mobile app devMartin de Keijzer
 
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...Edureka!
 
Continuous integration for Ruby on Rails
Continuous integration for Ruby on RailsContinuous integration for Ruby on Rails
Continuous integration for Ruby on RailsDavid Paluy
 

What's hot (20)

Manila MuleSoft Meetup - May 2018
Manila MuleSoft Meetup - May 2018Manila MuleSoft Meetup - May 2018
Manila MuleSoft Meetup - May 2018
 
High quality live broadcasting with PHP 27 07-2016
High quality live broadcasting with PHP 27 07-2016High quality live broadcasting with PHP 27 07-2016
High quality live broadcasting with PHP 27 07-2016
 
Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++
 
How to keep Jenkins logs forever without performance issues
How to keep Jenkins logs forever without performance issuesHow to keep Jenkins logs forever without performance issues
How to keep Jenkins logs forever without performance issues
 
The fight for surviving in the IoT world - Radu Vunvulea
The fight for surviving in the IoT world - Radu VunvuleaThe fight for surviving in the IoT world - Radu Vunvulea
The fight for surviving in the IoT world - Radu Vunvulea
 
Syncing with-upstream
Syncing with-upstreamSyncing with-upstream
Syncing with-upstream
 
How to Grow and Measure Your API Program - I ♥ APIs 2015
How to Grow and Measure Your API Program - I ♥ APIs 2015How to Grow and Measure Your API Program - I ♥ APIs 2015
How to Grow and Measure Your API Program - I ♥ APIs 2015
 
Jenkins Pipeline on your Local Box to Reduce Cycle Time
Jenkins Pipeline on your Local Box to Reduce Cycle TimeJenkins Pipeline on your Local Box to Reduce Cycle Time
Jenkins Pipeline on your Local Box to Reduce Cycle Time
 
How to เสร็จเร็ว (Use Agile for your project with team)
How to เสร็จเร็ว (Use Agile for your project with team)How to เสร็จเร็ว (Use Agile for your project with team)
How to เสร็จเร็ว (Use Agile for your project with team)
 
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
 
Mix-IT - Des Produits avec des Equipes Distribuées
Mix-IT - Des Produits avec des Equipes DistribuéesMix-IT - Des Produits avec des Equipes Distribuées
Mix-IT - Des Produits avec des Equipes Distribuées
 
Documentation-driven development for Python web APIs v2
Documentation-driven development for Python web APIs v2Documentation-driven development for Python web APIs v2
Documentation-driven development for Python web APIs v2
 
From Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines KergosienFrom Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines Kergosien
 
Natron lgm2014
Natron lgm2014Natron lgm2014
Natron lgm2014
 
Manila MuleSoft Meetup #4 January 2019
Manila MuleSoft Meetup #4 January 2019Manila MuleSoft Meetup #4 January 2019
Manila MuleSoft Meetup #4 January 2019
 
Productive & easy mobile app dev
Productive & easy mobile app devProductive & easy mobile app dev
Productive & easy mobile app dev
 
Api360 Summit The Automated Monolith
Api360 Summit  The Automated MonolithApi360 Summit  The Automated Monolith
Api360 Summit The Automated Monolith
 
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
 
Continuous integration for Ruby on Rails
Continuous integration for Ruby on RailsContinuous integration for Ruby on Rails
Continuous integration for Ruby on Rails
 
API Management with wicked.haufe.io
API Management with wicked.haufe.ioAPI Management with wicked.haufe.io
API Management with wicked.haufe.io
 

Viewers also liked

Porting a Proprietary Game Engine to Linux
Porting a Proprietary Game Engine to LinuxPorting a Proprietary Game Engine to Linux
Porting a Proprietary Game Engine to LinuxNa'Tosha Bard
 
Ubuntu
UbuntuUbuntu
Ubuntuhome
 
SharePoint Branding - 3 Most Common Mistakes
SharePoint Branding - 3 Most Common MistakesSharePoint Branding - 3 Most Common Mistakes
SharePoint Branding - 3 Most Common MistakesNicolePullin
 
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!Puppet
 
Pitch advices - medialab session nantes 2013
Pitch advices - medialab session nantes 2013Pitch advices - medialab session nantes 2013
Pitch advices - medialab session nantes 2013Quentin Adam
 
Dotscale2013 : How to scale ?
Dotscale2013 : How to scale ?Dotscale2013 : How to scale ?
Dotscale2013 : How to scale ?Quentin Adam
 
Understand Immutable infrastructure - at Build Stuff Kiev 2016
Understand Immutable infrastructure  - at Build Stuff Kiev 2016Understand Immutable infrastructure  - at Build Stuff Kiev 2016
Understand Immutable infrastructure - at Build Stuff Kiev 2016Quentin Adam
 
Gaming on linux is it worth a try
Gaming on linux is it worth a tryGaming on linux is it worth a try
Gaming on linux is it worth a tryOsei Fortune
 
Open Source Video Games - Truly Free -- Truly FUN
Open Source Video Games  - Truly Free -- Truly FUNOpen Source Video Games  - Truly Free -- Truly FUN
Open Source Video Games - Truly Free -- Truly FUNevolutionaryit
 
Gaming on linux (archived)
Gaming on linux (archived)Gaming on linux (archived)
Gaming on linux (archived)Bud Siddhisena
 
Quickly programming
Quickly programmingQuickly programming
Quickly programmingNEWLUG
 
Build Infrastructure: What It Is and Why You Need It
Build Infrastructure: What It Is and Why You Need ItBuild Infrastructure: What It Is and Why You Need It
Build Infrastructure: What It Is and Why You Need ItNa'Tosha Bard
 
Linux games
Linux gamesLinux games
Linux gamesNEWLUG
 
Linux as a gaming platform - Errata
Linux as a gaming platform - ErrataLinux as a gaming platform - Errata
Linux as a gaming platform - ErrataLeszek Godlewski
 
Linux as a gaming platform, ideology aside
Linux as a gaming platform, ideology asideLinux as a gaming platform, ideology aside
Linux as a gaming platform, ideology asideLeszek Godlewski
 
Marketo Secret Sauce - Matt Zilli
Marketo Secret Sauce - Matt ZilliMarketo Secret Sauce - Matt Zilli
Marketo Secret Sauce - Matt ZilliMarketo
 
Tribal Waters Embracing Consumer Tribes
Tribal Waters Embracing Consumer TribesTribal Waters Embracing Consumer Tribes
Tribal Waters Embracing Consumer TribesMalcolm Jussawalla
 

Viewers also liked (20)

Porting a Proprietary Game Engine to Linux
Porting a Proprietary Game Engine to LinuxPorting a Proprietary Game Engine to Linux
Porting a Proprietary Game Engine to Linux
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
SharePoint Branding - 3 Most Common Mistakes
SharePoint Branding - 3 Most Common MistakesSharePoint Branding - 3 Most Common Mistakes
SharePoint Branding - 3 Most Common Mistakes
 
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
 
Pitch advices - medialab session nantes 2013
Pitch advices - medialab session nantes 2013Pitch advices - medialab session nantes 2013
Pitch advices - medialab session nantes 2013
 
Dotscale2013 : How to scale ?
Dotscale2013 : How to scale ?Dotscale2013 : How to scale ?
Dotscale2013 : How to scale ?
 
Understand Immutable infrastructure - at Build Stuff Kiev 2016
Understand Immutable infrastructure  - at Build Stuff Kiev 2016Understand Immutable infrastructure  - at Build Stuff Kiev 2016
Understand Immutable infrastructure - at Build Stuff Kiev 2016
 
desktop environments
desktop environments desktop environments
desktop environments
 
The fedora projekt
The fedora projektThe fedora projekt
The fedora projekt
 
Gaming on linux is it worth a try
Gaming on linux is it worth a tryGaming on linux is it worth a try
Gaming on linux is it worth a try
 
Tech Resume
Tech ResumeTech Resume
Tech Resume
 
Open Source Video Games - Truly Free -- Truly FUN
Open Source Video Games  - Truly Free -- Truly FUNOpen Source Video Games  - Truly Free -- Truly FUN
Open Source Video Games - Truly Free -- Truly FUN
 
Gaming on linux (archived)
Gaming on linux (archived)Gaming on linux (archived)
Gaming on linux (archived)
 
Quickly programming
Quickly programmingQuickly programming
Quickly programming
 
Build Infrastructure: What It Is and Why You Need It
Build Infrastructure: What It Is and Why You Need ItBuild Infrastructure: What It Is and Why You Need It
Build Infrastructure: What It Is and Why You Need It
 
Linux games
Linux gamesLinux games
Linux games
 
Linux as a gaming platform - Errata
Linux as a gaming platform - ErrataLinux as a gaming platform - Errata
Linux as a gaming platform - Errata
 
Linux as a gaming platform, ideology aside
Linux as a gaming platform, ideology asideLinux as a gaming platform, ideology aside
Linux as a gaming platform, ideology aside
 
Marketo Secret Sauce - Matt Zilli
Marketo Secret Sauce - Matt ZilliMarketo Secret Sauce - Matt Zilli
Marketo Secret Sauce - Matt Zilli
 
Tribal Waters Embracing Consumer Tribes
Tribal Waters Embracing Consumer TribesTribal Waters Embracing Consumer Tribes
Tribal Waters Embracing Consumer Tribes
 

Similar to Build Infrastructure: What It Is, Why You Need It, and How to Use Python to Fuel it

Which One Works You The Best: In-House or Cloud-Based Development Environment
Which One Works You The Best: In-House or Cloud-Based Development EnvironmentWhich One Works You The Best: In-House or Cloud-Based Development Environment
Which One Works You The Best: In-House or Cloud-Based Development EnvironmentBitbar
 
Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Apigee | Google Cloud
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015DotNetCampus
 
Stop Caring About Kubernetes
Stop Caring About KubernetesStop Caring About Kubernetes
Stop Caring About KubernetesDavid Lewis
 
Enterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using JenkinsEnterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using JenkinsCollabNet
 
HP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillHP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillBeMyApp
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationXPDays
 
7-Step Recipe For Continuous Integration Using OpenStack - Part 1
7-Step Recipe For Continuous Integration Using OpenStack - Part 17-Step Recipe For Continuous Integration Using OpenStack - Part 1
7-Step Recipe For Continuous Integration Using OpenStack - Part 1Platform9
 
How to Achieve more through Collaboration
How to Achieve more through Collaboration How to Achieve more through Collaboration
How to Achieve more through Collaboration Damien Garros
 
Warsaw MuleSoft Meetup #6 - CI/CD
Warsaw MuleSoft Meetup  #6 - CI/CDWarsaw MuleSoft Meetup  #6 - CI/CD
Warsaw MuleSoft Meetup #6 - CI/CDPatryk Bandurski
 
Continuous Deployment To The Cloud
Continuous Deployment To The CloudContinuous Deployment To The Cloud
Continuous Deployment To The CloudMarcin Grzejszczak
 
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...SmartBear
 
#spsclt18 vincent biret #spfx #devops
#spsclt18 vincent biret #spfx #devops#spsclt18 vincent biret #spfx #devops
#spsclt18 vincent biret #spfx #devopsVincent Biret
 
Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersCisco DevNet
 
Open Source: How to empower your technical teams in Digital Transformation pr...
Open Source: How to empower your technical teams in Digital Transformation pr...Open Source: How to empower your technical teams in Digital Transformation pr...
Open Source: How to empower your technical teams in Digital Transformation pr...Kangaroot
 
Optimizing Test Coverage throughout the DevOps Pipeline
Optimizing Test Coverage throughout the DevOps PipelineOptimizing Test Coverage throughout the DevOps Pipeline
Optimizing Test Coverage throughout the DevOps PipelinePerfecto Mobile
 
Why kubernetes matters
Why kubernetes mattersWhy kubernetes matters
Why kubernetes mattersPlatform9
 
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemMelhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemBruno Borges
 

Similar to Build Infrastructure: What It Is, Why You Need It, and How to Use Python to Fuel it (20)

Which One Works You The Best: In-House or Cloud-Based Development Environment
Which One Works You The Best: In-House or Cloud-Based Development EnvironmentWhich One Works You The Best: In-House or Cloud-Based Development Environment
Which One Works You The Best: In-House or Cloud-Based Development Environment
 
Plataforma DevOps en OpenShift
Plataforma DevOps en OpenShiftPlataforma DevOps en OpenShift
Plataforma DevOps en OpenShift
 
Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
 
Stop Caring About Kubernetes
Stop Caring About KubernetesStop Caring About Kubernetes
Stop Caring About Kubernetes
 
Enterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using JenkinsEnterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using Jenkins
 
HP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillHP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pill
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
7-Step Recipe For Continuous Integration Using OpenStack - Part 1
7-Step Recipe For Continuous Integration Using OpenStack - Part 17-Step Recipe For Continuous Integration Using OpenStack - Part 1
7-Step Recipe For Continuous Integration Using OpenStack - Part 1
 
How to Achieve more through Collaboration
How to Achieve more through Collaboration How to Achieve more through Collaboration
How to Achieve more through Collaboration
 
Warsaw MuleSoft Meetup #6 - CI/CD
Warsaw MuleSoft Meetup  #6 - CI/CDWarsaw MuleSoft Meetup  #6 - CI/CD
Warsaw MuleSoft Meetup #6 - CI/CD
 
Continuous Deployment To The Cloud
Continuous Deployment To The CloudContinuous Deployment To The Cloud
Continuous Deployment To The Cloud
 
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
 
#spsclt18 vincent biret #spfx #devops
#spsclt18 vincent biret #spfx #devops#spsclt18 vincent biret #spfx #devops
#spsclt18 vincent biret #spfx #devops
 
Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
 
Webinar: "Continuous Delivery with Jenkins"
Webinar: "Continuous Delivery with Jenkins"Webinar: "Continuous Delivery with Jenkins"
Webinar: "Continuous Delivery with Jenkins"
 
Open Source: How to empower your technical teams in Digital Transformation pr...
Open Source: How to empower your technical teams in Digital Transformation pr...Open Source: How to empower your technical teams in Digital Transformation pr...
Open Source: How to empower your technical teams in Digital Transformation pr...
 
Optimizing Test Coverage throughout the DevOps Pipeline
Optimizing Test Coverage throughout the DevOps PipelineOptimizing Test Coverage throughout the DevOps Pipeline
Optimizing Test Coverage throughout the DevOps Pipeline
 
Why kubernetes matters
Why kubernetes mattersWhy kubernetes matters
Why kubernetes matters
 
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemMelhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na Nuvem
 

Recently uploaded

Piping Basic stress analysis by engineering
Piping Basic stress analysis by engineeringPiping Basic stress analysis by engineering
Piping Basic stress analysis by engineeringJuanCarlosMorales19600
 
Solving The Right Triangles PowerPoint 2.ppt
Solving The Right Triangles PowerPoint 2.pptSolving The Right Triangles PowerPoint 2.ppt
Solving The Right Triangles PowerPoint 2.pptJasonTagapanGulla
 
Correctly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleCorrectly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleAlluxio, Inc.
 
8251 universal synchronous asynchronous receiver transmitter
8251 universal synchronous asynchronous receiver transmitter8251 universal synchronous asynchronous receiver transmitter
8251 universal synchronous asynchronous receiver transmitterShivangiSharma879191
 
computer application and construction management
computer application and construction managementcomputer application and construction management
computer application and construction managementMariconPadriquez1
 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm Systemirfanmechengr
 
An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...Chandu841456
 
Transport layer issues and challenges - Guide
Transport layer issues and challenges - GuideTransport layer issues and challenges - Guide
Transport layer issues and challenges - GuideGOPINATHS437943
 
Introduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptxIntroduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptxk795866
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girlsssuser7cb4ff
 
Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...121011101441
 
Arduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptArduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptSAURABHKUMAR892774
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfAsst.prof M.Gokilavani
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfROCENODodongVILLACER
 
Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfme23b1001
 
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfCCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfAsst.prof M.Gokilavani
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptMadan Karki
 
welding defects observed during the welding
welding defects observed during the weldingwelding defects observed during the welding
welding defects observed during the weldingMuhammadUzairLiaqat
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionDr.Costas Sachpazis
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AIabhishek36461
 

Recently uploaded (20)

Piping Basic stress analysis by engineering
Piping Basic stress analysis by engineeringPiping Basic stress analysis by engineering
Piping Basic stress analysis by engineering
 
Solving The Right Triangles PowerPoint 2.ppt
Solving The Right Triangles PowerPoint 2.pptSolving The Right Triangles PowerPoint 2.ppt
Solving The Right Triangles PowerPoint 2.ppt
 
Correctly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleCorrectly Loading Incremental Data at Scale
Correctly Loading Incremental Data at Scale
 
8251 universal synchronous asynchronous receiver transmitter
8251 universal synchronous asynchronous receiver transmitter8251 universal synchronous asynchronous receiver transmitter
8251 universal synchronous asynchronous receiver transmitter
 
computer application and construction management
computer application and construction managementcomputer application and construction management
computer application and construction management
 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm System
 
An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...
 
Transport layer issues and challenges - Guide
Transport layer issues and challenges - GuideTransport layer issues and challenges - Guide
Transport layer issues and challenges - Guide
 
Introduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptxIntroduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptx
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girls
 
Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...
 
Arduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptArduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.ppt
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdf
 
Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdf
 
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfCCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.ppt
 
welding defects observed during the welding
welding defects observed during the weldingwelding defects observed during the welding
welding defects observed during the welding
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AI
 

Build Infrastructure: What It Is, Why You Need It, and How to Use Python to Fuel it

  • 1. COPYRIGHT 2015 @ UNITY TECHNOLOGIES BUILD INFRASTRUCTURE What It Is, Why You Need It, and How to Use Python to Fuel It
  • 2. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES WHAT IS BUILD ENGINEERING? BUILD ENGINEERING IS THE GLUE THAT HOLDS THE SOFTWARE DEVELOPMENT PROCESS TOGETHER.
  • 3. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, 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
  • 4. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES WHY DO I CARE?
  • 5. COPYRIGHT 2015 @ UNITY TECHNOLOGIES • Na’Tosha J. Bard • Copenhagen, Denmark • Engineering Tools Lead at Unity Technologies (5+ years) • Open-Source & Linux Enthusiast • Married • 2 cats ABOUT THE SPEAKER
  • 6. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, FOR YOUR REFERENCE Slides will be available here: http://natoshabard.com/speaking Keep in touch: Twitter: @natosha_bard E-mail: natosha@gmail.com
  • 7. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES WHAT IS UNITY?
  • 8. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely,
  • 9. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely,
  • 10. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely,
  • 11. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely,
  • 12. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely,
  • 13. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, WHAT IS UNITY? • Game Engine & Content Creation Toolkit • Editor for Mac OS X & Windows • Experimental build for Linux • Runtime ported to 22 platforms • Mostly written in C++ • Gameplay scripts written in C# • Scripting engine for gameplay code built on top of Mono
  • 14. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES BUILD ENGINEERING AT UNITY TECHNOLOGIES
  • 15. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, 2010 • Unstable SVN Server • All developers commit directly to trunk • Unstable CI Server • 6 VisualStudio and Xcode projects 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
  • 16. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, 2015 • 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 various platforms • Build cloud of over 200 virtual and physical machines • Web-based publishing portal for deploying builds
  • 17. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES OUR RELEASE CYCLES WENT FROM AS LONG AS 18 MONTHS TO EVERY 3 MONTHS WHILE OUR DEVELOPMENT TEAM GREW 400%.
  • 18. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES FOUNDATION OF BUILD INFRASTRUCTURE
  • 19. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES THE 5 PILLARS OF BUILD INFRASTRUCTURE • ONE-CLICK BUILDS • BUILD AUTOMATION • CONTINUOUS INTEGRATION • AUTOMATED TESTING • AUTOMATED DEPLOYMENT
  • 20. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES WHAT ON EARTH DOES THIS ALL HAVE TO DO WITH PYTHON? PYTHON IS AN AMAZING LANGUAGE FOR WRITING DEVELOPMENT TOOLS.
  • 21. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES ONE-CLICK BUILDS: BUILDING YOUR SOFTWARE WITH JUST ONE CLICK
  • 22. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, BENEFITS OF ONE-CLICK BUILDS • KISS principle • Build early, Build often • Groundwork for other software development principles
  • 23. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, GETTING STARTED WITH ONE- CLICK BUILDS • Depends on your application • Possible Solutions: SCons, Waf • Cohesive buildsystem • Keep platform-dependent issues in mind!
  • 24. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, WHAT UNITY DOES • Currently using Jamplus and Perl • Didn’t find a good Python-based tool that met all of our requirements :-( • Migrating to Gradle • http://gradle.org/migrating-a-large-c- codebase-to-gradle/
  • 25. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES BUILD AUTOMATION:
 A BUILD SERVER TO RUN YOUR ONE- CLICK BUILDS
  • 26. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, BENEFITS OF BUILD AUTOMATION • Verification • Parallelization • Groundwork for other software development principles
  • 27. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, GETTING STARTED WITH BUILD AUTOMATION • Depends on feature set you need • Possible Solution: Buildbot • Give careful thought to buildserver/ buildsystem configuration split
  • 28. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, HOW UNITY DOES IT • Custom solution built on top of Buildbot - “Katana” • https://github.com/Unity-Technologies/katana/ • http://mariangemarcano.blogspot.dk/ • Katana’s Build Cloud configured with Salt • http://saltstack.com/
  • 29. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES CONTINUOUS INTEGRATION:
 CONTINUOUSLY RUN THOSE AUTOMATED BUILDS
  • 30. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, BENEFITS OF CONTINUOUS INTEGRATION • Increased Developer Productivity • Helps avoid “Integration Hell” • Automatically identifies exact failure point
  • 31. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, GETTING STARTED WITH CONTINUOUS INTEGRATION • Generally, the same solutions as for Build Automation apply here • Note: Sometimes “Frequent Integration” is good enough
  • 32. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, HOW UNITY DOES IT • We don’t…yet • Frequent integration • Nightly builds on mainlines • On-demand builds on other branches
  • 33. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES AUTOMATED TESTING:
 RUN TESTS ON THOSE CONTINUOUSLY- RUNNING BUILDS
  • 34. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, BENEFITS OF AUTOMATED TESTING • Provides protection against regressions • Saves human resources • Keeps test suites from bit-rotting
  • 35. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, GETTING STARTED WITH AUTOMATED TESTING • Find a test framework for your technology • PyUnit (unittest), nose • Sometimes creating your own frameworks is an answer (i.e, High-Level Integration Tests)
  • 36. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, HOW UNITY DOES IT • No Python :-( • Custom test frameworks in C# • Heavy use of NUnit • Custom test runner in Perl
  • 37. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES AUTOMATED DEPLOYMENT:
 EASILY DEPLOY THOSE TESTED BUILDS
  • 38. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, BENEFITS OF AUTOMATED DEPLOYMENT • Less error-prone than manual publishing • Easy to verify • Easy to track release history
  • 39. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, 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 • Consider integrating directly with your already-existing build server solution
  • 40. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, HOW UNITY DOES IT • Web-based publishing portal - “Saihai” • Promoting builds to internal QA and publishing to external testers. • Publishing final releases to CDN • Provides API regarding published releases for other internal services
  • 41. COPYRIGHT 2014 @ UNITY TECHNOLOGIES COPYRIGHT 2015 @ UNITY TECHNOLOGIES The 5 pillars of Build Infrastructure. ONE-CLICK BUILDS BUILD AUTOMATION CONTINUOUS INTEGRATION AUTOMATED TESTING AUTOMATED DEPLOYMENT
  • 42. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, 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 on your team
  • 43. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, COME JOIN US! • Release Managers • Web Developers (Full-Stack & Front-End Only) • Low-level Build Engineers • High-level Build Engineers • Version Control Experts • Packaging & Distribution Engineers http://unity3d.com/jobs
  • 44. COPYRIGHT 2015 @ UNITY TECHNOLOGIES les vels pt. pt. pt. pt. pt. AB ely, Thank You! @natosha_bard