SlideShare una empresa de Scribd logo
1 de 35
Continuous Delivery 
Never SEND a human to do a 
machine’s job 
Presenter: Steve Povilaitis
Steve Povilaitis 
Enterprise Agile Coach 
•steve@leadingagile.com 
•386.690.3118 
•www.leadingagile.com 
•twitter.com/stevepov 
•facebook.com/leadingagile 
•linkedin.com/in/stevepov
Working hypothesis 
Agile transformation begins by defining a rational 
system of delivery for the enterprise. 
Corollary: Until your code is in production delivering the 
value you intended, you are merely building castles in a 
technological sandbox.
Overview 
Introduction to Continuous Deployment 
CD workflow and practices 
Tools 
Example Continuous Deployment architecture 
Transformation Roadmap
How long would it take your organization to deploy a change [to 
production] that involves just one single line of code? 
Do you do this on a repeatable, reliable basis? 
- Mary and Tom Poppendieck, Implementing Lean Software Development
What is Continuous 
Deployment? 
•A development methodology 
•Of continuous developer integrations/deployments 
•Executed by automatic builds
“Never send a human to do a machine’s job”
What is it not? 
•Nightly Builds 
•Developer branches 
•Scheduled Integration Points 
•Building via IDEs
Integration is Hard! 
•Software Effort increases exponentially vs: 
– Bug Count 
– Number of components 
– Time since last integration
Reduce Risk of Change 
John Allspaw, Ops Meta-Metrics
SCRUM PROVIDES A PROCESS 
FOR EARLY VALUE DELIVERY
Traditional Process Risks 
•Lack of Team Cohesion 
– “Your changes to Foobar are incompatible with mine. 
How do we merge now?” 
– “I thought you fixed that XX days/weeks/months ago!” 
•Poor quality code base 
– “Why cant I just include Foo and not require all of the 
other libs?” 
•Lack of project visibility 
– “What do you mean the tests are failing?” 
– “What’s in version 1.2.3. of the build?” 
– “What’s our code coverage right now?” 
•Lack of deployable software 
– “It works on my machine!” 
– “The customer is coming, we need to demo today”
Use CD to Reduce Risk and 
Improve Quality 
•Better 
– Test early and often with self-testing builds 
– Developers concentrate on coding, repetitive and boring tasks 
like testing are automated 
•Faster 
– Replace big and long integration phases with small and frequent 
ones 
– Build, Test, Deploy in parallel, not at the end 
– No integration points mean builds and deployments become a 
non-event! 
•Cheaper 
– Identify defects earlier 
– Fix when least costly 
– Easily repeatable build, test, and deploy process
Continuous Integration 
Workflow 
•Monitor source repository for 
changes 
•Checkout source whenever 
there are ANY changes 
•Ensure code actually compiles 
on every target platform 
•Run unit and integration tests 
•Generate documentation 
•Package and deploy
Automated Build Process 
SCM 
Build Results 
Test Results 
Doxygen output 
Email/Web/IM 
1. Bootstrap 
2. Check for modifications 
3. Get the revision log 
Jenkins 
Javac 
ant 
Junit 
Doxygen 
etc 
4.2 Run Build 
5. Publish Artifacts 
6. Send to publisher 
4.1. Get the latest 
source 
4.3. Tag source 
(optional) 
4. Run Build 
Jenkins SCM adapter
Compilation != A Build 
Build Inputs 
•Sources 
– .java .js 
•Configuration files 
– XML files 
– Properties 
•Resources 
– Libraries 
Build Outputs 
Executable / Library 
Test Results 
Junit 
Documentation 
doxygen 
Installers 
Source Package
Builds are Self Testing 
•Directly go from 
source to running 
xUnit tests 
–No manual 
copying 
–No 
configuration 
file editing
Automatic Build and Test 
Reporting 
•Automatic publishing of 
– Build results 
– xUnit test results 
•Everyone Sees what’s 
happening 
– Web interface 
– Notifications via 
• Email 
• IM 
• RSS
CD roadmap 
Implement Version control - using a next generation 
tool such SVN,Perforce, TFS, Git. 
Not Clearcase or VSS, or CVS or some other POS. 
Goal - Implement a versioning system that allows 
developers to work in a distributed manner in a non-file 
locked environment
Source Control 
Recommendability 
http://martinfowler.com/bliki/VersionContr 
olTools.html
Automate BOTH compilation and packaging - using 
tools such as Make, eMake, Ant, Nant, Maven, NuGet 
Goal -ability to go from version controlled source to a 
deployment ready 
artifact with one command or script
Automatic Builds –Continuously build and test the 
codebase each time a change is made to the code. 
Setup a CI server - Jenkins, TFS, Electric 
Commander, integrated with version control system. 
Goal - Implement a CI process that continually outputs 
a set of potentially deployable artifacts
Requirements traceability - integrate with an ALM tool 
such as V1, Rally, TFS, Trac. 
Goal - automatically provide a thorough audit trail of 
what has been implemented in code to satify user 
requirements. Link code changes to individual user 
stories and/or defects.
Automated Testing: Automate as much of the following as 
possible. 
Unit tests 
Integration Tests 
Load Tests 
Performance Tests 
Simulation tests 
Smoke tests 
Quality Tests 
Goal - automate as much testing as possible and provide 
sufficient test coverage at multiple levels
Automated Deployment - provide the ability to deploy 
an arbitrary release candidate into an arbitrary 
environment for testing 
Goal - Ability to deploy a software version based on a 
single change set to an arbitrary environment with a 
single command
Automated environment provisioning - ability to 
instantiate virtualized 
environments as needed 
Goal - ability to quickly create virtualized environments 
as needed
Infrastructure as code - ability to version control 
infrastructure and 
platforms an build them in a consistent and repeatable 
manner, using tools 
like puppet and chef 
Goal - implement configuration managed 
environments with consistency and 
reliability
Implement monitoring (metrics) - implement metrics to 
monitor the 
build health of the codebase, and the health of the 
deployed solution 
Goal - provide real-time health monitoring via a visual 
dashboard
Jenkins CI Server + Trac 
•Jenkins: Open Source, 
written in Java 
•Trac: Open Source, 
written in Python 
•No install required 
– Runs within a web 
container 
•Web based configuration 
•Support for 
– Subversion 
– NAnt 
– NUnit 
– FXCop
Martin Fowler’s 10 Practices for 
CI 
Maintain a Single Source Repository. 
Automate the Build 
Make Your Build Self-Testing 
Everyone Commits Every Day 
Every Commit Should Build the Mainline on an Integration Machine 
Keep the Build Fast 
Test in a Clone of the Production Environment 
Make it Easy for Anyone to Get the Latest Executable 
Everyone can see what's happening 
Automate Deployment
Steve Povilaitis 
Enterprise Agile Coach 
•steve@leadingagile.com 
•386.690.3118 
•www.leadingagile.com 
•twitter.com/stevepov 
•facebook.com/leadingagile 
•linkedin.com/in/stevepov

Más contenido relacionado

La actualidad más candente

WSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer GuideWSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer Guidehugo lu
 
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to BeKeeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to BeAbraham Marin-Perez
 
Continuous Integration for Beginners
Continuous Integration for BeginnersContinuous Integration for Beginners
Continuous Integration for BeginnersYüce Çelikel
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDNEdmund Turbin
 
Integration Testing as Validation and Monitoring
 Integration Testing as Validation and Monitoring Integration Testing as Validation and Monitoring
Integration Testing as Validation and MonitoringMelissa Benua
 
Continuous Integration as a Way of Life
Continuous Integration as a Way of LifeContinuous Integration as a Way of Life
Continuous Integration as a Way of LifeMelissa Benua
 
Continuous delivery - tools and techniques
Continuous delivery - tools and techniquesContinuous delivery - tools and techniques
Continuous delivery - tools and techniquesMike McGarr
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CDCprime
 
Continuous Integration with Bamboo for Salesforce
Continuous Integration with Bamboo for SalesforceContinuous Integration with Bamboo for Salesforce
Continuous Integration with Bamboo for SalesforceKlea Kolaric
 
Fundamentals of DevOps and CI/CD
Fundamentals of DevOps and CI/CDFundamentals of DevOps and CI/CD
Fundamentals of DevOps and CI/CDBatyr Nuryyev
 
Flusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous DeliveryFlusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous DeliveryJoost van der Griendt
 
Continuous Integration and Continuous Deployment in Enterprise scenario
Continuous Integration and Continuous Deployment in Enterprise scenarioContinuous Integration and Continuous Deployment in Enterprise scenario
Continuous Integration and Continuous Deployment in Enterprise scenarioDavide Benvegnù
 
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...CloudBees
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaWhat is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaEdureka!
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD OverviewAn Nguyen
 
Standardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins TeamStandardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins TeamDeborah Schalm
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryVirendra Bhalothia
 

La actualidad más candente (20)

WSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer GuideWSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer Guide
 
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to BeKeeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
 
Continuous Integration for Beginners
Continuous Integration for BeginnersContinuous Integration for Beginners
Continuous Integration for Beginners
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDN
 
Integration Testing as Validation and Monitoring
 Integration Testing as Validation and Monitoring Integration Testing as Validation and Monitoring
Integration Testing as Validation and Monitoring
 
Continuous Integration as a Way of Life
Continuous Integration as a Way of LifeContinuous Integration as a Way of Life
Continuous Integration as a Way of Life
 
Continuous delivery - tools and techniques
Continuous delivery - tools and techniquesContinuous delivery - tools and techniques
Continuous delivery - tools and techniques
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
 
Contineous integration
Contineous integrationContineous integration
Contineous integration
 
Continuous Integration with Bamboo for Salesforce
Continuous Integration with Bamboo for SalesforceContinuous Integration with Bamboo for Salesforce
Continuous Integration with Bamboo for Salesforce
 
Fundamentals of DevOps and CI/CD
Fundamentals of DevOps and CI/CDFundamentals of DevOps and CI/CD
Fundamentals of DevOps and CI/CD
 
Flusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous DeliveryFlusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous Delivery
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Continuous Integration and Continuous Deployment in Enterprise scenario
Continuous Integration and Continuous Deployment in Enterprise scenarioContinuous Integration and Continuous Deployment in Enterprise scenario
Continuous Integration and Continuous Deployment in Enterprise scenario
 
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaWhat is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 
Standardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins TeamStandardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins Team
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous Delivery
 
Continuous Integration 101
Continuous Integration 101Continuous Integration 101
Continuous Integration 101
 

Destacado

Social media and trade associations
Social media and trade associationsSocial media and trade associations
Social media and trade associationsRichard Houghton
 
Copyright Protection DCD
Copyright Protection DCD Copyright Protection DCD
Copyright Protection DCD Safe Creative
 
Safe Creative At Cc Summit
Safe Creative At Cc SummitSafe Creative At Cc Summit
Safe Creative At Cc SummitSafe Creative
 
Registries 2 0 Interoperability and Standardization
Registries 2 0 Interoperability and StandardizationRegistries 2 0 Interoperability and Standardization
Registries 2 0 Interoperability and StandardizationSafe Creative
 
Bulk Register Safe Creative
Bulk Register Safe CreativeBulk Register Safe Creative
Bulk Register Safe CreativeSafe Creative
 
E moderation slides for ketchum 22nd jan 2013
E moderation slides for ketchum 22nd jan 2013E moderation slides for ketchum 22nd jan 2013
E moderation slides for ketchum 22nd jan 2013Richard Houghton
 
DoPeace Ning Overview
DoPeace Ning OverviewDoPeace Ning Overview
DoPeace Ning OverviewTed Nunn
 
Social Networking Tools DOP
Social Networking Tools DOPSocial Networking Tools DOP
Social Networking Tools DOPTed Nunn
 
Tricia Jones Dept Of Peace Presentation
Tricia Jones Dept Of Peace PresentationTricia Jones Dept Of Peace Presentation
Tricia Jones Dept Of Peace PresentationTed Nunn
 
Клуб Эксклюзив
Клуб ЭксклюзивКлуб Эксклюзив
Клуб ЭксклюзивSergei Nikulin
 
NetAudio Español Ingles
NetAudio Español InglesNetAudio Español Ingles
NetAudio Español InglesSafe Creative
 
기업혁신을 위한 클라우드 여정
기업혁신을 위한 클라우드 여정기업혁신을 위한 클라우드 여정
기업혁신을 위한 클라우드 여정Youngwhun Lee
 

Destacado (17)

OSCRI Amsterdam
OSCRI AmsterdamOSCRI Amsterdam
OSCRI Amsterdam
 
Social media and trade associations
Social media and trade associationsSocial media and trade associations
Social media and trade associations
 
108 kawthar
108 kawthar108 kawthar
108 kawthar
 
Copyright Protection DCD
Copyright Protection DCD Copyright Protection DCD
Copyright Protection DCD
 
Safe Creative At Cc Summit
Safe Creative At Cc SummitSafe Creative At Cc Summit
Safe Creative At Cc Summit
 
Registries 2 0 Interoperability and Standardization
Registries 2 0 Interoperability and StandardizationRegistries 2 0 Interoperability and Standardization
Registries 2 0 Interoperability and Standardization
 
Cassy R
Cassy RCassy R
Cassy R
 
Bulk Register Safe Creative
Bulk Register Safe CreativeBulk Register Safe Creative
Bulk Register Safe Creative
 
E moderation slides for ketchum 22nd jan 2013
E moderation slides for ketchum 22nd jan 2013E moderation slides for ketchum 22nd jan 2013
E moderation slides for ketchum 22nd jan 2013
 
Tori
ToriTori
Tori
 
DoPeace Ning Overview
DoPeace Ning OverviewDoPeace Ning Overview
DoPeace Ning Overview
 
Social Networking Tools DOP
Social Networking Tools DOPSocial Networking Tools DOP
Social Networking Tools DOP
 
Tricia Jones Dept Of Peace Presentation
Tricia Jones Dept Of Peace PresentationTricia Jones Dept Of Peace Presentation
Tricia Jones Dept Of Peace Presentation
 
Клуб Эксклюзив
Клуб ЭксклюзивКлуб Эксклюзив
Клуб Эксклюзив
 
Poluição
PoluiçãoPoluição
Poluição
 
NetAudio Español Ingles
NetAudio Español InglesNetAudio Español Ingles
NetAudio Español Ingles
 
기업혁신을 위한 클라우드 여정
기업혁신을 위한 클라우드 여정기업혁신을 위한 클라우드 여정
기업혁신을 위한 클라우드 여정
 

Similar a Continuous Delivery Never SEND a Machine's Job

Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applicationsSunil Dalal
 
Continuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with JenkinsContinuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with Jenkinsecubemarketing
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdfMahmoudAlnmr1
 
Hudson
HudsonHudson
Hudson8x8
 
Why NXTware Remote for Jenkins
Why NXTware Remote for JenkinsWhy NXTware Remote for Jenkins
Why NXTware Remote for Jenkinsecubemarketing
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkinsVinay H G
 
Achieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef AutomateAchieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef AutomateChef
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case StudyIndicThreads
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOpsEklove Mohan
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deploymentMartijn van der Kamp
 
Continuous Delivery Using Jenkins
Continuous Delivery Using JenkinsContinuous Delivery Using Jenkins
Continuous Delivery Using JenkinsCliffano Subagio
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsMichael Lihs
 
Continuous Delivery for Open Source Java projects
Continuous Delivery for Open Source Java projectsContinuous Delivery for Open Source Java projects
Continuous Delivery for Open Source Java projectsTricode (part of Dept)
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0Jasmine Conseil
 
Dev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDavide Benvegnù
 

Similar a Continuous Delivery Never SEND a Machine's Job (20)

Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
Continuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with JenkinsContinuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with Jenkins
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
Hudson
HudsonHudson
Hudson
 
Why NXTware Remote for Jenkins
Why NXTware Remote for JenkinsWhy NXTware Remote for Jenkins
Why NXTware Remote for Jenkins
 
Dev ops using Jenkins
Dev ops using JenkinsDev ops using Jenkins
Dev ops using Jenkins
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkins
 
Achieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef AutomateAchieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef Automate
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case Study
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Devops architecture
Devops architectureDevops architecture
Devops architecture
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deployment
 
Cloud for Agile Testing - Burak Koyuncu
Cloud for Agile Testing - Burak KoyuncuCloud for Agile Testing - Burak Koyuncu
Cloud for Agile Testing - Burak Koyuncu
 
Continuous Delivery Using Jenkins
Continuous Delivery Using JenkinsContinuous Delivery Using Jenkins
Continuous Delivery Using Jenkins
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 
Continuous Delivery for Open Source Java projects
Continuous Delivery for Open Source Java projectsContinuous Delivery for Open Source Java projects
Continuous Delivery for Open Source Java projects
 
CD
CDCD
CD
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
 
Dev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps world
 

Continuous Delivery Never SEND a Machine's Job

  • 1. Continuous Delivery Never SEND a human to do a machine’s job Presenter: Steve Povilaitis
  • 2. Steve Povilaitis Enterprise Agile Coach •steve@leadingagile.com •386.690.3118 •www.leadingagile.com •twitter.com/stevepov •facebook.com/leadingagile •linkedin.com/in/stevepov
  • 3. Working hypothesis Agile transformation begins by defining a rational system of delivery for the enterprise. Corollary: Until your code is in production delivering the value you intended, you are merely building castles in a technological sandbox.
  • 4. Overview Introduction to Continuous Deployment CD workflow and practices Tools Example Continuous Deployment architecture Transformation Roadmap
  • 5. How long would it take your organization to deploy a change [to production] that involves just one single line of code? Do you do this on a repeatable, reliable basis? - Mary and Tom Poppendieck, Implementing Lean Software Development
  • 6. What is Continuous Deployment? •A development methodology •Of continuous developer integrations/deployments •Executed by automatic builds
  • 7. “Never send a human to do a machine’s job”
  • 8. What is it not? •Nightly Builds •Developer branches •Scheduled Integration Points •Building via IDEs
  • 9. Integration is Hard! •Software Effort increases exponentially vs: – Bug Count – Number of components – Time since last integration
  • 10. Reduce Risk of Change John Allspaw, Ops Meta-Metrics
  • 11. SCRUM PROVIDES A PROCESS FOR EARLY VALUE DELIVERY
  • 12. Traditional Process Risks •Lack of Team Cohesion – “Your changes to Foobar are incompatible with mine. How do we merge now?” – “I thought you fixed that XX days/weeks/months ago!” •Poor quality code base – “Why cant I just include Foo and not require all of the other libs?” •Lack of project visibility – “What do you mean the tests are failing?” – “What’s in version 1.2.3. of the build?” – “What’s our code coverage right now?” •Lack of deployable software – “It works on my machine!” – “The customer is coming, we need to demo today”
  • 13. Use CD to Reduce Risk and Improve Quality •Better – Test early and often with self-testing builds – Developers concentrate on coding, repetitive and boring tasks like testing are automated •Faster – Replace big and long integration phases with small and frequent ones – Build, Test, Deploy in parallel, not at the end – No integration points mean builds and deployments become a non-event! •Cheaper – Identify defects earlier – Fix when least costly – Easily repeatable build, test, and deploy process
  • 14. Continuous Integration Workflow •Monitor source repository for changes •Checkout source whenever there are ANY changes •Ensure code actually compiles on every target platform •Run unit and integration tests •Generate documentation •Package and deploy
  • 15. Automated Build Process SCM Build Results Test Results Doxygen output Email/Web/IM 1. Bootstrap 2. Check for modifications 3. Get the revision log Jenkins Javac ant Junit Doxygen etc 4.2 Run Build 5. Publish Artifacts 6. Send to publisher 4.1. Get the latest source 4.3. Tag source (optional) 4. Run Build Jenkins SCM adapter
  • 16. Compilation != A Build Build Inputs •Sources – .java .js •Configuration files – XML files – Properties •Resources – Libraries Build Outputs Executable / Library Test Results Junit Documentation doxygen Installers Source Package
  • 17. Builds are Self Testing •Directly go from source to running xUnit tests –No manual copying –No configuration file editing
  • 18. Automatic Build and Test Reporting •Automatic publishing of – Build results – xUnit test results •Everyone Sees what’s happening – Web interface – Notifications via • Email • IM • RSS
  • 19. CD roadmap Implement Version control - using a next generation tool such SVN,Perforce, TFS, Git. Not Clearcase or VSS, or CVS or some other POS. Goal - Implement a versioning system that allows developers to work in a distributed manner in a non-file locked environment
  • 20. Source Control Recommendability http://martinfowler.com/bliki/VersionContr olTools.html
  • 21. Automate BOTH compilation and packaging - using tools such as Make, eMake, Ant, Nant, Maven, NuGet Goal -ability to go from version controlled source to a deployment ready artifact with one command or script
  • 22. Automatic Builds –Continuously build and test the codebase each time a change is made to the code. Setup a CI server - Jenkins, TFS, Electric Commander, integrated with version control system. Goal - Implement a CI process that continually outputs a set of potentially deployable artifacts
  • 23. Requirements traceability - integrate with an ALM tool such as V1, Rally, TFS, Trac. Goal - automatically provide a thorough audit trail of what has been implemented in code to satify user requirements. Link code changes to individual user stories and/or defects.
  • 24. Automated Testing: Automate as much of the following as possible. Unit tests Integration Tests Load Tests Performance Tests Simulation tests Smoke tests Quality Tests Goal - automate as much testing as possible and provide sufficient test coverage at multiple levels
  • 25. Automated Deployment - provide the ability to deploy an arbitrary release candidate into an arbitrary environment for testing Goal - Ability to deploy a software version based on a single change set to an arbitrary environment with a single command
  • 26. Automated environment provisioning - ability to instantiate virtualized environments as needed Goal - ability to quickly create virtualized environments as needed
  • 27. Infrastructure as code - ability to version control infrastructure and platforms an build them in a consistent and repeatable manner, using tools like puppet and chef Goal - implement configuration managed environments with consistency and reliability
  • 28. Implement monitoring (metrics) - implement metrics to monitor the build health of the codebase, and the health of the deployed solution Goal - provide real-time health monitoring via a visual dashboard
  • 29. Jenkins CI Server + Trac •Jenkins: Open Source, written in Java •Trac: Open Source, written in Python •No install required – Runs within a web container •Web based configuration •Support for – Subversion – NAnt – NUnit – FXCop
  • 30.
  • 31.
  • 32.
  • 33.
  • 34. Martin Fowler’s 10 Practices for CI Maintain a Single Source Repository. Automate the Build Make Your Build Self-Testing Everyone Commits Every Day Every Commit Should Build the Mainline on an Integration Machine Keep the Build Fast Test in a Clone of the Production Environment Make it Easy for Anyone to Get the Latest Executable Everyone can see what's happening Automate Deployment
  • 35. Steve Povilaitis Enterprise Agile Coach •steve@leadingagile.com •386.690.3118 •www.leadingagile.com •twitter.com/stevepov •facebook.com/leadingagile •linkedin.com/in/stevepov

Notas del editor

  1. This represents all we’re going to focus on during our engagement. Scrum and XP really are represented by the right side. We’re going to start on the left side next.
  2. The main Hudson dashboard shows the real time status of all the projects under CI
  3. The dashboard for a specific project shows the build history, a link to download products of the build, and the test and code check history. Note the link to Trac on the upper left
  4. The change history of the project, correlated to each build is viewable. Notice that someone ‘broke’ build #1265 with subversion changeset 3117. We can click on the Trac link to that change to see what the changes were that broke the build.
  5. For example, these are the changes for changeset 3123, and notice that the developer states references #381 in his commit message, which provides an auto-link to the task or bug report this commit is related to.