Free Jenkins Tutorial for DevOps in Kolkata

Welcome to our comprehensive Jenkins tutorial tailored for DevOps enthusiasts in Kolkata! This tutorial is designed to empower individuals and teams in Kolkata with the knowledge and skills needed to harness the power of Jenkins – a leading automation server widely utilized in DevOps pipelines.

Whether you’re a seasoned developer or just stepping into the world of DevOps, this tutorial will walk you through the fundamental concepts of Jenkins, its installation, configuration, and utilization to optimize your development workflow. From creating automated build and deployment pipelines to leveraging plugins for enhanced functionality, our tutorial covers it all.

What is Jenkins?

Jenkins is an open-source automation server that facilitates the continuous integration and continuous delivery (CI/CD) of software applications. CI/CD is a set of practices aimed at automating the building, testing, and deployment of code changes, allowing developers to deliver high-quality software more efficiently and frequently.

At its core, Jenkins provides a platform for automating various stages of the software development lifecycle. It enables developers to integrate their code changes into a shared repository multiple times a day. With each integration, Jenkins automatically builds, tests, and verifies the code, helping to catch bugs and issues early in the development process.

Key features of Jenkins include:

  1. Automation: Jenkins allows you to automate repetitive tasks like building code, running tests, and deploying applications, reducing manual effort and minimizing errors.
  2. Extensibility: Jenkins can be extended with a wide range of plugins that offer integrations with various tools and technologies, enabling customization of the automation pipeline to suit your project’s needs.
  3. Scalability: Jenkins can distribute workloads across multiple machines, allowing you to handle complex and resource-intensive tasks efficiently.
  4. Monitoring and Reporting: Jenkins provides real-time insights into the status of your builds and deployments, along with detailed reports on test results and code quality metrics.
  5. Flexibility: Jenkins supports various version control systems, programming languages, and build tools, making it versatile and adaptable to different project requirements.
  6. Community Support: Being an open-source project, Jenkins benefits from a large and active community of users and contributors who share knowledge, create plugins, and offer support.

What is CI/CD ?

CI/CD stands for Continuous Integration and Continuous Delivery (or Continuous Deployment), and it’s a set of practices used in software development to streamline and automate the process of building, testing, and deploying code changes. The main goal of CI/CD is to enable development teams to deliver software faster, more frequently, and with higher quality.

Here’s a breakdown of what Continuous Integration (CI) and Continuous Delivery/Deployment (CD) entail:

Continuous Integration (CI): CI focuses on the frequent integration of code changes from different developers into a shared version control repository. The core idea is that as developers work on their individual features or fixes, they regularly merge their changes back into the main codebase. This practice ensures that the integration issues are identified and resolved early in the development cycle.

Key aspects of CI include:

  1. Automated Builds: Code changes trigger automated build processes, generating executable artifacts (such as compiled code or binaries) from the source code.
  2. Automated Testing: Automated tests, including unit tests, integration tests, and other types of tests, are executed on the new code changes to catch bugs and ensure the code works as expected.
  3. Early Feedback: CI provides rapid feedback to developers about the status of their code changes, helping them address issues sooner and maintain code quality.

 

Continuous Delivery (CD): CD takes the principles of CI a step further by automating the process of delivering the code changes to various environments, from development to production. The aim is to ensure that the software is always in a deployable state and can be released to users quickly and reliably.

Key aspects of CD include:

  1. Automated Deployment: Automated deployment pipelines are set up to deliver code changes to different environments, enabling consistent and reliable deployments.
  2. Manual Approval: In some CD pipelines, a manual approval step might be included before changes are deployed to production, allowing for human oversight and control.
  3. Configuration Management: Infrastructure and environment configurations are automated, ensuring that the deployment process is consistent and repeatable across different stages.

Continuous Deployment (CD): Continuous Deployment takes the concept of Continuous Delivery to its fullest extent. In a Continuous Deployment setup, every code change that passes the automated tests is automatically deployed to production without manual intervention.

History of Jenkins

Jenkins, an integral tool in modern software development, has a fascinating history that traces back to its origins and evolution:

Early Beginnings: The story of Jenkins begins with its predecessor, Hudson. Hudson was created by Kohsuke Kawaguchi, a software developer at Sun Microsystems, in 2004. Kohsuke developed Hudson as an internal project to automate the build and testing process of Sun’s Java-based projects. Hudson’s core concept centered around Continuous Integration (CI), facilitating the automatic building and testing of code changes as they were committed to the version control system.

The Split and Birth of Jenkins: In 2011, a dispute arose between Kohsuke Kawaguchi and Oracle, who had acquired Sun Microsystems. Oracle’s actions led to a fork in the project, resulting in Kohsuke’s decision to create a separate open-source project named Jenkins. This fork allowed Kohsuke and the Jenkins community to maintain the project’s open and collaborative nature.

Rapid Growth and Community Contributions: After the split, Jenkins gained momentum rapidly. The new project attracted a vibrant community of developers, testers, and DevOps practitioners who recognized the value of a versatile, open-source automation server. This community worked together to enhance Jenkins, develop plugins, and contribute to its documentation.

Plugin Ecosystem and Expansion: One of Jenkins’ defining features is its extensibility through plugins. The Jenkins community embraced this concept and began creating plugins to integrate the tool with a wide range of technologies, version control systems, build tools, and deployment platforms. This expanded Jenkins’ capabilities, making it a central hub for continuous integration and continuous delivery (CI/CD) pipelines.

Continuous Innovation: Jenkins continued to evolve with new features and improvements, aligning itself with the evolving landscape of software development and DevOps practices. The tool became a cornerstone of CI/CD pipelines, supporting teams in automating the entire software delivery process, from code integration to deployment.

Renaming and Advancements: In 2019, the Jenkins project went through a rebranding effort, renaming the project Jenkins X to emphasize its focus on modern cloud-native development and Kubernetes-based applications. Jenkins X aimed to provide CI/CD tailored specifically for cloud-native technologies.

Legacy and Impact: Despite the emergence of alternative tools and successors like Jenkins X, Jenkins maintains a strong legacy and remains a crucial part of the CI/CD landscape. Its community-driven nature, flexibility, and extensive plugin ecosystem have left a lasting impact on how software is developed and delivered, fostering collaboration and automation across countless projects and organizations.

How Jenkins Work?

Jenkins operates as a powerful automation server that orchestrates the processes involved in Continuous Integration and Continuous Delivery (CI/CD). Its workflow is centered around automating tasks and processes within a software development pipeline. Here’s how Jenkins works:

  1. Configuration and Setup:
    • Jenkins is installed on a server or a virtual machine, and its configuration is tailored to the project’s needs.
    • Plugins are selected and installed to extend Jenkins’ functionality, enabling integration with various tools, version control systems, build systems, and deployment platforms.
  2. Creating Jobs:
    • A “job” in Jenkins represents a specific task or process within the CI/CD pipeline.
    • Jobs can include tasks like code compilation, unit testing, integration testing, code analysis, and deployment.
  3. Source Code Integration:
    • Developers commit their code changes to a version control repository, triggering the CI process.
    • Jenkins monitors the repository for changes, using webhooks or polling mechanisms.
  4. Build and Test:
    • Once code changes are detected, Jenkins automatically triggers a build job.
    • The build job compiles the code, packages it into artifacts, and runs various automated tests.
    • Jenkins collects and reports test results, code coverage, and other metrics.
  5. Integration and Validation:
    • If the tests are successful, the code changes are integrated into a shared codebase, promoting collaboration.
    • Automated integration tests are executed to ensure that the code works seamlessly with the rest of the application.
  6. Artifact Generation:
    • Successful builds produce deployable artifacts such as binaries, libraries, or container images.
  7. Continuous Delivery/Deployment:
    • For Continuous Delivery, the artifacts are deployed to a staging or pre-production environment.
    • For Continuous Deployment, the artifacts are automatically deployed to production without manual intervention, provided all tests pass and approvals are granted.
  8. Monitoring and Reporting:
    • Jenkins provides real-time visibility into the status of each job and the entire pipeline.
    • Detailed reports, logs, and notifications are available to developers and stakeholders.
  9. Feedback and Iteration:
    • If a job fails, Jenkins alerts developers, enabling them to quickly address issues.
    • Failed builds prevent faulty code from progressing further in the pipeline, maintaining code quality.
  10. Customization and Scalability:
    • Jenkins’ flexibility allows teams to customize their pipelines according to their project requirements.
    • Jenkins can be scaled to handle larger workloads by distributing jobs across multiple agents or nodes.
  11. Version Control Integration:
    • Jenkins can automatically tag successful builds, creating a link between code changes and successful outcomes.
  12. Continual Improvement:
    • Jenkins pipelines are regularly reviewed and improved based on feedback, changing project needs, and emerging best practices.

In essence, Jenkins automates and streamlines the various stages of software development, ensuring that code changes are tested, integrated, and deployed efficiently and reliably. Its extensibility through plugins, along with its active community, contributes to its versatility and adaptability for a wide range of projects and technologies.

How To install Jenkins in Ubuntu Server?

here’s a step-by-step guide on how to install Jenkins on an Ubuntu Server:

Step 1: Update Your System

Open a terminal on your Ubuntu Server and update the package list and upgrade the installed packages to their latest versions:

#sudo su –

#apt-get update

Step 2: Install Java

Jenkins requires Java to run. You can install OpenJDK, which is an open-source implementation of Java:

#apt install openjdk-17-jdk

Step 3: Add Jenkins Repository and install Jenkins

#curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
#echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
#apt-get update
#apt-get install jenkins

Step 4: Start and Enable Jenkins

Start the Jenkins service:

#systemctl start jenkins

Enable Jenkins to start on system boot:

#systemctl enable jenkins

Step 5: Access Jenkins

By default, Jenkins runs on port 8080. Open a web browser and access Jenkins using your server’s IP address or domain followed by “:8080” (e.g., http://your_server_ip:8080).

Step 6: Unlock Jenkins

The first time you access Jenkins, you’ll be asked to enter the administrator password.

Unlock Jenkins
Unlock Jenkins

To retrieve the password, use the following command:

#cat /var/lib/jenkins/secrets/initialAdminPassword

Copy the password and paste it into the Jenkins setup wizard.

Step 8: Customize Jenkins
Install suggested plugins or select the plugins you need. You can also choose to install plugins later.

Install plugins in Jenkins
Install plugins in Jenkins

Step 9: Create Admin User
Create an administrator user account with the required details.

Create First Admin User in Jenkins
Create First Admin User in Jenkins

Step 10: Finish Setup
Once the setup is complete, you can start using Jenkins by clicking the “Start using Jenkins” button.

Jenkins installation is Ready now
Jenkins installation is Ready now

FAQs:

Is Jenkins a CI or CD?

Jenkins is primarily known as a Continuous Integration (CI) tool, but it also supports Continuous Delivery (CD) practices.

Which CI tools are used in Jenkins?

Jenkins, a versatile automation server, incorporates a multitude of Continuous Integration (CI) tools via its plugin ecosystem. These plugins enrich Jenkins by integrating it with various tools and practices, including source code management (SCM) systems like Git, diverse build tools such as Maven, testing frameworks like JUnit, and containerization tools like Docker. Furthermore, Jenkins enables the automation of deployment processes, integrates notification and reporting tools, and supports Continuous Delivery through plugins like Jenkins Pipeline. With its plugin flexibility, Jenkins empowers teams to create tailored CI/CD workflows, enhancing code quality, collaboration, and efficient software delivery.

What are the importance of plugins in Jenkins?

Plugins are vital to Jenkins, amplifying its capabilities, flexibility, and utility. By seamlessly integrating an array of tools and functions, plugins enable Jenkins to adapt to diverse project needs and technologies. This extensibility empowers users to customize their automation workflows, integrate with version control systems, build tools, testing frameworks, and more. Plugins also align Jenkins with industry trends and emerging tools, ensuring its relevance. By fostering collaboration through community contributions and offering pre-built solutions, plugins expedite adoption and enhance reporting. Ultimately, plugins make Jenkins a dynamic, versatile, and indispensable asset for efficient, tailored, and cutting-edge continuous integration and delivery processes.

What is the cost of learning Jenkins in Kolkata?

The standard Jenkins Training comes within a DevOps Training in Kolkata in AEM Institute. The Cost of  DevOps Course in Kolkata starts from INR 19,950/-  Which includes Jenkins Training Module. If you are interested to Learn Jenkins Only you may contact us.

Leave a Comment

Your email address will not be published. Required fields are marked *

error: Content is protected !!
Scroll to Top