CI/CD -> Continuous Integration and Continuous Deployment or Delivery.
It is a methodology of software development life cycle (SDLC).
Continuous Integration = Continous Build + Continous test
CI/CD Pipeline
When we build a CI/CD pipeline we keep in mind that when the pipeline is created it is passed through various stages like Version control --> Building the image --> testing it --> deploying it --> auto testing --> deploying in the production environment --> lastly followed by giving Quality Assurance. It is the stage any error is encountered then an automatic message is sent to the production team to rectify it.
When a pipeline is built Jenkins is just used as an integration tool. GitHub is used to Plan and Code, Maven or Gradle are used to Build, Selenuim/Junit is used to Test, Deployment and Operations are taken by Chef or Puppet and Monitoring is done via Nagios. From this maximum are Open-source tools.
Now ...
Jenkins
Jenkins is an open-source project written in Java that runs on Windows, macOS and other Unix-like operating systems. It is free, community supported and might be your first choice tool for CI.
Jenkins automates the entire software development life cycle.
Jenkins was originally developed by sun microsystems in 2004 under the name 'Hudson'.
The project was later named Jenkins when Oracle bought Microsystems.
It can run on any major platform without any compatibility issues.
Whenever developers write code, we integrate all the code developers then and we build, test and deliver/deploy to the client. This process is called CI/CD.
Jenkins helps to achieve this.
Because of CI, Now bugs will be reported fast and get rectified fast. So the entire software development happens fast.
Workflow of Jenkins
We can get attach Git, Maven, Selenium and Artifactory plugins to Jenkins.
Once developers put the code in Git Hub, Jenkins pulls that code and sends it to Maven for Build.
Once the build is done jenkins pull that code and send it to Selenium for testing.
Once testing is done, then Jenkins will pull that code and send it to satisfactory as per requirement and so on.
We can also deploy with Jenkins.
Advantages of Jenkins
It has lots of plugins available.
You can create your plug-in.
You can use a community plugin.
Jenkins is not just a tool. It is a Framework i.e. you can do whatever you want. All you need is plugins.
We can attach slaves (nodes) to Jenkins master. It instructs others (slaves) to do the job. If slaves are not available, Jenkins itself does the job.
Jenkins also behaves as a crone server Replacement i.e. can do the scheduled task.
It can create labels. (assigning what every node can do).
Plugins
Plugins are small libraries that add new abilities to Jenkins and can provide integration points to other tools.