Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Continuous integration using jenkins


Published on

Details on CI process and Jenkins workflow

Published in: Technology
  • Login to see the comments

Continuous integration using jenkins

  2. 2. AGENDA  Continuous Integration  What is CI?  Why we need CI?  Best Practices  Workflow  Build Ingredients  CI Server – Jenkins  What is Jenkins?  How Jenkins work?  Plugins  What Jenkins can do?  Conclusion  References
  3. 3. CI - DEFINED  Continuous Integration is the practice, in software engineering, of merging all developer working copies with a shared mainline several times a day.  CI 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. – Martin Flower
  4. 4. CI – WHAT DOES IT REALLY MEAN?  At a regular frequency (ideally at every commit), the system is :  Integrated  All changes up until that point are combined into the project  Built  The code is compiled into an executable or package  Tested  Automated Test suites are run  Archived  Versioned and stored so it can be distributed as is, if desired  Deployed  Loaded onto a system where the developers can interact with it.
  5. 5. WHY WE NEED CI?  Fixing bugs late is costly  Lack of team cohesion  “Your changes to bar are incompatible with mine. How do we merge now?”  “When did we decided to upgrade to version 2.0 of the super library?”  “I thought you fixed that 2 months ago!”  Poor quality code base  “We have 3 classes doing the same thing!!”  “Everybody knows double checked locking is bad idea!”  “Why can’t I just include Foo and not require all of the other 13 libs? ”
  6. 6. WHY WE NEED CI? CONT…..  Lack of project visibility  “What do you mean the tests are failing? ”  “What’s in the version 1.2.3 of the build”  What’s our code coverage now?  Lack of deployable software  “It works on my machine!”  “I need a new build to test with”  “The boss|customer is coming, we need to demo progress asap.”
  7. 7. BEST PRACTICES  Maintain Code Repository  Automate the build  Everyone commits the baseline everyday  Every commit (to baseline) should be built  Keep the build fast  Test in the clone of production environment  Make it easy to get the test deliverables  Everyone can see the results of the latest build  Automate deployment
  10. 10. BUILD INGREDIENTS  Compilation  Ensures code actually compiles  On every target platform  Test execution  Ensures product functions as expected  Through repeatable testing  Database integration  Ensures DB and code is in sync  Automates (re)creation of test data
  11. 11. BUILD INGREDIENTS SOME MORE  Code inspection  Ensures a healthy code base  Identifies problems early  Enforces best practices  Automated deployment  Products can be released anytime  Continually demo-able state  Eliminates “Works on my machine”  Documentation generation  Ensures document is current  Removes burden from developers  Produces build reports and metrics
  12. 12. CI SERVER - JENKINS  It is an open source CI tool written in java.  It is a server based system running in a servlet container.  It supports SCM tools including Accurev, CVS, Subversion, Git, Mercurial, Perforce, Clearcase.  It can execute Apache Ant and Apache maven based projects.  Builds can be started by various means, including being triggered by commit in version control system.
  13. 13. HOW JENKINS WORK - SETUP  When setting up a project in Jenkins, out of the box you have the general options  Associating with a version control server  Triggering builds  Execution of shell scripts, bash scripts, Ant targets and maven targets.  Artifact archival  Publish jUnit test results and javadocs  Email Notifications
  14. 14. PLUGINS  Jenkins plugin system can enable a wide range of features including(but not certainly not limited to)  SCM  Testing  Notifications  Reporting  Artifact saving  Triggers  External integration  And most importantly – The CI game  A points based game where developers compete against each other to develop the most stable, well tested code
  15. 15. WHAT JENKINS CAN DO?  Generate Test Reports  Integrate with many different version control systems  Push to various artifact repositories  Deploys directly to production or test environments  Notify stakeholders of build status
  16. 16. CONCLUSION  Continuous Integration is a necessity on complex projects due to the benefits it provides regarding early detection of problems.  A good continuous build system should be flexible enough to fit into pre-existing development environments and provide all the features a team expects from such a system.  Jenkins, a continuous build system, can be an integral part of any continuous integration system due to its core feature set and extensibility through a plugin system.
  17. 17. REFERENCES  Continuous integration   how-0  Jenkins 
  18. 18. ANY QUESTIONS?