The Talent500 Blog
Jenkins - Introduction 1

Jenkins – Introduction

Jenkins – Introduction

Introduction

Jenkins is widely recognised as one of the best continuous integration and delivery solutions available. Jenkins, the popular automation server, is available for no cost and with open source code. Developers may have their code immediately built, integrated, and tested as soon as it is committed to the central repository. This allows for earlier issue and mistake detection, allowing for faster deployments from the development team.

As soon as new code is contributed to the central repository, a build is triggered and the developers are notified of the build’s success or failure, facilitating greater cooperation and reducing wasted time hunting for issues.

This blog will teach you everything you need to know to get started with Jenkins, including what CI/CD is, why we should use Jenkins, how to create pipelines, how to use different plugins, how to secure your Jenkins installation, and much more, all while providing you with hands-on practise along the way with demos at each step for better visualization of the concepts.


What is CI/CD?

CI stands for continuous integration and CD stands for Continuous delivery. CI/CD is basically taking a piece of code, wrapping it up with all its dependency and configuration and deploying it to a different compute engine. This could be EC2, EKS, Lambda or any other VMs.       

Jenkins - Introduction 2      

Consider the case of packaging a present for a buddy. You’d have a wrapping roll, a lovely ribbon, a name card, and a priceless present. You’d have to pack them in the precise sequence. The present is wrapped, a ribbon is tied around it, and a name card is added. You can see how Continuous Integration works now. You have a code, which has dependant libraries and configuration, and all of this must be wrapped/tied together in an environment. After you’ve wrapped your present, you would always double-check everything to ensure everything is in order, such as if the packaging is accurate, the name card has the necessary information, and so on. In the same way CI runs some tests to confirm everything is in order. These tests might be code quality testing or vulnerability tests.

The next step is to deliver the present to your buddy. You would take the present and pass it to a courier company to deliver it  to your buddy, regardless.   Similarly, Continuous Delivery will deliver/deploy the packaged and tested piece of code to any environment. This might be in the form of production, staging, or development. After you have deployed your code, you should double-check to see whether it has reached the environment, much as you would wait for confirmation that your buddy has got the present from the courier company.

 

Why Jenkins?

 There are thousands of open source/enterprise tools around CI/CD suite. These tools help you to achieve almost similar what Jenkins offer but, Jenkins is one of the oldest and customizable software around the CI/CD discussion. One needs to host it on a server or or as in a container whatever or whenever the need arises.

Jenkins is used across the software development lifecycle, integrating and automating building, testing, and deployment. Jenkins produces ‘pipelines’ that specify the server’s tasks.

Jenkins automatically builds and tests code when developers contribute it to the server. Jenkins notifies developers if the build fails so they may fix it. If the build succeeds and all automated tests pass, the code is transferred to a release-ready environment and the deployment team is alerted. 

Jenkins has a robust community since it’s open-source and the go-to CI tool. It’s simple to access Jenkins tutorials and other materials, which boosts its popularity. Jenkins’ large array of plugins extends its capability. Jenkins contains more than 1,800 community-developed plugins that may be adapted to any DevOps scenario. Jenkins may be easily modified and extended to meet most organizational demands. Jenkins employs a Master-Slave architecture to handle distributed builds for big projects. The ‘Master’ server may distribute workload to’slave’ servers, enabling many development and test environments to operate concurrently. This method may be used to build and test programmes on multiple Operating system. So, the question is not “why Jenkins?” But it’s “why not Jenkins?”.

 

Installing Jenkins

Jenkins installation is simple and is only a few lines of code. Depending on the environment you want to install Jenkins , Jenkins offers the following. 


Plugins in Jenkins

Increasing the capability of a Jenkins environment to better meet the requirements of a particular user or organisation is mostly accomplished via the usage of plugins. There are over a thousand distinct plugins available, each of which may be installed on a Jenkins controller to connect a variety of build tools, cloud providers, analytic tools, and many other types of technologies.

The Update Center allows for the automated download of plugins, along with any dependencies that go along with them. An inventory of open source plugins that have been created and are maintained by different members of the Jenkins community may be found in the Update Center, which is a service that is run by the Jenkins project.

Jenkins - Introduction 3


Installing a plugin

To install a plugin you need to navigate to Manage Jenkins> Manage Plugins

Here we are installing the AWS SDK plugin for Jenkins.

Jenkins - Introduction 4Jenkins - Introduction 5
Pipelines

Jenkins Pipeline is a collection of plugins that facilitates the set up and maintenance of such pipelines for continuous delivery. The delivery pipelines, both simple and complicated, may be written in a programming language called pipeline DSL and deployed through an extendable automation server. A series of related activities that occur in a predetermined order is called a pipeline.

Jenkins - Introduction 6

Working of Jenkins Continuous Delivery Pipelines

What is a JenkinsFile?

A text file known as JenkinsFile is used to define Jenkins pipelines. JenkinsFile allows you to describe your pipeline as code in a domain-specific language (DSL). JenkinsFile is a text file format that may be used to document the procedures involved in launching a Jenkins pipeline.

The benefits of using JenkinsFile are:

  • With only one JenkinsFile, you can have pipelines created automatically for all branches and be ready to run pull requests.
  • A review of your Jenkins code is available on the production line.
  • Your Jenkins workflow may be tested.
  • There is just one place where changes to your pipeline may be made, and it’s accessible to everyone.
  • Either the Web UI or a Jenkins File may be used to define a JenkinsFile.

Declarative versus Scripted pipeline syntax:

There are two types of Jenkins pipeline syntax used for defining your JenkinsFile.

  • Declarative
  • Scripted

Declarative:

Declarative pipeline syntax provides a straightforward approach to the creation of pipelines. It includes a preconfigured hierarchy that may be utilized for constructing Jenkins pipelines. It provides you with the capability to control all parts of the execution of a pipeline in an uncomplicated and uncomplicated method.

Scripted:

Scripted Jenkins pipelines are run with the assistance of a lightweight executor on the Jenkins master server. The process of translating the pipeline into atomic commands makes relatively little use of the available resources. Syntax that is declarative and syntax that is programmed are not only distinct from one another but are also defined in completely different ways.

 

Run a sample Pipeline

Step 1: To run a sample pipeline click on item from the right panel. This can be seen in the screenshot attached below.

Jenkins - Introduction 7

Step 2: Name your project and build the pipeline

Jenkins - Introduction 8Step 3: You can select your github project url and if it’s a private project, you would need to specify access keys. 

Jenkins - Introduction 9

Step 4:  You can also add your description and select building options.

Jenkins - Introduction 10

Step 5:  Setup your build parameter. Here I have set it in a cron method. The 5:00 AM UTC daily. 

Jenkins - Introduction 11

Jenkins - Introduction 12

Step 6: Now you can add the pipeline. Here in this sample pipeline, I am only printing hello world. 

Jenkins - Introduction 13

Step 7: Run the build

Jenkins - Introduction 14

Security

Jenkins’ security focuses on the server and user. The server is secured like any other. Its virtual machine or physical server host environment is set up so few processes can access it. Standard server OS and networking security features make this feasible.

Using industry-standard approaches like multifactor authentication, Jenkins UI access has been limited. To do this, use the HTTP server’s user interface security settings.

Jenkins’ user database can be encrypted for security. Jenkins Web UI accesses these functionalities. Jenkins also has an Authorization Realm. The Security Realm controls who has access to Jenkins and what they can do, while the Authorization Realm controls how they use that access.

Advantages and disadvantages

Jenkins has pros and cons, like any other programme. Jenkins’ plugin system is a strength. Jenkins adapts to modern computer systems. Jenkins’ broad scripting and declarative languages and plugin architecture allow for highly customized workflows. Jenkins is agnostic, therefore it may be used in hybrid and multi-cloud systems.

Jenkins has been around longer than rival choices. It’s often used because of its versatility. Jenkins has a large user base, excellent documentation, and helpful online communities. Using these tools makes setting up, maintaining, and repairing Jenkins much easier.

Jenkins and its add-ons are Java-based. Several firms leverage Java’s broad ecosystem to construct large-scale apps. Jenkins now offers a secure basis for adding functionality using standard frameworks and design principles.

Jenkins has faults. Jenkins has good instructions for setup, but production use might be difficult. Jenkinsfiles may be used to construct production pipelines in declarative or scripting language. Coding, debugging, and managing complicated pipelines is difficult.

Open-source software is also single-server. This streamlines deployment but limits resources to a single host, VM, or container. Jenkins is sluggish since it doesn’t federate servers. Without federation, a large company may have many unconnected Jenkins servers that are hard to control centrally.

Conclusion

Jenkins is a widely used CI/CD Tools. This is just an introduction blog to the world of Jenkins and what it has to offer. In the subsequent blogs we will be exploring more on pipelines and handling secrets. In the meanwhile, make sure you are able to install Jenkins on your system and start creating builds. You won’t want to miss the next installment on Jenkins, so make sure you subscribe.

0
Shubham Singh

Shubham Singh

He is a SDE-2 DevOps Engineer, with demonstrated history in working with scaling startup. A problem solver by mettle, who loves watching anime when he is not working. He is a learner and educator by heart.

Add comment