Continuous
Integration
-Radhakrishna M
Contents
 Definition
 Workflow
 Popular tools for CI
 Requirements
 Principles
 Functionalities
 Jenkins configuration
 Advantages
 Disadvantages
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.
CI-Workflow
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.
Popular tools for CI
 Hudson/Jenkins
 TravisCI
 TeamCity
 BuildBot
 Bamboo
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
Requirements
• Code repositories
- SVN, Mercurial, Git
• Continuous Build systems
- Jenkins, Bamboo, Cruise control
• Test frameworks
- Junit, Cucumber, CppUnit
• Artifact Repositories
- Nexus, Artifactory, Archiva
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
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
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
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
• 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.
Disadvantages
• Initial setup requires lots of time.
• Well-developed test-suite required for automated
testing.
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]

Contineous integration

  • 1.
  • 2.
    Contents  Definition  Workflow Popular tools for CI  Requirements  Principles  Functionalities  Jenkins configuration  Advantages  Disadvantages
  • 3.
    Continuous Integration “Continuous Integrationis 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.
  • 5.
    Workflow contains followingsteps: • 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.
    Popular tools forCI  Hudson/Jenkins  TravisCI  TeamCity  BuildBot  Bamboo
  • 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.
    Requirements • Code repositories -SVN, Mercurial, Git • Continuous Build systems - Jenkins, Bamboo, Cruise control • Test frameworks - Junit, Cucumber, CppUnit • Artifact Repositories - Nexus, Artifactory, Archiva
  • 9.
    Principles The following arethe 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.
    Major functionalities • Integratewith 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.
    Jenkins configuration We caninstall 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.
    Advantages • We caneasily 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.
    • Constant availabilityof 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.
    Disadvantages • Initial setuprequires lots of time. • Well-developed test-suite required for automated testing.
  • 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]