What the Hell is Jenkins?

So if you are someone like me who has been introduced to Jenkins for the first time and is wondering and trying to understand what the hell it is😖, this post is for you.😃

Jenkins is a free and open-source tool that automates repetitive tasks in software development. Named after a helpful butler, Jenkins builds, tests, and deploys software projects automatically. It compiles code, runs tests, and deploys software to servers or other platforms. People use Jenkins to save time and effort by automating tasks and catching errors early. It is used throughout the software development cycle, monitoring code repositories and initiating actions like compiling, testing, and deployment. Jenkins provides feedback to developers about the success or failure of these actions.

make no sense right😅

let’s go through the stages of the development of a typical software product(note the tags I put mentioning Jenkin’s involvement.)

Requirements Gathering(No Jenkins involvement)

Design(No Jenkins involvement)

Implementation(No Jenkins involment)

Shared Code Repository and Branching(Jenkins Involves)

In a typical development environment, developers work with a shared code repository often referred to as the “main branch” or “master branch.”Each developer creates their own branch based on the main branch, allowing them to work on their features independently. They make code changes in their branches and commit those changes over time.

Merge and Conflicts(Jenkins Involves)

Eventually, they need to merge their changes back into the main branch. Conflicts can occur during this process when multiple developers modify the same parts of the code.

Conflict Resolution(Jenkins Involves)

To resolve conflicts, developers communicate with each other to understand and coordinate their changes. They carefully review the conflicting code and make decisions on how to combine their modifications. This may involve editing the code to resolve conflicts manually or discussing and agreeing on changes with their teammates. The goal is to create a final version of the code that incorporates everyone’s changes without conflicts.

Code Compilation(Jenkins Involves)

Once the developers have a finalized code, they would manually compile the code to transform it into an executable program. They would use specific commands or tools provided by the programming language to create the executable file.

Testing(Jenkins Involves)

After the code was built, developers would manually run tests to check if the software behaved as expected. This involved executing the program and going through a series of tests to validate its functionality, identify any errors or bugs, and ensure it met the required quality standards.

If any problems were discovered during testing, developers would go back to their code, manually identify and fix the issues, and repeat the building and testing steps until the software worked correctly.

Deployment(Jenkins Involves)

Once the code passed all the tests and was deemed ready for deployment, developers would manually copy the necessary files and configurations to the production environment.

This step required careful attention to detail to ensure the software was correctly deployed and accessible to users.

Now Let’s see how Jenkins involves in the stages I mentioned earlier.

Shared Code Repository and Branching

Jenkins can be used to manage the shared code repository and automate the process of creating branches, committing changes, and merging code. It provides features like version control integration (e.g., Git), allowing developers to easily create and manage branches. Jenkins can automatically trigger build processes when changes are committed to the repository, enabling continuous integration.

Merge and Conflicts

Jenkins can help identify and resolve conflicts that occur during the merge process. It can provide automated tools and workflows to handle conflict resolution, such as performing automatic merges or providing notifications to developers about conflicting changes. Jenkins can also trigger automated tests after resolving conflicts to ensure the code remains functional.

Conflict Resolution

Jenkins facilitates collaboration and communication among developers during conflict resolution. It can provide features like notifications, comments, and status updates to help developers coordinate their changes and reach a consensus. Jenkins allows for efficient code review processes, enabling developers to review and discuss conflicting code changes within the context of a merge request or pull request.

Code Compilation

Jenkins can automate the code compilation process by using specific commands or tools provided by the programming language. It can be configured to compile the code automatically whenever changes are made, ensuring that the latest code is always compiled. Jenkins provides a scalable and reliable build environment, allowing for parallel compilation and distribution of build tasks across multiple machines.

Testing

Jenkins offers extensive support for automated testing. It can execute various types of tests, such as unit tests, integration tests, and regression tests, based on predefined test configurations. Jenkins provides test reporting and result tracking, allowing developers to easily monitor test results and identify any issues or failures.

Deployment

Jenkins can automate the deployment process by copying necessary files and configurations to the production environment. It provides deployment pipelines and workflows to orchestrate the deployment steps, ensuring consistency and reliability. Jenkins allows for easy rollback or version management of deployments, facilitating quick recovery in case of issues.

I know this is a lot. But the bitter truth is Jenkins is a huge tool that cannot be covered easily. In this post I tried to give you the stages Jenkins involves in so later you can understand Jenkin’s much easier. Read my next article where we set up a simple Jenkins server in the AWS cloud.

--

--

No responses yet