Lecture 02 – WHAT IS JENKINS
WHAT IS JENKINS
Jenkins is an open source automation server. It helps automate the parts of software development related to building, testing, & deploying, facilitating continuous integration & continuous delivery. Jenkins is used to build and test your product continuously, so developers can continuously integrate changes into the build. Jenkins is the most popular open source CICD tool on the market today and is used in support of DevOps, alongside other cloud native tools.
JENKINS ARCHITECTURE
Jenkins follows a distributed architecture that consists of multiple components working together to facilitate the automation and management of CI/CD processes.
The key components of Jenkins architecture are:
1.. Jenkins Master: The Jenkins Master is the central component that manages the entire Jenkins environment. It handles the scheduling of jobs, distributes work to Jenkins Agents, and provides the web-based user interface for configuring and monitoring jobs and pipelines. The Master also stores configuration settings, job definitions, and build logs.
2. Jenkins Agents (also known as Jenkins Slaves): Jenkins Agents are responsible for executing the actual build and deployment tasks. They are distributed across different machines, allowing parallel execution of jobs and workload distribution. Agents communicate with the Jenkins Master to receive build instructions and report build results.
3. Executors: Executors are the execution units within Jenkins Agents. They represent the available resources (e.g., CPU, memory) on an Agent that can be utilized for running build and deployment tasks. Executors can be configured to run jobs concurrently, enabling multiple builds to be executed simultaneously.
4. Job and Pipeline Configuration: Jobs in Jenkins are the building blocks of the CI/CD process. Each job represents a specific task, such as building, testing, or deploying an application. Jobs can be configured through the Jenkins web interface, defining parameters, source code repositories, build steps, and post-build actions.
5. Jenkins Pipelines: Jenkins Pipelines provide a powerful way to define and manage continuous delivery workflows. Pipelines allow users to create complex, scripted workflows that can be versioned, shared, and reused. They can be written in Groovy DSL (Declarative or Scripted) and provide more flexibility and control over the CI/CD process.
6. Plugins: Jenkins offers a vast ecosystem of plugins that extend its functionality. Plugins can be used to integrate Jenkins with various tools and technologies, such as source control systems, build tools, testing frameworks, and deployment platforms. They enable customization and integration of Jenkins with external systems and services.
7. Distributed File System: Jenkins requires a shared file system that allows the Master and Agents to exchange data and files. This shared file system ensures that job configurations, build artifacts, and logs are accessible across the Jenkins environment.
How Jenkins works
FEATURES OF JENKINS
Jenkins is an open-source automation server that is widely used for continuous integration and continuous delivery (CI/CD) processes in software development.
Here are some of the key features of Jenkins:
Continuous Integration: Jenkins allows developers to automatically build, test, and integrate their code changes as they are committed to a version control system. It supports various source code management systems like Git, Subversion, and Mercurial.
Extensibility: Jenkins offers a vast array of plugins that enable developers to customize and extend its functionality. There are thousands of plugins available to integrate with various tools, technologies, and services used in the software development lifecycle.
Distributed Builds: Jenkins supports distributed builds, allowing you to distribute build and test tasks across multiple machines, enabling faster build times and better resource utilization.
Easy Configuration: Jenkins provides a web-based graphical user interface (GUI) that allows users to configure jobs and pipelines without the need for complex scripting or coding. It offers a user-friendly interface for managing projects and setting up build and deployment processes.
Automation: Jenkins facilitates the automation of various development tasks, such as building, testing, packaging, and deploying applications. It allows developers to create custom workflows and pipelines to automate complex build and release processes.
Integration with Testing Frameworks: Jenkins seamlessly integrates with popular testing frameworks like JUnit, Selenium, and Cucumber, enabling automated testing as part of the CI/CD process. Test reports and results can be easily viewed and analyzed within Jenkins.
Notifications and Reporting: Jenkins provides customizable notifications and alerts, allowing teams to stay informed about build statuses, test results, and other important events. It also offers extensive reporting capabilities, including build trends, test coverage reports, and code quality metrics.
Scalability: Jenkins is designed to scale from small teams to large enterprise environments. It supports distributed architectures, allowing the setup of master-slave configurations to handle heavy workloads.
Security: Jenkins provides robust security features, including user authentication, authorization, and role-based access control (RBAC). It allows administrators to define access levels and permissions for different users and groups.
Community and Ecosystem: Jenkins has a large and active community of developers and users who contribute to its ongoing development, provide support, and share plugins and integrations. The extensive plugin ecosystem ensures compatibility with various tools and technologies commonly used in software development.
ADVANTAGE OF JENKINS
