SlideShare une entreprise Scribd logo
1  sur  49
Beautiful
Builds
@RoyOsherove
Bouvet
@RoyOsherove
Bouvet
Release Compilation
Why do we have builds?
• Code Compilation
• Functionality Compilation
• Deployment Compilation
• Feedback
Builds and tests are made to be broken
What’s beautiful?
• See flow
• Ease of change
• Coherent
Recommendations
• Use the right tools for build and CI
• Use the right patterns to allow extra benefits
Part of a Build Process
• Build Script/editor
• Build Server / CI Server
• Build Environments
What’s the difference?
• Automated Build (what to do)
• Continuous Integration (when to do it)
Declarative
• [Ant, nant,msbuild] (http://ant.apache.org/)
• [Automake] (http://www.gnu.org/software/automake/)
• [Boost Build] (http://www.boost.org/doc/tools/build/index.html)
• [Cmake] (http://www.cmake.org/)
• [Make] (http://www.gnu.org/software/make/)
• [Ocamlbuild] (http://gallium.inria.fr/~pouillar/)
• [Omake] (http://omake.metaprl.org/index.html)
• [Qmake] (http://doc.trolltech.com/4.2/qmake-manual.html)
• [Rake] (http://rake.rubyforge.org/)
• [SCons] (http://www.scons.org/)
• [Waf] (http://code.google.com/p/waf/)
Xml Build Scripts (Ant) - declarative
Procedural
• FinalBuilder
• Visual build pro
• Batch files
• Powersell scripts
Build Scripts (Bat)
Procedural
Domain Specific
Language Build
Scripts (Rake)
declarative
Visual Build Scripts (FinalBuilder)
Which one?
• Visual editing allows seeing FLOW
• Easy to update and change by newbies
• Easy to debug
• FinalBuilder or Visual Build Pro on windows
• Rake on linux or mac
The Right CI Tools
TeamCity
Jenkins
CruiseControl
Hudson
Many others. Which one?
• TFS? TeamCity?
• Support build agents
• Support amazon ec2 auto scaling agents
• Easy to setup and maintain
• Free for a small team
• TeamCity is awesome
But some CI servers support build
actions too!
Hardware
• Build Machine (with teamcity)
– + agent machines (optional)
• Test Machine
• Staging Machine
• Production Machine
• This can all be in the cloud (EC2 is wonderful)
Build Configurations
• Continuous Integration Build
• Slow Build (nightly, optional)
• Deploy to test servers
• Deploy to staging servers (optional)
• Deploy to production
Build Script Injection
• Allow version aware builds
• Build scripts are part of source control
• Build configurations on the CI server are dumb
triggers
Fill In The Blanks
• Build Script uses placeholders for system
related knowledge
• Placeholders are filled from environment
variables or other types of parameters to the
command line
• These variables are SET by the Build
Configuration on the CI server
Location Agnostic Scripts
Extract Script
Build Chain Triggers
Triggered by checkin
Triggered by end of previous
Manual
Manual
Slow Builds
Do X
Do X + Y
Do X + Y + Z
Do X + y + Z + N
Cumulative, Fast Builds
Do X
Do Y
Do Z
Do N
How Fast?
Shipping Skeleton
• Start by releasing
• Deploy a hello world empty skeleton
• Then fill out the product
• Continue adding small build features as you go
along
More info
beautifulbuilds.com
Short Song?
This is a test line
It looks like you’re doing just fine
The was a bomb in the kiev airline
The build song
Why this song?
Every build you break
• Refactoring you make
• Every mock you fake
• You little snake
• I’ll be watching you
• Every stand up meeting
• I believe you’re cheating
• Every unit test
• Pains my chest
• I’ll be stopping you
• Oh can’t you see?
• This is scaring me
• Every time we deliver
• I begin to shiver
• When you say “transparent”
• My fear is apparent
• ‘Hide reality’
• Is my mentality
• I’ll be stopping you
• Oh can’t you see
• I would rather ski
• Dealing with this change
• Is gonna feel so strange
• Every build you break…
roy@osherove.com
courses
consulting
beautifulbuilds.com

Contenu connexe

Tendances

CoffeeScript in hootsuite
CoffeeScript in hootsuiteCoffeeScript in hootsuite
CoffeeScript in hootsuite
ujihisa
 

Tendances (20)

Taking Your Rails Tests Offline
Taking Your Rails Tests OfflineTaking Your Rails Tests Offline
Taking Your Rails Tests Offline
 
Apply chat automation today - work smarter tomorrow
Apply chat automation today - work smarter tomorrowApply chat automation today - work smarter tomorrow
Apply chat automation today - work smarter tomorrow
 
Reach the next level with PowerShell
Reach the next level with PowerShellReach the next level with PowerShell
Reach the next level with PowerShell
 
Selenoid i Allure - jak używać tych narzędzi razem
Selenoid i Allure - jak używać tych narzędzi razemSelenoid i Allure - jak używać tych narzędzi razem
Selenoid i Allure - jak używać tych narzędzi razem
 
Apply chat automation today - work smarter tomorrow
Apply chat automation today - work smarter tomorrowApply chat automation today - work smarter tomorrow
Apply chat automation today - work smarter tomorrow
 
Modern infrastructure as code with ansible PyTN
Modern infrastructure as code with ansible  PyTNModern infrastructure as code with ansible  PyTN
Modern infrastructure as code with ansible PyTN
 
Code review vs pull request
Code review vs pull requestCode review vs pull request
Code review vs pull request
 
Configuration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL PluginConfiguration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL Plugin
 
VersaPay's Tools for Happyfficient Developers
VersaPay's Tools for Happyfficient DevelopersVersaPay's Tools for Happyfficient Developers
VersaPay's Tools for Happyfficient Developers
 
Job DSL Plugin for Jenkins
Job DSL Plugin for JenkinsJob DSL Plugin for Jenkins
Job DSL Plugin for Jenkins
 
Putting the 'ctions' in Azure Fun-ctions
Putting the 'ctions' in Azure Fun-ctionsPutting the 'ctions' in Azure Fun-ctions
Putting the 'ctions' in Azure Fun-ctions
 
Rpa server migration best practices
Rpa server migration  best practicesRpa server migration  best practices
Rpa server migration best practices
 
Continuous delivery of your legacy application
Continuous delivery of your legacy applicationContinuous delivery of your legacy application
Continuous delivery of your legacy application
 
Becoming a Forge Component Author
Becoming a Forge Component AuthorBecoming a Forge Component Author
Becoming a Forge Component Author
 
Everything as Code with Azure DevOps
Everything as Code with Azure DevOpsEverything as Code with Azure DevOps
Everything as Code with Azure DevOps
 
Continuous Development: Supporting a Release Model
Continuous Development: Supporting a Release ModelContinuous Development: Supporting a Release Model
Continuous Development: Supporting a Release Model
 
CoffeeScript in hootsuite
CoffeeScript in hootsuiteCoffeeScript in hootsuite
CoffeeScript in hootsuite
 
The Job DSL Plugin: Introduction & What’s New
The Job DSL Plugin: Introduction & What’s NewThe Job DSL Plugin: Introduction & What’s New
The Job DSL Plugin: Introduction & What’s New
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDN
 
CI/CD Using Ansible and Jenkins for Infrastructure
CI/CD Using Ansible and Jenkins for InfrastructureCI/CD Using Ansible and Jenkins for Infrastructure
CI/CD Using Ansible and Jenkins for Infrastructure
 

Similaire à Beautiful Builds - Roy Osherove at Microsoft Swit

Continuous integration with teamcity
Continuous integration with teamcityContinuous integration with teamcity
Continuous integration with teamcity
Eugene Sheretov
 
Database Build and Release - SQL In The City - Ernest Hwang
Database Build and Release - SQL In The City - Ernest HwangDatabase Build and Release - SQL In The City - Ernest Hwang
Database Build and Release - SQL In The City - Ernest Hwang
Red Gate Software
 
Succesful Testing The Continuous Delivery Process
Succesful Testing The Continuous Delivery ProcessSuccesful Testing The Continuous Delivery Process
Succesful Testing The Continuous Delivery Process
Huib Schoots
 
SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8
Rajwinder Singh
 

Similaire à Beautiful Builds - Roy Osherove at Microsoft Swit (20)

Continuous integration with teamcity
Continuous integration with teamcityContinuous integration with teamcity
Continuous integration with teamcity
 
Team Build in TFS - Introduction
Team Build in TFS - IntroductionTeam Build in TFS - Introduction
Team Build in TFS - Introduction
 
Database Build and Release - SQL In The City - Ernest Hwang
Database Build and Release - SQL In The City - Ernest HwangDatabase Build and Release - SQL In The City - Ernest Hwang
Database Build and Release - SQL In The City - Ernest Hwang
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
GR Dev Day Presentation, March 21 2015
GR Dev Day Presentation, March 21 2015GR Dev Day Presentation, March 21 2015
GR Dev Day Presentation, March 21 2015
 
'Intro to Infrastructure as Code' - DevOps Belfast
'Intro to Infrastructure as Code' - DevOps Belfast'Intro to Infrastructure as Code' - DevOps Belfast
'Intro to Infrastructure as Code' - DevOps Belfast
 
Ci of js and apex using jasmine, phantom js and drone io df14
Ci of js and apex using jasmine, phantom js and drone io   df14Ci of js and apex using jasmine, phantom js and drone io   df14
Ci of js and apex using jasmine, phantom js and drone io df14
 
Application Deployment at UC Riverside
Application Deployment at UC RiversideApplication Deployment at UC Riverside
Application Deployment at UC Riverside
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Microsoft SQL Server Continuous Integration
Microsoft SQL Server Continuous IntegrationMicrosoft SQL Server Continuous Integration
Microsoft SQL Server Continuous Integration
 
Why puppet? Why now?
Why puppet? Why now?Why puppet? Why now?
Why puppet? Why now?
 
Step away from that knife!
Step away from that knife!Step away from that knife!
Step away from that knife!
 
Succesful Testing The Continuous Delivery Process
Succesful Testing The Continuous Delivery ProcessSuccesful Testing The Continuous Delivery Process
Succesful Testing The Continuous Delivery Process
 
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
 
#spsclt18 vincent biret #spfx #devops
#spsclt18 vincent biret #spfx #devops#spsclt18 vincent biret #spfx #devops
#spsclt18 vincent biret #spfx #devops
 
How HipChat Ships and Recovers Fast with DevOps Practices
How HipChat Ships and Recovers Fast with DevOps PracticesHow HipChat Ships and Recovers Fast with DevOps Practices
How HipChat Ships and Recovers Fast with DevOps Practices
 
Enter the Team City
Enter the Team CityEnter the Team City
Enter the Team City
 
CI
CICI
CI
 
SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Dernier (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

Beautiful Builds - Roy Osherove at Microsoft Swit