🤩 Welcome You All To The World of DevOps CI/CD Automation 🤩
🤔 What Is DevOps ?
🔶 DevOps (a portmanteau of “development” and “operations”) is the combination of practices and tools designed to increase an organization’s ability to deliver applications and services faster than traditional software development processes. This speed enables organizations to better serve their customers and compete more effectively in the market.
🔶 In simple terms, DevOps is about removing the barriers between traditionally siloed teams, development and operations. Under a DevOps model, development and operations teams work together across the entire software application life cycle, from development and test through deployment to operations.
💥 Benefits of DevOps 💥
Speed. DevOps practices let you move at the velocity you need to innovate faster, adapt to changing markets better, and become more efficient at driving business results.
Rapid delivery. When you increase the pace of releases, you can improve your product faster and build competitive advantage.
Reliability. DevOps practices like CI/CD can ensure the quality of application updates and infrastructure changes so you can reliably deliver at a more rapid pace while maintaining an optimum experience for end users.
Improved collaboration. Under a DevOps model, developers and operations teams collaborate closely, share responsibilities, and combine their workflows. This reduces inefficiencies and saves time.
Security. You can adopt a DevOps model without sacrificing security by using automated, integrated security testing tools.
🤔 What Is CI/CD Pipeline ?
🔶 A CI/CD pipeline automates the process of software delivery. It builds code, runs tests, and helps you to safely deploy a new version of the software. CI/CD pipeline reduces manual errors, provides feedback to developers, and allows fast product iterations.
🔶 CI/CD pipeline introduces automation and continuous monitoring throughout the lifecycle of a software product. It involves from the integration and testing phase to delivery and deployment. These connected practices are referred as CI/CD pipeline.
Continuous integration is a software development method where members of the team can integrate their work at least once a day. In this method, every integration is checked by an automated build to search the error.
Continuous delivery is a software engineering method in which a team develops software products in a short cycle. It ensures that software can be easily released at any time.
Continuous deployment is a software engineering process in which product functionalities are delivered using automatic deployment. It helps testers to validate whether the codebase changes are correct, and it is stable or not.
🤩 In Order to Automate CI / CD Pipelining the Role of Automation Server Comes in Play i.e Jenkins ⚡
🤔 What Is Jenkins ?
💥 Build + Test + Deploy 💥
🔶 Jenkins is an open-source Continuous Integration server written in Java for orchestrating a chain of actions to achieve the Continuous Integration process in an automated fashion. Jenkins supports the complete development life cycle of software from building, testing, documenting the software, deploying, and other stages of the software development life cycle.
🔷 Jenkins is a widely used application around the world that has around 300k installations and growing day by day. By using Jenkins, software companies can accelerate their software development process, as Jenkins can automate build and test at a rapid rate.
🤔 How does Jenkins work?
🔶 Jenkins is a server-based application and requires a web server like Apache Tomcat to run on various platforms like Windows, Linux, macOS, Unix, etc. To use Jenkins, you need to create pipelines which are a series of steps that a Jenkins server will take. Jenkins Continuous Integration Pipeline is a powerful instrument that consists of a set of tools designed to host, monitor, compile and test code, or code changes, like:
Continuous Integration Server (Jenkins, Bamboo, CruiseControl, TeamCity, and others)
Source Control Tool (e.g., CVS, SVN, GIT, Mercurial, Perforce, ClearCase and others)
Build tool (Make, ANT, Maven, Ivy, Gradle, and others)
Automation testing framework (Selenium, Appium, TestComplete, UFT, and others)
🤔 Why use Continuous Integration with Jenkins?
🛠 Before Jenkins ⏩
🔷 Once all Developers had completed their assigned coding tasks, they used to commit their code all at same time. Later, Build is tested and deployed.
🔷 Code commit built, and test cycle was very infrequent, and a single build was done after many days.
🔷 Since the code was built all at once, some developers would need to wait until other developers finish coding to check their build .
🔷 It is not an easy task to isolate, detect, and fix errors for multiple commits.
🔷 Code build and testing are entirely manual, so there are a lot of chances for failure.
🔷 The code is deployed once all the errors are fixed and tested.
🔷 Development Cycle is slow.
💥 After Jenkins ⏩
🔶 The code is built and test as soon as Developer commits code. Jenkin will build and test code many times during the day
🔶 If the build is successful, then Jenkins will deploy the source into the test server and notifies the deployment team.
🔶 If the build fails, then Jenkins will notify the errors to the developer team.
🔶 The code is built immediately after any of the Developer commits.
🔶 Since the code is built after each commit of a single developer, it's easy to detect whose code caused the built to fail
🔶 Automated build and test process saving timing and reducing defects.
🔶 The code is deployed after every successful build and test.
🔶 The development cycle is fast. New features are more readily available to users. Increases
💥 Advantages of using Jenkins 💥
Jenkins is being managed by the community which is very open. Every month, they hold public meetings and take inputs from the public for the development of Jenkins project.
So far around 280 tickets are closed, and the project publishes stable release every three months.
As technology grows, so does Jenkins. So far Jenkins has around 320 plugins published in its plugins database. With plugins, Jenkins becomes even more powerful and feature rich.
Jenkins tool also supports cloud-based architecture so that you can deploy Jenkins in cloud-based platforms.
The reason why Jenkins became popular is that it was created by a developer for developers.
💥 Disadvantages of using Jenkins 💥
Its interface is out dated and not user friendly compared to current UI trends.
Though Jenkins is loved by many developers, it's not that easy to maintain it because Jenkins runs on a server and requires some skills as server administrator to monitor its activity.
One of the reasons why many people don't implement Jenkins is due to its difficulty in installing and configuring Jenkins.
Continuous integrations regularly break due to some small setting changes. Continuous integration will be paused and therefore requires some developer attention.
In Continuous Integration, after a code commit, the software is built and tested immediately
Jenkins used for orchestrating a chain of actions for Continuous Integration in a software project
Before Jenkins when all Developers had completed their assigned coding tasks, they used to commit their code all at same time. Later, Build is tested and deployed.
After Jenkins the code is built and test as soon as Developer commits code. Jenkin will build and test code many times during the day
By default, Jenkins comes with a limited set of features. If you want to integrate your Jenkins installation with version control tools like Git, then you need to install plugins related to Git
The biggest pros of Jenkins is that it is managed by the community which holds public meetings and take inputs from the public for the development of Jenkins projects
The biggest con of Jenkin is that Its interface is out dated and not user friendly compared to current UI trends.