What is Jenkins
The major aspect of Jenkins is to support Continuous Integration(CI)/ Continuous Deployment(CD).
So let's try try to understand what is CI/CD!
Let's talk about CI first which is Continuous Integration which means to keep everyone who is working in a team for a specific app or project on the same page. So having a collaboration between all the people involved in that process on the same page. The way that is happening is through is automated testing, validation, and feedback. So it creates whole tests and creates that package of the app.
Whereas CD which Continuous deployment pick up the package which CI tool created and then deploy out there in the environment where it needed to be. It can deploy in an automated fashion associated with that project into the testing environment or acceptance environment or production environment. CD tools is responsible for picking up the package deploying it out and handling things like connection draining, load balancing, associated apps installed, validation and all those kinds of stuff!
So now moving to Jenkins, it's an java application and as its and java application it's platform independent and it does not require any specific platform. We can use it on Linux the same way we can use it on Windows. So basically it's OS independent.
So why to use Jenkins?
So let's say when any developer commits a code in any shared repository Jenkins will take that code and trigger a latest built, built notification will be sent out if there is any problem or any error so the developer will get notified as soon as built is triggered and gets complete. So we can check immediately if there is an issue due to committing then we can reverse that and won't waste much of a time in finding out the bug. Let's say if built is successful we can also integrate out a unit test or user acceptance test or performance test alone with the built as a ;post built action; in Jenkins and it gets automated! So once built is deployed Jenkins will trigger some test cases or some testing scenarios which are automated and it will send out a report to lead/managers directly. So if there is an issue detected due to changes in the codes which broke in the application then we will come to know about it instantly and can troubleshoot it!
So this how the whole process become powerful and efficient with the help of Jenkins.
Advantages of Jenkins
- Can create complex delivery pipelines.
- More than 1300 plugins to support a variety of DevOps tools running from coding to commit to deployment!
- Monitors code quality and code coverage.
- Keep tabs on the health of your code base.
- Low Maintainance costs and keeps technical debts down.
- More visibility thought the team.
Jenkins is mainly integrated with two components which is version control systems like SVN, Git and build tools like Apache Maven.
So Continuous Integration can make your process faster and better in your organization, in which Jenkins is one of the most popular tools In DevOps practice!