Contineous integration

1,015 views

Published on

  • Be the first to comment

Contineous integration

  1. 1. Continuous Integration -Radhakrishna M
  2. 2. Contents  Definition  Workflow  Popular tools for CI  Requirements  Principles  Functionalities  Jenkins configuration  Advantages  Disadvantages
  3. 3. Continuous Integration “Continuous Integration is a software development practice where members of a team integrate their work frequently. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible”- Martin Flower.
  4. 4. CI-Workflow
  5. 5. Workflow contains following steps: • Integrated All changes up until some point are combined into the project. • Built The code is compiled into a executable or package • Tested Automated test suites are run • Archived Versioned and stored • Deployed Loaded onto the system[server] where developers can interact with it.
  6. 6. Popular tools for CI  Hudson/Jenkins  TravisCI  TeamCity  BuildBot  Bamboo
  7. 7. History of Jenkins • Jenkins is an open source continuous integration tool written in java. • The primary developer of Hudson/Jenkins is Kohsuke Kawaguchi. • Jenkins is forked from Hudson after a dispute with Oracle. • Jenkins organization on GitHub had 567 project members and around 1,100 public repositories. • Kohsuke Kawaguchi received a Google-O'Reilly Open Source Award for his work on Jenkins project
  8. 8. Requirements • Code repositories - SVN, Mercurial, Git • Continuous Build systems - Jenkins, Bamboo, Cruise control • Test frameworks - Junit, Cucumber, CppUnit • Artifact Repositories - Nexus, Artifactory, Archiva
  9. 9. Principles The following are the principles which needs to be follow • Maintain a code repository • Automate the build • Make the build self-testing • Everyone commits to the baseline every day • Every commit should be built • Keep the build fast • Test in a clone of the production environment • Automatic deployment
  10. 10. Major functionalities • Integrate with many different version control systems • Generate test reports • Push to various artifact repositories • Deploys directly to production or test environments. • Publish Junit test results and javadocs • Email notifications
  11. 11. Jenkins configuration We can install Jenkins in following ways:  Installing Jenkins on Ubuntu Jenkins provides Debian/Ubuntu packages which install Jenkins and register Jenkins as start service[/etc/init.d/jenkins]  Using the .war file of Jenkins start Jenkins directly via the command line with java -jar jenkins*.war. Then jenkins running under the following URL: http://localhost:8080/jenkins
  12. 12. Advantages • We can easily configure from the browser • When unit tests fail or a bug emerges, developers might revert the codebase to a bug-free state, without wasting time. • Developers detect and fix integration problems continuously • Early warning of broken/incompatible code • Immediate unit testing of all changes
  13. 13. • Constant availability of a "current" build for testing, demo or release purposes. • Immediate feedback to developers on the quality, functionality, or system-wide impact of code they are writing.
  14. 14. Disadvantages • Initial setup requires lots of time. • Well-developed test-suite required for automated testing.
  15. 15. Useful links • http://jenkins-ci.org/ [To download .war] • http://www.blackbuild.com/15-must-have-plugins- for-jenkins/ [Plugins] • http://thefutureofdeployment.com/set-database- continuous-integration-automated-deployment- jenkins-lunch/ [To run database scripts]

×