In today’s IT world, there is no way to separate Development and Operation teams. For this reason, DevOps engineers reshape how IT teams operate and try to improve collaboration between IT stakeholders.
Utmost achievement of DevOps would be the improvement on deployment frequency, defect detection, and failed software delivery. Essentially, DevOps is based on the idea of building and, testing the release of software run in a harmony automatically. But in this blog post, we’ll focus on continuous integration tool: Jenkins.
Tools for DevOps
Software development process can’t work efficiently without having the right tools. You can divide those tools into different categories according to their purposes in SDLC like source code management, deployment, testing etc..
- Code (Version Control System): Git
- Build (Continuous Integration): Jenkins, Travis, TeamCity
- Test (Continuous testing, inspection): JMeter, Sonarqube, Selenium
- Artifact Packaging: Artifactory, Nexus Sonatype
- Configure & Release: Docker Compose
- Infrastructure Orchestration: Docker Swarm, Kubernetes, Mesos, AWS, Gcloud, Nexus
- Monitoring: ELK, Grafana
So, what is Jenkins?
Jenkins is an open source automation server to automate the non-human part of the software development process. By having those automation capabilities, it helps companies to facilitate technical aspects of continuous delivery.
Jenkins is the widely adopted tool for managing continuous integration builds and delivery pipelines. It not only helps developers in building and testing software continuously but also quality assurance team to execute and monitor their automated tests. Jenkins doesn’t care what development language or development style you follow. With over 400 plugins Jenkins supports mostly used libraries or tools and it applies common best practices to manage your continuous integration process. Basically, Jenkins integrates development life-cycle processes from unit testing to build, from builds to test and test from deployment.
You can configure Jenkins to send you a notification via email. You can integrate your third-party tools like Slack so you always be up-to-date with the status of your projects. The first rule of agility is achieving continuous feedback. You will always know why and who broke the build.
Continuous Integration with Jenkins
Picture your company’s daily development life. Developers frequently check in new source code and build the application then deploy on a test server. Jenkins checks if there is a change on source code with a defined interval. If there’s any, it builds the code and deploys to test environment. During that operation, it also runs the unit tests if there are any and reports them to the whole team. In case a build is broken, it knows who broke the code with which check-in because it’s integrated to Git or any other SCM tools.
When the code is deployed to a test environment, API or UI level tests start to run. So quality assurance team is now able to monitor the quality of the product.
This cycle goes on till the packed source code is deployed to production. Maybe at the end of your automated deployment journey, you want to trigger your JMeter tests. So you make sure new changes didn’t break the application performance.
What are the advantages of Jenkins?
- It is open source so it’s free
- It is user-friendly, easy to install and you can easily install additional components. Ready to use in 5 minutes
- Easy to implement new Jenkins plugins for your purposes but most plugins on the market will help you achieve your problems. It has various plugins which make Jenkins flexible.
- No platform dependency. Jenkins can run on any platforms, whether it’s OS X, Windows or Linux.
- There’s so many documentation online for your questions.