SlideShare a Scribd company logo
1 of 30
Continuous Integration
    Jesper Forslund
    jesper.forslund@logica.com
    2010-09-22




                                                      jesperforslund.se
                                 Continuous Integration - Karlskrona 2010-09-22
Continuous Integration
                         CI = Continuous Integration

What and why
How to get started
Experience – set up examples
Next step




                                                                   jesperforslund.se
                                              Continuous Integration - Karlskrona 2010-09-22
What is integration?



                                     jesperforslund.se
                Continuous Integration - Karlskrona 2010-09-22
Integration


                                                jesperforslund.se
Photo: Jcarwil             Continuous Integration - Karlskrona 2010-09-22
Integration Hell




                                    jesperforslund.se
               Continuous Integration - Karlskrona 2010-09-22
Stepping
                       out of your
                     comfort zone
                    don’t like integration?
                Integrate frequently and
                soon it will be a non-event
                                  non-




                                                       jesperforslund.se
Photo: isayx3                     Continuous Integration - Karlskrona 2010-09-22
Finding the bug
    Small increments = less to search




                                                 jesperforslund.se
                            Continuous Integration - Karlskrona 2010-09-22
A software development project
                Reference project set up




  Development
     team
                                         Customer

                    Management




                                                         jesperforslund.se
                                    Continuous Integration - Karlskrona 2010-09-22
Challenges in your everyday project
                                  What CI can solve

1.   Conflicts in version control system
2.   Build and deployment requires manual effort
3.   Providing deployable software at any time
4.   Defects are discovered late
5.   Current state of version controlled system is unknown
6.   Low quality software
7.   Getting feedback from customer during development




                                                                       jesperforslund.se
                                                  Continuous Integration - Karlskrona 2010-09-22
Introduction
                                                         CI on one slide

“Continuous Integration is a software development practice
where members of a team integrate their work frequently,
usually each person integrates at least daily - leading to multiple
integrations per day. Each integration is verified by an
automated build (including test) to detect integration errors as
quickly as possible.

Many teams find that this approach leads to significantly
reduced integration problems and allows a team to develop
cohesive software more rapidly.”

Martin Fowler
http://martinfowler.com/articles/continuousIntegration.html

                                                                                                jesperforslund.se
                                                                           Continuous Integration - Karlskrona 2010-09-22
Build software at every change
                                                                           Basic CI


                                    eview



                                                            Feedback
                                                            Mechanism               Generate

                                 Commit Changes


        Developer
      Run Private Build

                          Commit Changes
                                                                         Poll



                          Commit Changes                                                CI Server         Build Script
  Developer                                        Subversion                   Integration Build Machine
Run Private Build                           Version Control Repository




          Developer
        Run Private Build


                                                                                                                         jesperforslund.se
                                                                                                 Continuous Integration - Karlskrona 2010-09-22
Build software at every change
                                                               CI server activities

                              Poll



                                             CI Server         Build Script
        Subversion                   Integration Build Machine
 Version Control Repository

                                         Get the latest code



                                            Compilation



                                           Test Execution



                                           DB Integration



                                          Code Inspections



                                            Automated
                                            Deployment


                                           Documentation
                                            Generation



                                          Release Package                                              jesperforslund.se
                                                                                  Continuous Integration - Karlskrona 2010-09-22
10 core practices
                            The 10 step program to CI

1. Maintain a single source repository
2. Automate the build
3. Make the build self-testing
4. Commit every day
5. Every commit builds on an integration machine
6. Keep the build fast
7. Test in a clone of the production environment
8. Make it easy to get the last executable
9. Everyone can see what’s happening
10. Automate deployment
                                                                     jesperforslund.se
                                                Continuous Integration - Karlskrona 2010-09-22
Set up examples
 continuous integration implemented




                                                           jesperforslund.se
                                      Continuous Integration - Karlskrona 2010-09-22
Default
                                                                                         Set up example #1




                                    eview



                                                            Feedback
                                                            Mechanism               Generate

                                 Commit Changes


        Developer
      Run Private Build

                          Commit Changes
                                                                         Poll



                          Commit Changes                                                CI Server         Build Script
  Developer                                        Subversion                   Integration Build Machine
Run Private Build                           Version Control Repository




          Developer
        Run Private Build




                                                                                                                                              jesperforslund.se
                                                                                                                         Continuous Integration - Karlskrona 2010-09-22
Automated deployment
          Set up example #2




                                               jesperforslund.se
                          Continuous Integration - Karlskrona 2010-09-22
Increase visibility
          Set up example #3




                                               jesperforslund.se
                          Continuous Integration - Karlskrona 2010-09-22
Including third party product
                                                                                             Set up example #4

                                                                                                                     eview
                                                                                            Customer
                                                                                   Explore ongoing development


                                    eview



                                                               Feedback
                                                               Mechanism                Generate
                                                                                                     Deploy always
                                 Commit Changes
                                                                                                                 Demonstration Server

        Developer
      Run Private Build
                                                                                                                             Deploy on demand
                          Commit Changes
                                                                            Poll
                                                                                                                                                 Deploy on demand


                           Commit Changes                                                   CI Server         Build Script
  Developer                                           Subversion                    Integration Build Machine
Run Private Build                              Version Control Repository

                                                                                                                                     Acceptans Test
                              Commit Changes                                                                                             Server


          Developer                                                                                                                                         Production
        Run Private Build                                                                                                                                     Server




                                 Development server
                                  Third party product                                                                                                          jesperforslund.se
                                                                                                                                        Continuous Integration - Karlskrona 2010-09-22
Start using CI
   how to get started




                                             jesperforslund.se
                        Continuous Integration - Karlskrona 2010-09-22
Project roadmap
                                    Print me!

1.   Development team commits to the CI practice
2.   Get a CI server
3.   Extract the build script
4.   Provide a feedback system
5.   Automate the deployment
6.   Write tests for core functionality
     Keep it continuous = do not stop!
      etrospectives – continuous improvement!



                                                                     jesperforslund.se
                                                Continuous Integration - Karlskrona 2010-09-22
Developers guideline
                                       Print me!

1.   Commit early and often – make it a non-event
2.   Never commit broken code – update, build locally then commit
3.   Fix broken builds – top priority to resolve
4.   If the build fail – make sure that it fail fast
5.   Gather metrics & understand them - use tools and read reports
6.   Build in target environments – a local build is not the master
7.   Create artefacts – each build should generate a package




                                                                        jesperforslund.se
                                                   Continuous Integration - Karlskrona 2010-09-22
Final slide
                          Remember me




        Avoid Integration Hell – use CI

high ROI – happy developers – relaxed customer

      CI – the path to a better life!




                                                               jesperforslund.se
                                          Continuous Integration - Karlskrona 2010-09-22
jesperforslund.se/talk-devcon10




                                           jesperforslund.se
                      Continuous Integration - Karlskrona 2010-09-22
more slides
references, motivation and tools…




                                                         jesperforslund.se
                                    Continuous Integration - Karlskrona 2010-09-22
References
                                                          Learning more

Literature
   Continuous Integration: Improving Software Quality and Reducing Risk
   Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
   Agile Patterns: The Technical Cluster
   http://martinfowler.com/articles/continuousIntegration.html
   http://en.wikipedia.org/wiki/Continuous_integration

CI Tools
   http://damagecontrol.codehaus.org/Continuous+Integration+Server+Feature+Matrix




                                                                                                         jesperforslund.se
                                                                                    Continuous Integration - Karlskrona 2010-09-22
What is the return?
                                     Motivation

Reduced risk
   Testing is done early and often
   Defects are identified early
   Visibility is increased
Automate to go faster
   Less manual effort – more time to deliver value
   Test in parallel, not everything at the end
Integration becomes a non-event
   No more integration hell
   No more hardening iterations

        Many teams using CI report
           that the advantages of CI
       well outweigh the disadvantages
                                                                          jesperforslund.se
                                                     Continuous Integration - Karlskrona 2010-09-22
Tools
                                    CI Server software

Hudson
   Written in Java
   No install required
   Easy to use
   Powerful
   Great support
Cruise Control
   The first tool and widely used
Continuum
   Focused on MAVEN
   Powerful but more complex UI
Bamboo
   Commercial product that works with Jira
                                                                          jesperforslund.se
                                                     Continuous Integration - Karlskrona 2010-09-22
Visualization tool
     http://code.google.com/p/gource/
     http://code.google.com/p/gource/
            code.google.com/p/gource




                                                  jesperforslund.se
                             Continuous Integration - Karlskrona 2010-09-22
About me
                                              Jesper Forslund

Jesper Forslund is an entrepreneur and consultant at Logica with
wide experience from all software development disciplines and
business development. He has more than 5 years experience
from software development, with a strong focus on methods
and practice. Jesper is an ambassador for Agile and a supporter
of Software Craftsmanship.

  Links
      www.jesperforslund.se
      http://se.linkedin.com/in/forslund
      www.logica.se




                                                                                        jesperforslund.se
                                                                   Continuous Integration - Karlskrona 2010-09-22
Photos
                                                 Thanks for the photos

CHEVY CAPRICE CHAOS by Jason
http://www.flickr.com/photos/14043270@N08/2686300859

The Door to Hell by Flydime
http://www.flickr.com/photos/flydime/4671890969/

The Anti-Ad by Ed McGowan
http://www.flickr.com/photos/isayx3/3605989887

Ain't it crazy? By Jerry Berg
http://www.flickr.com/photos/ghb624/2783091436

Bug* by Gaëtan Bourque
http://www.flickr.com/photos/lesec/183232023

Smaragdine field by Katarina Stefanović
http://www.flickr.com/photos/jup3nep/3588516981/




                                                                                        jesperforslund.se
                                                                   Continuous Integration - Karlskrona 2010-09-22

More Related Content

Similar to Continuous integration - devcon10 - 20100922

Continuous integration
Continuous integrationContinuous integration
Continuous integrationJames Fisk
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkinsVinay H G
 
Continuous Integration at T3CON08
Continuous Integration at T3CON08Continuous Integration at T3CON08
Continuous Integration at T3CON08Sebastian Kurfürst
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João JesusComunidade NetPonto
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...eleksdev
 
Bamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefBamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefEllen Feaheny
 
Architecting for continuous delivery (33rd Degree)
Architecting for continuous delivery (33rd Degree)Architecting for continuous delivery (33rd Degree)
Architecting for continuous delivery (33rd Degree)Axel Fontaine
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Dennys Hsieh
 
Continuous Integration and Builds
Continuous Integration and BuildsContinuous Integration and Builds
Continuous Integration and BuildsBhavin Javia
 
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 Delivery 持續交付
Continuous Delivery 持續交付Continuous Delivery 持續交付
Continuous Delivery 持續交付Cody Liu
 
Continuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database ObjectsContinuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database ObjectsPrabhu Ramasamy
 
Continuous Delivery in Java
Continuous Delivery in JavaContinuous Delivery in Java
Continuous Delivery in JavaXPeppers
 
Continuous integration per le tue applicazioni mobile
Continuous integration per le tue applicazioni mobileContinuous integration per le tue applicazioni mobile
Continuous integration per le tue applicazioni mobileAntonio Liccardi
 
Estafet Eacis Demo Slides
Estafet   Eacis Demo SlidesEstafet   Eacis Demo Slides
Estafet Eacis Demo SlidesPauldrew
 
Estafet Eacis Demo Slides
Estafet   Eacis Demo SlidesEstafet   Eacis Demo Slides
Estafet Eacis Demo SlidesNigel Whittaker
 
Enabling Agile Testing Through Continuous Integration Agile2009
Enabling Agile Testing Through Continuous Integration Agile2009Enabling Agile Testing Through Continuous Integration Agile2009
Enabling Agile Testing Through Continuous Integration Agile2009sstolberg
 

Similar to Continuous integration - devcon10 - 20100922 (20)

Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkins
 
Continuous Integration at T3CON08
Continuous Integration at T3CON08Continuous Integration at T3CON08
Continuous Integration at T3CON08
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
 
Bamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefBamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - Brief
 
Architecting for continuous delivery (33rd Degree)
Architecting for continuous delivery (33rd Degree)Architecting for continuous delivery (33rd Degree)
Architecting for continuous delivery (33rd Degree)
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
Continuous Integration and Builds
Continuous Integration and BuildsContinuous Integration and Builds
Continuous Integration and Builds
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
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 with Jenkins
Continuous integration with JenkinsContinuous integration with Jenkins
Continuous integration with Jenkins
 
Continuous Delivery 持續交付
Continuous Delivery 持續交付Continuous Delivery 持續交付
Continuous Delivery 持續交付
 
Continuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database ObjectsContinuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database Objects
 
Continuous Delivery in Java
Continuous Delivery in JavaContinuous Delivery in Java
Continuous Delivery in Java
 
Continuous integration per le tue applicazioni mobile
Continuous integration per le tue applicazioni mobileContinuous integration per le tue applicazioni mobile
Continuous integration per le tue applicazioni mobile
 
Estafet Eacis Demo Slides
Estafet   Eacis Demo SlidesEstafet   Eacis Demo Slides
Estafet Eacis Demo Slides
 
Estafet Eacis Demo Slides
Estafet   Eacis Demo SlidesEstafet   Eacis Demo Slides
Estafet Eacis Demo Slides
 
Enabling Agile Testing Through Continuous Integration Agile2009
Enabling Agile Testing Through Continuous Integration Agile2009Enabling Agile Testing Through Continuous Integration Agile2009
Enabling Agile Testing Through Continuous Integration Agile2009
 

Recently uploaded

Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 

Recently uploaded (20)

Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 

Continuous integration - devcon10 - 20100922

  • 1. Continuous Integration Jesper Forslund jesper.forslund@logica.com 2010-09-22 jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 2. Continuous Integration CI = Continuous Integration What and why How to get started Experience – set up examples Next step jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 3. What is integration? jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 4. Integration jesperforslund.se Photo: Jcarwil Continuous Integration - Karlskrona 2010-09-22
  • 5. Integration Hell jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 6. Stepping out of your comfort zone don’t like integration? Integrate frequently and soon it will be a non-event non- jesperforslund.se Photo: isayx3 Continuous Integration - Karlskrona 2010-09-22
  • 7. Finding the bug Small increments = less to search jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 8. A software development project Reference project set up Development team Customer Management jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 9. Challenges in your everyday project What CI can solve 1. Conflicts in version control system 2. Build and deployment requires manual effort 3. Providing deployable software at any time 4. Defects are discovered late 5. Current state of version controlled system is unknown 6. Low quality software 7. Getting feedback from customer during development jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 10. Introduction CI on one slide “Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.” Martin Fowler http://martinfowler.com/articles/continuousIntegration.html jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 11. Build software at every change Basic CI eview Feedback Mechanism Generate Commit Changes Developer Run Private Build Commit Changes Poll Commit Changes CI Server Build Script Developer Subversion Integration Build Machine Run Private Build Version Control Repository Developer Run Private Build jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 12. Build software at every change CI server activities Poll CI Server Build Script Subversion Integration Build Machine Version Control Repository Get the latest code Compilation Test Execution DB Integration Code Inspections Automated Deployment Documentation Generation Release Package jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 13. 10 core practices The 10 step program to CI 1. Maintain a single source repository 2. Automate the build 3. Make the build self-testing 4. Commit every day 5. Every commit builds on an integration machine 6. Keep the build fast 7. Test in a clone of the production environment 8. Make it easy to get the last executable 9. Everyone can see what’s happening 10. Automate deployment jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 14. Set up examples continuous integration implemented jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 15. Default Set up example #1 eview Feedback Mechanism Generate Commit Changes Developer Run Private Build Commit Changes Poll Commit Changes CI Server Build Script Developer Subversion Integration Build Machine Run Private Build Version Control Repository Developer Run Private Build jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 16. Automated deployment Set up example #2 jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 17. Increase visibility Set up example #3 jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 18. Including third party product Set up example #4 eview Customer Explore ongoing development eview Feedback Mechanism Generate Deploy always Commit Changes Demonstration Server Developer Run Private Build Deploy on demand Commit Changes Poll Deploy on demand Commit Changes CI Server Build Script Developer Subversion Integration Build Machine Run Private Build Version Control Repository Acceptans Test Commit Changes Server Developer Production Run Private Build Server Development server Third party product jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 19. Start using CI how to get started jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 20. Project roadmap Print me! 1. Development team commits to the CI practice 2. Get a CI server 3. Extract the build script 4. Provide a feedback system 5. Automate the deployment 6. Write tests for core functionality Keep it continuous = do not stop! etrospectives – continuous improvement! jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 21. Developers guideline Print me! 1. Commit early and often – make it a non-event 2. Never commit broken code – update, build locally then commit 3. Fix broken builds – top priority to resolve 4. If the build fail – make sure that it fail fast 5. Gather metrics & understand them - use tools and read reports 6. Build in target environments – a local build is not the master 7. Create artefacts – each build should generate a package jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 22. Final slide Remember me Avoid Integration Hell – use CI high ROI – happy developers – relaxed customer CI – the path to a better life! jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 23. jesperforslund.se/talk-devcon10 jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 24. more slides references, motivation and tools… jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 25. References Learning more Literature Continuous Integration: Improving Software Quality and Reducing Risk Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation Agile Patterns: The Technical Cluster http://martinfowler.com/articles/continuousIntegration.html http://en.wikipedia.org/wiki/Continuous_integration CI Tools http://damagecontrol.codehaus.org/Continuous+Integration+Server+Feature+Matrix jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 26. What is the return? Motivation Reduced risk Testing is done early and often Defects are identified early Visibility is increased Automate to go faster Less manual effort – more time to deliver value Test in parallel, not everything at the end Integration becomes a non-event No more integration hell No more hardening iterations Many teams using CI report that the advantages of CI well outweigh the disadvantages jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 27. Tools CI Server software Hudson Written in Java No install required Easy to use Powerful Great support Cruise Control The first tool and widely used Continuum Focused on MAVEN Powerful but more complex UI Bamboo Commercial product that works with Jira jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 28. Visualization tool http://code.google.com/p/gource/ http://code.google.com/p/gource/ code.google.com/p/gource jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 29. About me Jesper Forslund Jesper Forslund is an entrepreneur and consultant at Logica with wide experience from all software development disciplines and business development. He has more than 5 years experience from software development, with a strong focus on methods and practice. Jesper is an ambassador for Agile and a supporter of Software Craftsmanship. Links www.jesperforslund.se http://se.linkedin.com/in/forslund www.logica.se jesperforslund.se Continuous Integration - Karlskrona 2010-09-22
  • 30. Photos Thanks for the photos CHEVY CAPRICE CHAOS by Jason http://www.flickr.com/photos/14043270@N08/2686300859 The Door to Hell by Flydime http://www.flickr.com/photos/flydime/4671890969/ The Anti-Ad by Ed McGowan http://www.flickr.com/photos/isayx3/3605989887 Ain't it crazy? By Jerry Berg http://www.flickr.com/photos/ghb624/2783091436 Bug* by Gaëtan Bourque http://www.flickr.com/photos/lesec/183232023 Smaragdine field by Katarina Stefanović http://www.flickr.com/photos/jup3nep/3588516981/ jesperforslund.se Continuous Integration - Karlskrona 2010-09-22