What is Jenkins?
Jenkins is a wildly popular and recognized open source automation server that allows to easily set up a CI/CD environment and to accelerate the software development process by automating it. True, you’ll still have to create scripts for individual steps, but you can automate the entire pipeline. It is written in Java and offers above 1700 plugins/integrations that assist with creating a proper CI/CD environment. Although Jenkins is quite old, it is still the most popular CI/CD solution, especially due to its community.
History of Jenkins
Created in 2004, by the name Hudson, Jenkins was solely a CI tool, developed by Kohsuke Kawaguchi while working for Sun Microsystems. Kawaguchi searched for a resolution for broken builds due to errors. He looked for a solution that will be able to test the code before it’s committed to the repository, so he’ll know his code checks out. After his solution gained some popularity among his teammates, he opened source it as Jenkins and the rest, as they say, is history. Nowadays, Jenkins is also a software delivery tool (CD).
How does it work?
With the help of Jenkins, developers and release managers build and test software continuously, integrate changes and run a smooth and automated CI/CD process. Its integration with deployment and testing tools allows for a continuous delivery process. Jenkins basically offers automation to the entire software development and delivery process.
Try it nowGet Free License
Jenkins integrations / plugins
As mentioned above, there are more than 1700 Jenkins plugins/integrations that assist in delivering a better, more comprehensive product and provide different functionalities in the deployment, development and testing.
Most of the tasks in Jenkins use Jenkins integrations. Among the integrations, you can find Jira, GitHub Pull Request Builder, Kubernetes, Maven, Microsoft Excel, Google Drive, Gmail and many more. In order to enjoy Jenkins integrations, all you have to do is click vinstall from the integrations list. There are so many combinations of Jenkins and other languages and source code repositories it is almost impossible to think of a language or source code it doesn’t support.
Jenkins libraries
Jenkins libraries or shared libraries (JSL) allow you to avoid repeating the same code (that annoying copy paste) across pipelines. For the case when there are common patterns in your code (such as code for code review), or different teams use the same code, shared libraries allow you to only include the code once by storing that reusable code. In addition, if you want to make a change in the code, you don’t have to change it in all places repeatedly.
A shared library is compiled out of groovy scripts. To create a shared library, you’ll need to first create an empty project, add it to your Git repository and then create a vars folder inside of it. Navigate to that vars folder and create any file you want with the extension.
Jenkins Advantages
- It has a huge and vibrant community
- It’s free
- It’s easy to install and set up
- It offers more than 1000 plugins
- Works on all major platforms
Jenkins vs Bamboo
The first obvious difference between Jenkins and Bamboo is the fact that Jenkins is an open source tool and Bamboo is a commercial one. Therefore Jenkins is free while Bamboo is a paid solution. Jenkins has far more plugins than Bamboo that includes most of the functionality inside the product. Being a commercial solution, Bamboo offers great support while Jenkins support is generated by the community (and might be less optimal). For more info check out our in-depth comparison of Jenkins vs Bamboo. In addition, check out our comprehensive review of Jenkins vs TeamCity and Jenkins vs Azure DevOps
Jenkins and Incredibuild
Incredibuild Jenkins out-of-the-box integration allows users to utilize their Jenkins nodes to distribute compute processes across other machines in their network or public cloud. Incredibuild transforms each Jenkins node into a super computer that uses hundreds of cores, thus accelerates time-consuming jobs such as compilations, unit tests, QA scripts, code analysis, packaging, assets creation and more. When you integrate Jenkins and Incredibuild, you dramatically reduce Jenkins build cycles by up to 30x faster and accelerate individual developers’ build cycles from several minutes to several seconds.
Integration between Incredibuild and Jenkins is simple:
For example, for a Visual Studio build (MSBuild) compilation, enter the following command:
buildconsole “MySolution.sln” /cfg=”Debug|Win32″ /rebuild /title=”My Solution In Jenkins”
To accelerate make and build tools, enter the following command:
buildconsole /command=”make” /title=”make Sample”