Popular tools for CI
“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.
Workflow contains following steps:
All changes up until some point are combined into the project.
The code is compiled into a executable or package
Automated test suites are run
Versioned and stored
Loaded onto the system[server] where developers can interact with it.
Popular tools for CI
History of Jenkins
• Jenkins is an open source continuous integration tool
written in java.
• The primary developer of Hudson/Jenkins is Kohsuke
• Jenkins is forked from Hudson after a dispute with
• 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
The following are the principles which needs to be
• 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
• 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
We can install Jenkins in following ways:
Installing Jenkins on Ubuntu
Jenkins provides Debian/Ubuntu packages which
install Jenkins and register Jenkins as start
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:
• 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
• 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
• Initial setup requires lots of time.
• Well-developed test-suite required for automated