CONTINUOUS INTEGRATION~ A GLANCE AT AGILE DEVELOPMENT AND EXTREMEPROGRAMMING~Tran Duc ThangFramgia 22/6/2013
ContentsI. Introduction to Continuous IntegrationII. Practice Continuous IntegrationIII. Introduction to JenkinsIV. Disadvantages
Introduction to CONTINUOUS INTEGRATIONAgile Development• Agile development is a philosophy, not amethod or process.• An Agile method is a process that support theagile philosophy.• One of the Agile methods is ExtremeProgramming. (XP)
Introduction to CONTINUOUS INTEGRATIONExtreme Programming (XP)• XP is the most prominent Agile Development method.• XP, like other Agile Development methods, is a set of practices.• The XP core practices Whole Team Planning Game Small Releases Customer Tests Simple Design Pair Programming Test-Driven Development Design Improvement Continuous Integration Collective Code Ownership Coding Standard Metaphor Sustainable Pace
Introduction to CONTINUOUS INTEGRATIONContinuous Integration – The concept• one of the Agile practices ! CI was first named and proposed as part of XP. Now, manyorganizations have adopted CI without adopting all of XP.• requires developers to integrate code into a shared repository several times a day.• each check-in is verified by an automated build, allowing teams to detect problems early.
Introduction to CONTINUOUS INTEGRATIONContinuous Integration – The goal• “Continuous Integration doesn’t get rid of bugs, but it does make them dramaticallyeasier to find and remove.”• To make your project able to deploy at any time !
Introduction to CONTINUOUS INTEGRATIONContinuous Integration feat Test-Drive Development• CI was originally intended to be used in combination with TDD.• CI without TDD is too risky.• TDD without CI only proves your code work well on your own computer.
Practice Continuous IntegrationOnly one rule : NEVER BREAK THE BUILD !• What works on your computer will work on anybodys computer. The reason like “It has beenworking well on my computer” is just invalid !• The code that has not been proven to build successfully should not appear in the mainline.
Practice Continuous IntegrationYou need a spare development machine to act as a centre integration machine. It is calledCI Server.• https://circleci.com/• https://drone.io/• https://www.codeship.io/• CruiseControl• TeamCity• Hudson• Jenkins• …
Introduction to JenkinsJenkins – An Overview• In 2004, Kohsuke Kawaguchi started the project as a hobby project under the name ofHudson.• In 2011, not long after Sun was purchased by Oracle, Kohsuke Kawaguchi and many othercore developers from Hudson forked to a new project, based on Hudson. It is Jenkins.• By 2010 Jenkins (Hudson) had dominated the Continuous Integration Solution Market, withthe market share of over 70%.• Jenkins is now used widely by many big companies: Mozilla, LinkedIn, Motorola, eBay,Yahoo!, Red Hat, NTT Data, Gree, DeNa …
Introduction to JenkinsWhy Jenkins ?• Cross-platform tool. (written in Java)• Large community.• Numbers of plug-in.• Supports many programming languages (Java, PHP, Ruby, Python …)• IT IS AN OPEN SOURCE PROJECT. IT IS FREE !!!
Introduction to JenkinsWhat can Jenkins do ?• DEMO• http://jenkins.mozilla.org/• http://ci.jenkins-ci.org/
DisadvantagesNothing is perfect. CI still has disadvantages• Take lots of time for the initial setup, as well as the training to get acquainted with CIserver.• Requires many resources for running CI server.• Required high programming skill. CI can not work well without the professionalprogrammers who can design and write well-developed test-suites.