- CI/CD+1 more
- 13. Sep
Jenkins is an open source automation server. With Jenkins, organizations can accelerate the software development process by automating it. Jenkins manages and controls software delivery processes throughout the entire lifecycle, including build, document, test, package, stage, deployment, static code analysis and much more.
You can set up Jenkins to watch for any code changes in places like SVN and GitHub, automatically do a build with tools like Ant and Maven, utilize container technology such as Docker and Kubernetes, initiate tests and then take actions like rolling back or rolling forward in production.
History: It All Started with Jenkins Continuous Integration
The Jenkins project was started in 2004 (originally called Hudson) by Kohsuke Kawaguchi, CTO at CloudBees, while he worked for Sun Microsystems. Kohsuke was a developer at Sun and got tired of incurring the wrath of his team every time his code broke the build. He created Jenkins CI as a way to perform continuous integration – that is, to test his code before he did an actual commit to the repository, to be sure all was well. Once his teammates saw what he was doing, they all wanted to use Jenkins. Kohsuke open sourced it, creating the Jenkins CI project, and soon Jenkins usage had spread around the world.
Jenkins Today: Evolved to Continuous Delivery
Originally developed by Kohsuke for continuous integration (CI), today Jenkins orchestrates the entire software delivery pipeline – called continuous delivery. For some organizations automation extends even further, to continuous deployment. Continuous delivery (CD), coupled with a DevOps culture, dramatically accelerates the delivery of software.
Jenkins is the most widely adopted solution for continuous delivery, thanks to its extensibility and a vibrant, active community. The Jenkins community offers more than 1,400 plugins that enable Jenkins to integrate with virtually any tool, including all of the best-of-breed solutions used throughout the continuous delivery process. Jenkins continues to grow as the dominate solution for software process automation, continuous integration and continuous delivery and, as of February 2018, there are more than 165,000 active installations and an estimated 1.65 million users around the world.
The Jenkins project is an independent open source community under the umbrella of a non-profit organization Software in the Public Interest, which owns the key project assets including the Jenkins trademark. The project has its own decision-making process and a governance board.
Jenkins is a software that allows continuous integration. Jenkins will be installed on a server where the central build will take place. The following flowchart demonstrates a very simple workflow of how Jenkins works.
Along with Jenkins, sometimes, one might also see the association of Hudson. Hudson is a very popular open-source Java-based continuous integration tool developed by Sun Microsystems which was later acquired by Oracle. After the acquisition of Sun by Oracle, a fork was created from the Hudson source code, which brought about the introduction of Jenkins.
What is Continuous Integration?
Continuous Integration is a development practice that requires developers to integrate code into a shared repository at regular intervals. This concept was meant to remove the problem of finding later occurrence of issues in the build lifecycle. Continuous integration requires the developers to have frequent builds. The common practice is that whenever a code commit occurs, a build should be triggered.
- JDK : JDK 1.5 or above
- Memory: 2 GB RAM (recommended)
- Disk Space: No minimum requirement. Note that since all builds will be stored on the Jenkins machines, it has to be ensured that sufficient disk space is available for build storage.
- Operating System Version: Jenkins can be installed on Windows, Ubuntu/Debian, Red Hat/Fedora/CentOS, Mac OS X, openSUSE, FReeBSD, OpenBSD, Gentoo.
Java Container The WAR file can be run in any container that supports Servlet 2.4/JSP 2.0 or later.(An example is Tomcat 5).
- Continuous Integration and Continuous Delivery: As an extensible automation server, Jenkins can be used as a simple CI server or turned into the continuous delivery hub for any project.
- Easy installation: Jenkins is a self-contained Java-based program, ready to run out-of-the-box, with packages for Windows, Mac OS X and other Unix-like operating systems.
- Easy configuration: Jenkins can be easily set up and configured via its web interface, which includes on-the-fly error checks and built-in help.
- Plugins: With hundreds of plugins in the Update Center, Jenkins integrates with practically every tool in the continuous integration and continuous delivery toolchain.
- Extensible: Jenkins can be extended via its plugin architecture, providing nearly infinite possibilities for what Jenkins can do.
- Distributed: Jenkins can easily distribute work across multiple machines, helping drive builds, tests and deployments across multiple platforms faster.