Introduction

The advent of fast-paced development with many methodologies like ScrumAgile and Kanban brought along some key issues: developers working in small increments spent a lot of time waiting for the new version to build, reach the testers and eventually get deployed. The development process would be much faster if this cycle eliminated human intervention wherever possible.

The idea for automation servers arose. Throughout the years, many solutions came and went - but Jenkins managed to come out on top and become the standard when it comes to automation. While perfect for simple scheduling and executing shell or batch scripts, being open-source and having large community support, Jenkins provides easy integration with many tools, platforms and frameworks with over 1,500 plugins making the entire process effortless.

Key Jenkins Concepts

To understand why someone should use Jenkins, we need to understand what are the problems Jenkins aims to solve.

The CI/CD Pipeline

From start to finish, there are multiple stages in the software life cycle. Automation helps us bridge the gaps between them, making the entire process seamless. Taking a plain, run-of-the-mill workflow as an example - an automation server will listen for new development versions, fetch them and run the appropriate commands to build and test the new version, and finally put the new version into production if everything was successful.

All of these stages, which are made out of smaller steps, their timing and order need to be defined as a single pipeline.

The Controller-Agent Architecture

In order to spread the load of concurrent builds and tasks, Jenkins introduces the Controller-Agent architecture. The “Controller” - the Jenkins server is responsible for administering projects, configurations, users and data. “Agents” can be called upon to execute certain stages of a particular pipeline. This brings many benefits such as easy scaling, optimal hardware (large-scale math or data-heavy processes), test servers and platform specific builds.

#java #devops #git #github #jenkins #ci/cd

Beginner's Introduction to Jenkins - CI/CD
1.30 GEEK