SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
Continuous Integration
●   What is continuous integration?
●   Building a feature with continuous integration
●   Practices of continuous integration
●   Benefits of continuous integration
●   Introducing continuous integration
●   Final thoughts
●   Continuous integration tools
●   Links
What is continuous integration?
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. This presentation is a quick
overview of Continuous Integration summarizing the
technique and its current usage.
What is continuous integration?
●   "it can't work (here)"
●   "doing it won't make much difference"
●   "yes we do that - how could you live without it?"
    The term 'Continuous Integration' originated with the
    Extreme Programming development process, as one
    of its original twelve practices. Although Continuous
    Integration is a practice that requires no particular
    tooling to deploy, it is useful to use a Continuous
    Integration server.
●   Integration is a "pay me now or pay me more
    later" kind of activity.
●   Building a feature with continuous
                    integration
●   Let's do something to a piece   ●   Update the working copy with
    of software,we assume it's          the changes from the others
    small and can be done in a          & rebuild, check for clashes.
    few hours.                      ●   It is yours responsibility to
●   Take a copy of the current          create a successful build.
    integrated source onto your     ●   Commit your changes.
    local development machine.
                                    ●   Build on the integration
●   Alter the production code,
                                        machine.
    and add or change the
    automated tests.                ●   Must fix the build quickly.
●   Build and run the automated     ●   Shared stable base, fewer
    tests.                              bugs, bugs show up
                                        quickly.
●   Practices of continuous integration
●   Maintain a Single        ●   Keep the Build Fast
    Source Repository        ●   Test in a Clone of the
●   Automate the Build           Production
●   Make Your Build Self-        Environment
    Testing                  ●   Make it Easy for
●   Everyone Commits To          Anyone to Get the
    the Mainline Every Day       Latest Executable
●   Every Commit Should
                             ●   Everyone can see
    Build the Mainline on        what's happening
    an Integration Machine   ●   Automate Deployment
Maintain a Single Source Repository
●   Software projects involve lots of files that need to be
    orchestrated together to build a product.
●   Tools to manage all this - called Source Code
    Management tools, configuration management,
    version control systems, repositories, etc.
●   Everything you need to do a build should be in there
    including: test scripts, properties files, database
    schema, install scripts, 3rd party libs.
●   Keep your use of branches to a minimum.
●   In general you should store in source control
    everything you need to build anything, but nothing that
    you actually build.
Automate the Build
●   Automated environments for builds are a
    common feature of systems (Make, Ant, Nant,
    MSBuild, etc.)
●   A common mistake is not to include everything
    in the automated build (virgin machine – up!)
●   Incremental builds, component builds, targets
●   It's essential to have a master build that is
    usable on a server and runnable from other
    scripts (Do not depend much on IDE)
Make Your Build Self-Testing
●   A program may run, but that doesn't mean it does the
    right thing.
●   A good way to catch bugs more quickly and efficiently is
    to include automated tests in the build process.
●   CI has a weaker requirement of self-testing code then
    TDD.
●   For self-testing code you need a suite of automated
    tests that can check a large part of the code base for
    bugs.
●   The rise of TDD has popularized the XUnit family.
●   Tools that focus on more end-to-end testing, like FIT,
    Selenium, Sahi, Watir, FITnesse, etc.
●   You can't count on tests to find everything.
Everyone Commits To the Mainline
              Every Day
●   Integration is primarily about communication.
●   The one prerequisite for a developer committing to the mainline
    is that they can correctly build their code.
●   The key to fixing problems quickly is finding them quickly.
●   The fact that you build when you update your working copy
    means that you detect compilation conflicts as well as textual
    conflicts.
●   Since there's only a few hours of changes between commits,
    there's only so many places where the problem could be hiding.
    You can even use diff-debugging.
●   Frequent commits encourage developers to break down their
    work into small chunks of a few hours each. This helps track
    progress and provides a sense of progress.
Every Commit Should Build the
Mainline on an Integration Machine
●   Using daily commits, a team gets frequent tested builds.
●   People not doing an update and build before they commit,
    environmental differences between developers' machines and
    other issues – prevent mainline's healthy state.
●   Integration build succeeds should the commit be considered to
    be done – developers responsibility.
●   Use a manual build or a CI server.
●   Do not just make builds on a timed schedule.
●   If the mainline build fails, it needs to be fixed right away. You're
    always developing on a known stable base.
●   It's not a bad thing for the mainline build to break. Fix fast!
●   Patience and steady application – develop a regular habit of
    working mainline builds.
Keep the Build Fast
●   The whole point of CI is to provide rapid feedback.
●   For most projects the XP guideline of a ten minute
    build is perfectly within reason.
●   Start working on setting up a staged build.
●   Build pipeline – multiple sequential builds.
●   Fast commit build is the build that's needed when
    someone commits to the mainline.
●   Secondary build which runs when it can – for
    example tests that involve external services such
    as a database, etc.
Test in a Clone of the Production
               Environment
●   The point of testing is to flush out, under
    controlled conditions, any problem that the
    system will have in production.
●   You want to set up your test environment to be
    as exact a mimic of your production
    environment as possible.
●   It's common to have a very artificial
    environment for the commit tests for speed, and
    use a production clone for secondary testing.
●   Use virtualization.
Make it Easy for Anyone to Get the
        Latest Executable
●   People find it much easier to see something
    that's not quite right and say how it needs to be
    changed.
●   Anyone involved with a software project should
    be able to get the latest executable and be able
    to run it: for demonstrations, exploratory testing,
    or just to see what changed this week.
●   Well known place where people can find the
    latest executable. For the very latest you should
    put the latest executable to pass the commit
    tests (pretty stable).
Everyone can see what's happening
●   CI is all about communication, so you want to
    ensure that everyone can easily see the state of
    the system and the changes that have been
    made to it.
●   Tray monitors, lights, lava lamps, toy rocket
    launchers, etc.
●   Use a tool with a web site for dashboard,
    reporting and extended information.
●   Wall calendar for a QA team to put red & green
    stickers indicating healthy & broken builds.
Automate Deployment
●   To do CI you need multiple environments, one
    to run commit tests, one or more to run
    secondary tests.
●   Use deployment scripts to move between
    environments
●   If you deploy into production one extra
    automated capability you should consider is
    automated rollback.
●   Rolling deployments in clustered environments.
●   Trial build to a subset of users.
Benefits of continuous integration
    ●


●   The greatest and most wide ranging benefit of CI is
    reduced risk.
●   At all times you know where you are, what works, what
    doesn't, the outstanding bugs you have in your system.
●   CI doesn't get rid of bugs, but it does make them
    dramatically easier to find and remove.
●   Bugs are also cumulative. The more bugs you have, the
    harder it is to remove each one. Broken Windows
    syndrome.
●   If you have CI, it removes one of the biggest barriers to
    frequent deployment – between customers and
    development.
●   Introducing continuous integration
●   There's no fixed recipe (your setup & team)
●   Get the build automated. Build the whole
    system with a single command. On-demand.
●   Introduce some automated testing into you
    build. Identify major areas. Start doing.
●   Try to speed up the commit build. Magic 10m.
●   Begin with Continuous Integration from the
    beginning for a new project.
●   Get some help.
●Final thoughts
●   Continuous Integration has become a
    mainstream technique for software
    development.
●   Many teams using CI report that the
    advantages of CI well outweigh the
    disadvantages.
●   The effect of finding and fixing integration bugs
    early in the development process saves both
    time and money over the lifespan of a project.
Final thoughts
●   when unit tests fail or a bug emerges, developers might            ●   initial setup time
    revert the codebase back to a bug-free state, without wasting          required
    time debugging                                                     ●   well-developed
●   developers detect and fix integration problems continuously -          test-suite required
    avoiding last-minute chaos at release dates                            to achieve
                                                                           automated testing
●   early warning of broken/incompatible code                              advantages
●   early warning of conflicting changes                               ●   large-scale
●   immediate unit testing of all changes                                  refactoring can be
●   constant availability of a "current" build for testing, demo, or       troublesome due
                                                                           to continuously
    release purposes
                                                                           changing code
●   immediate feedback to developers on the quality,                       base
    functionality, or system-wide impact of code they are writing      ●   hardware costs
●   frequent code check-in pushes developers to create modular,            for build
    less complex code                                                      machines can be
●   metrics generated from automated testing and CI focus                  significant
    developers on developing functional, quality code, and help
    develop momentum in a team
●   Continuous integration tools
    Most popular:
●   Apache Continuum — continuous integration server
    supporting Apache Maven and Apache Ant. Supports
    CVS, Subversion, Ant, Maven, and shell scripts
●   Hudson — MIT-licensed, written in Java, runs in
    servlet container, supports CVS, Subversion, Mercurial
    , Git, StarTeam, Clearcase, Ant, NAnt, Maven, and
    shell scripts
●   CruiseControl — Java-based framework for a
    continuous build process
●   CruiseControl.NET — .NET-based automated
    continuous integration server
Links
●   http://en.wikipedia.org/wiki/Continuous_integration
●   http://www.martinfowler.com/articles/continuousIntegration.html
●   http://www.extremeprogramming.org/rules/integrateoften.html
●   http://cruisecontrol.sourceforge.net/overview.html
●   http://wiki.hudson-ci.org/display/HUDSON/Use+Hudson
●   http://continuum.apache.org/
●   http://www.wakaleo.com/books/continuous-integration-with-hudson-t
●   http://www.developer.com/open/article.php/3803646/The-Best-Contin
●   http://jamesshore.com/Blog/Continuous-Integration-is-an-Attitude.htm

Más contenido relacionado

La actualidad más candente

#ATATalk - Episode 1 : Session on Selenium Exceptions by Pallavi Sharma
#ATATalk - Episode 1 : Session on Selenium Exceptions by Pallavi Sharma#ATATalk - Episode 1 : Session on Selenium Exceptions by Pallavi Sharma
#ATATalk - Episode 1 : Session on Selenium Exceptions by Pallavi SharmaAgile Testing Alliance
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deploymentMartijn van der Kamp
 
Qa in CI/CD
Qa in CI/CDQa in CI/CD
Qa in CI/CDAdsmurai
 
The Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryThe Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryPerforce
 
Understanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous DeliveryUnderstanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous DeliverySwapnil Jain
 
Cloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team ServicesCloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team ServicesMartin Hinshelwood
 
Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015Clint Edmonson
 
ISTQB Agile Tester - Agile Test Tools
ISTQB Agile Tester - Agile Test ToolsISTQB Agile Tester - Agile Test Tools
ISTQB Agile Tester - Agile Test ToolsMoataz Nabil
 
Spark 2013 Presentation of making the enterprise agile
Spark 2013 Presentation of making the enterprise agileSpark 2013 Presentation of making the enterprise agile
Spark 2013 Presentation of making the enterprise agilegbgruver
 
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...Moataz Nabil
 
Testing with Microsoft Technologies - Kick Off Session
Testing with Microsoft Technologies - Kick Off SessionTesting with Microsoft Technologies - Kick Off Session
Testing with Microsoft Technologies - Kick Off SessionMoataz Nabil
 
Testing in DevOps world
Testing in DevOps worldTesting in DevOps world
Testing in DevOps worldMoataz Nabil
 
DevOps and Continuous Delivery with Visual Studio 2015 and VSTS
DevOps and Continuous Delivery with Visual Studio 2015 and VSTSDevOps and Continuous Delivery with Visual Studio 2015 and VSTS
DevOps and Continuous Delivery with Visual Studio 2015 and VSTSSolidify
 
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demo
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demoAgile Software Factory - Cloud Expo / DevOps Summit 2014 demo
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demoGrid Dynamics
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for youAmbientia
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD OverviewAn Nguyen
 
DevOps - Its just Agile done right
DevOps - Its just Agile done rightDevOps - Its just Agile done right
DevOps - Its just Agile done rightTomas Riha
 
DevOps - From Agile Dev to Agile Ops for Continuous Delivery
DevOps - From Agile Dev to Agile Ops for Continuous DeliveryDevOps - From Agile Dev to Agile Ops for Continuous Delivery
DevOps - From Agile Dev to Agile Ops for Continuous DeliveryKalyan Kumar
 

La actualidad más candente (20)

#ATATalk - Episode 1 : Session on Selenium Exceptions by Pallavi Sharma
#ATATalk - Episode 1 : Session on Selenium Exceptions by Pallavi Sharma#ATATalk - Episode 1 : Session on Selenium Exceptions by Pallavi Sharma
#ATATalk - Episode 1 : Session on Selenium Exceptions by Pallavi Sharma
 
Dev ops
Dev opsDev ops
Dev ops
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deployment
 
Qa in CI/CD
Qa in CI/CDQa in CI/CD
Qa in CI/CD
 
The Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryThe Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous Delivery
 
Understanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous DeliveryUnderstanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous Delivery
 
Cloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team ServicesCloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team Services
 
Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015
 
ISTQB Agile Tester - Agile Test Tools
ISTQB Agile Tester - Agile Test ToolsISTQB Agile Tester - Agile Test Tools
ISTQB Agile Tester - Agile Test Tools
 
Spark 2013 Presentation of making the enterprise agile
Spark 2013 Presentation of making the enterprise agileSpark 2013 Presentation of making the enterprise agile
Spark 2013 Presentation of making the enterprise agile
 
Service Virtualization - Kalpna
Service Virtualization - KalpnaService Virtualization - Kalpna
Service Virtualization - Kalpna
 
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
 
Testing with Microsoft Technologies - Kick Off Session
Testing with Microsoft Technologies - Kick Off SessionTesting with Microsoft Technologies - Kick Off Session
Testing with Microsoft Technologies - Kick Off Session
 
Testing in DevOps world
Testing in DevOps worldTesting in DevOps world
Testing in DevOps world
 
DevOps and Continuous Delivery with Visual Studio 2015 and VSTS
DevOps and Continuous Delivery with Visual Studio 2015 and VSTSDevOps and Continuous Delivery with Visual Studio 2015 and VSTS
DevOps and Continuous Delivery with Visual Studio 2015 and VSTS
 
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demo
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demoAgile Software Factory - Cloud Expo / DevOps Summit 2014 demo
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demo
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 
DevOps - Its just Agile done right
DevOps - Its just Agile done rightDevOps - Its just Agile done right
DevOps - Its just Agile done right
 
DevOps - From Agile Dev to Agile Ops for Continuous Delivery
DevOps - From Agile Dev to Agile Ops for Continuous DeliveryDevOps - From Agile Dev to Agile Ops for Continuous Delivery
DevOps - From Agile Dev to Agile Ops for Continuous Delivery
 

Destacado (20)

8.1 intro to functions
8.1 intro to functions8.1 intro to functions
8.1 intro to functions
 
ITEvent: Continuous Integration (ukr)
ITEvent: Continuous Integration (ukr)ITEvent: Continuous Integration (ukr)
ITEvent: Continuous Integration (ukr)
 
ITIL (ukr)
ITIL (ukr)ITIL (ukr)
ITIL (ukr)
 
Php web app security (eng)
Php web app security (eng)Php web app security (eng)
Php web app security (eng)
 
Jenkins CI (ukr)
Jenkins CI (ukr)Jenkins CI (ukr)
Jenkins CI (ukr)
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)
 
Php unit (eng)
Php unit (eng)Php unit (eng)
Php unit (eng)
 
Debug (ukr)
Debug (ukr)Debug (ukr)
Debug (ukr)
 
Ubuntu server wireless access point (eng)
Ubuntu server wireless access point (eng)Ubuntu server wireless access point (eng)
Ubuntu server wireless access point (eng)
 
Web application security (eng)
Web application security (eng)Web application security (eng)
Web application security (eng)
 
Xdebug (ukr)
Xdebug (ukr)Xdebug (ukr)
Xdebug (ukr)
 
ITEvent: Kanban Intro (ukr)
ITEvent: Kanban Intro (ukr)ITEvent: Kanban Intro (ukr)
ITEvent: Kanban Intro (ukr)
 
Db design (ukr)
Db design (ukr)Db design (ukr)
Db design (ukr)
 
Linux introduction (eng)
Linux introduction (eng)Linux introduction (eng)
Linux introduction (eng)
 
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
 
Agile Feedback Loops (ukr)
Agile Feedback Loops (ukr)Agile Feedback Loops (ukr)
Agile Feedback Loops (ukr)
 
Ldap introduction (eng)
Ldap introduction (eng)Ldap introduction (eng)
Ldap introduction (eng)
 
Using CI for continuous delivery Part 2
Using CI for continuous delivery Part 2Using CI for continuous delivery Part 2
Using CI for continuous delivery Part 2
 
The Power of the Junior
The Power of the JuniorThe Power of the Junior
The Power of the Junior
 
Self-testing Code
Self-testing CodeSelf-testing Code
Self-testing Code
 

Similar a Continuous integration (eng)

Continuous Integration and Delivery
Continuous Integration and DeliveryContinuous Integration and Delivery
Continuous Integration and DeliveryBrandon Cornett
 
High Performance Software Engineering Teams
High Performance Software Engineering TeamsHigh Performance Software Engineering Teams
High Performance Software Engineering TeamsLars Thorup
 
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Binary Studio
 
Continuous integration CloudParty 21 may 2014 - Milan
Continuous integration CloudParty 21 may 2014 - MilanContinuous integration CloudParty 21 may 2014 - Milan
Continuous integration CloudParty 21 may 2014 - MilanSimone Pasquini
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CDHoang Le
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationBasma Alkerm
 
Adrian marinica continuous integration in the visual studio world
Adrian marinica   continuous integration in the visual studio worldAdrian marinica   continuous integration in the visual studio world
Adrian marinica continuous integration in the visual studio worldCodecamp Romania
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous IntegrationHùng Nguyễn Huy
 
Software engineering
Software engineeringSoftware engineering
Software engineeringbartlowe
 
Notes On Agile Development
Notes On Agile DevelopmentNotes On Agile Development
Notes On Agile DevelopmentMatt Griffin
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the ContinuistPaul Blundell
 
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile ME
 
Continuous Integration with Jenkins and Java EE
Continuous Integration with Jenkins and Java EEContinuous Integration with Jenkins and Java EE
Continuous Integration with Jenkins and Java EEFrancesco Marchitelli
 
Using Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health NewUsing Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health Newbartlowe
 
Continuous integration & Continuous Delivery @DeVz
Continuous integration & Continuous Delivery @DeVzContinuous integration & Continuous Delivery @DeVz
Continuous integration & Continuous Delivery @DeVzDenis Ristic
 
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...dcieslak
 
Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Kris Buytaert
 
Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019Moss Drake
 

Similar a Continuous integration (eng) (20)

Continuous Integration and Delivery
Continuous Integration and DeliveryContinuous Integration and Delivery
Continuous Integration and Delivery
 
High Performance Software Engineering Teams
High Performance Software Engineering TeamsHigh Performance Software Engineering Teams
High Performance Software Engineering Teams
 
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
 
Continuous integration CloudParty 21 may 2014 - Milan
Continuous integration CloudParty 21 may 2014 - MilanContinuous integration CloudParty 21 may 2014 - Milan
Continuous integration CloudParty 21 may 2014 - Milan
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Adrian marinica continuous integration in the visual studio world
Adrian marinica   continuous integration in the visual studio worldAdrian marinica   continuous integration in the visual studio world
Adrian marinica continuous integration in the visual studio world
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous Integration
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Notes On Agile Development
Notes On Agile DevelopmentNotes On Agile Development
Notes On Agile Development
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the Continuist
 
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
 
Continuous Integration with Jenkins and Java EE
Continuous Integration with Jenkins and Java EEContinuous Integration with Jenkins and Java EE
Continuous Integration with Jenkins and Java EE
 
Using Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health NewUsing Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health New
 
Continuous integration & Continuous Delivery @DeVz
Continuous integration & Continuous Delivery @DeVzContinuous integration & Continuous Delivery @DeVz
Continuous integration & Continuous Delivery @DeVz
 
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
 
Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.
 
Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019
 
Devops for drupal
Devops for  drupalDevops for  drupal
Devops for drupal
 
What is dev ops?
What is dev ops?What is dev ops?
What is dev ops?
 

Último

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
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 organizationRadu Cotescu
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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 interpreternaman860154
 
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 MenDelhi Call girls
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
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 2024Rafal Los
 

Último (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
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
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
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
 

Continuous integration (eng)

  • 1. Continuous Integration ● What is continuous integration? ● Building a feature with continuous integration ● Practices of continuous integration ● Benefits of continuous integration ● Introducing continuous integration ● Final thoughts ● Continuous integration tools ● Links
  • 2. What is continuous integration? 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. This presentation is a quick overview of Continuous Integration summarizing the technique and its current usage.
  • 3. What is continuous integration? ● "it can't work (here)" ● "doing it won't make much difference" ● "yes we do that - how could you live without it?" The term 'Continuous Integration' originated with the Extreme Programming development process, as one of its original twelve practices. Although Continuous Integration is a practice that requires no particular tooling to deploy, it is useful to use a Continuous Integration server. ● Integration is a "pay me now or pay me more later" kind of activity.
  • 4. Building a feature with continuous integration ● Let's do something to a piece ● Update the working copy with of software,we assume it's the changes from the others small and can be done in a & rebuild, check for clashes. few hours. ● It is yours responsibility to ● Take a copy of the current create a successful build. integrated source onto your ● Commit your changes. local development machine. ● Build on the integration ● Alter the production code, machine. and add or change the automated tests. ● Must fix the build quickly. ● Build and run the automated ● Shared stable base, fewer tests. bugs, bugs show up quickly.
  • 5. Practices of continuous integration ● Maintain a Single ● Keep the Build Fast Source Repository ● Test in a Clone of the ● Automate the Build Production ● Make Your Build Self- Environment Testing ● Make it Easy for ● Everyone Commits To Anyone to Get the the Mainline Every Day Latest Executable ● Every Commit Should ● Everyone can see Build the Mainline on what's happening an Integration Machine ● Automate Deployment
  • 6. Maintain a Single Source Repository ● Software projects involve lots of files that need to be orchestrated together to build a product. ● Tools to manage all this - called Source Code Management tools, configuration management, version control systems, repositories, etc. ● Everything you need to do a build should be in there including: test scripts, properties files, database schema, install scripts, 3rd party libs. ● Keep your use of branches to a minimum. ● In general you should store in source control everything you need to build anything, but nothing that you actually build.
  • 7. Automate the Build ● Automated environments for builds are a common feature of systems (Make, Ant, Nant, MSBuild, etc.) ● A common mistake is not to include everything in the automated build (virgin machine – up!) ● Incremental builds, component builds, targets ● It's essential to have a master build that is usable on a server and runnable from other scripts (Do not depend much on IDE)
  • 8. Make Your Build Self-Testing ● A program may run, but that doesn't mean it does the right thing. ● A good way to catch bugs more quickly and efficiently is to include automated tests in the build process. ● CI has a weaker requirement of self-testing code then TDD. ● For self-testing code you need a suite of automated tests that can check a large part of the code base for bugs. ● The rise of TDD has popularized the XUnit family. ● Tools that focus on more end-to-end testing, like FIT, Selenium, Sahi, Watir, FITnesse, etc. ● You can't count on tests to find everything.
  • 9. Everyone Commits To the Mainline Every Day ● Integration is primarily about communication. ● The one prerequisite for a developer committing to the mainline is that they can correctly build their code. ● The key to fixing problems quickly is finding them quickly. ● The fact that you build when you update your working copy means that you detect compilation conflicts as well as textual conflicts. ● Since there's only a few hours of changes between commits, there's only so many places where the problem could be hiding. You can even use diff-debugging. ● Frequent commits encourage developers to break down their work into small chunks of a few hours each. This helps track progress and provides a sense of progress.
  • 10. Every Commit Should Build the Mainline on an Integration Machine ● Using daily commits, a team gets frequent tested builds. ● People not doing an update and build before they commit, environmental differences between developers' machines and other issues – prevent mainline's healthy state. ● Integration build succeeds should the commit be considered to be done – developers responsibility. ● Use a manual build or a CI server. ● Do not just make builds on a timed schedule. ● If the mainline build fails, it needs to be fixed right away. You're always developing on a known stable base. ● It's not a bad thing for the mainline build to break. Fix fast! ● Patience and steady application – develop a regular habit of working mainline builds.
  • 11. Keep the Build Fast ● The whole point of CI is to provide rapid feedback. ● For most projects the XP guideline of a ten minute build is perfectly within reason. ● Start working on setting up a staged build. ● Build pipeline – multiple sequential builds. ● Fast commit build is the build that's needed when someone commits to the mainline. ● Secondary build which runs when it can – for example tests that involve external services such as a database, etc.
  • 12. Test in a Clone of the Production Environment ● The point of testing is to flush out, under controlled conditions, any problem that the system will have in production. ● You want to set up your test environment to be as exact a mimic of your production environment as possible. ● It's common to have a very artificial environment for the commit tests for speed, and use a production clone for secondary testing. ● Use virtualization.
  • 13. Make it Easy for Anyone to Get the Latest Executable ● People find it much easier to see something that's not quite right and say how it needs to be changed. ● Anyone involved with a software project should be able to get the latest executable and be able to run it: for demonstrations, exploratory testing, or just to see what changed this week. ● Well known place where people can find the latest executable. For the very latest you should put the latest executable to pass the commit tests (pretty stable).
  • 14. Everyone can see what's happening ● CI is all about communication, so you want to ensure that everyone can easily see the state of the system and the changes that have been made to it. ● Tray monitors, lights, lava lamps, toy rocket launchers, etc. ● Use a tool with a web site for dashboard, reporting and extended information. ● Wall calendar for a QA team to put red & green stickers indicating healthy & broken builds.
  • 15. Automate Deployment ● To do CI you need multiple environments, one to run commit tests, one or more to run secondary tests. ● Use deployment scripts to move between environments ● If you deploy into production one extra automated capability you should consider is automated rollback. ● Rolling deployments in clustered environments. ● Trial build to a subset of users.
  • 16. Benefits of continuous integration ● ● The greatest and most wide ranging benefit of CI is reduced risk. ● At all times you know where you are, what works, what doesn't, the outstanding bugs you have in your system. ● CI doesn't get rid of bugs, but it does make them dramatically easier to find and remove. ● Bugs are also cumulative. The more bugs you have, the harder it is to remove each one. Broken Windows syndrome. ● If you have CI, it removes one of the biggest barriers to frequent deployment – between customers and development.
  • 17. Introducing continuous integration ● There's no fixed recipe (your setup & team) ● Get the build automated. Build the whole system with a single command. On-demand. ● Introduce some automated testing into you build. Identify major areas. Start doing. ● Try to speed up the commit build. Magic 10m. ● Begin with Continuous Integration from the beginning for a new project. ● Get some help.
  • 18. ●Final thoughts ● Continuous Integration has become a mainstream technique for software development. ● Many teams using CI report that the advantages of CI well outweigh the disadvantages. ● The effect of finding and fixing integration bugs early in the development process saves both time and money over the lifespan of a project.
  • 19. Final thoughts ● when unit tests fail or a bug emerges, developers might ● initial setup time revert the codebase back to a bug-free state, without wasting required time debugging ● well-developed ● developers detect and fix integration problems continuously - test-suite required avoiding last-minute chaos at release dates to achieve automated testing ● early warning of broken/incompatible code advantages ● early warning of conflicting changes ● large-scale ● immediate unit testing of all changes refactoring can be ● constant availability of a "current" build for testing, demo, or troublesome due to continuously release purposes changing code ● immediate feedback to developers on the quality, base functionality, or system-wide impact of code they are writing ● hardware costs ● frequent code check-in pushes developers to create modular, for build less complex code machines can be ● metrics generated from automated testing and CI focus significant developers on developing functional, quality code, and help develop momentum in a team
  • 20. Continuous integration tools Most popular: ● Apache Continuum — continuous integration server supporting Apache Maven and Apache Ant. Supports CVS, Subversion, Ant, Maven, and shell scripts ● Hudson — MIT-licensed, written in Java, runs in servlet container, supports CVS, Subversion, Mercurial , Git, StarTeam, Clearcase, Ant, NAnt, Maven, and shell scripts ● CruiseControl — Java-based framework for a continuous build process ● CruiseControl.NET — .NET-based automated continuous integration server
  • 21. Links ● http://en.wikipedia.org/wiki/Continuous_integration ● http://www.martinfowler.com/articles/continuousIntegration.html ● http://www.extremeprogramming.org/rules/integrateoften.html ● http://cruisecontrol.sourceforge.net/overview.html ● http://wiki.hudson-ci.org/display/HUDSON/Use+Hudson ● http://continuum.apache.org/ ● http://www.wakaleo.com/books/continuous-integration-with-hudson-t ● http://www.developer.com/open/article.php/3803646/The-Best-Contin ● http://jamesshore.com/Blog/Continuous-Integration-is-an-Attitude.htm