> For the complete documentation index, see [llms.txt](https://devops-3.gitbook.io/devops/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://devops-3.gitbook.io/devops/docs/module-11-jenkins/introduction-to-jenkins.md).

# Introduction to Jenkins

Jenkins is an open source automation tool written in Java programming language that allows continuous integration.

Jenkins **builds** and **tests** our software projects which continuously making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build.

It also allows us to continuously **deliver** our software by integrating with a large number of testing and deployment technologies.

### History of Jenkins

Kohsuke Kawaguchi first developed Hudson in 2004 while working at Sun Microsystems. When Oracle acquired Sun Microsystems in 2010, there was a dispute between Oracle and the Hudson community with respect to the infrastructure used.&#x20;

There was a call for votes to change the project name from Hudson to Jenkins, which was overwhelmingly approved by the Hudson community on January 29, 2011, thereby creating the first “Jenkins” project.

### Architecture

<figure><img src="https://921544542-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiRQTWHUNVZ5tIxQJXclF%2Fuploads%2FZhH2pZlthjSI3KnFJo3I%2Fjenkins-architecture.jpg?alt=media&amp;token=5f0cdb2a-7212-4063-b91a-4002dcb9c7f7" alt=""><figcaption><p>Architecture</p></figcaption></figure>

The main server of Jenkins is the Jenkins Master. It is a web dashboard which is nothing but powered from a war file. By default it runs on 8080 port. With the help of Dashboard, we can configure the jobs/projects but the build takes place in Nodes/Slave.

Jenkins slave is used to execute the build jobs dispatched by the master. We can configure a project to always run on a particular slave machine, or particular type of slave machine, or simple let the Jenkins to pick the next available slave/node.

### Jenkins Workflow

![Jenkins Workflow](https://user-images.githubusercontent.com/69889600/214857610-4fc3e64c-a262-4a6b-9e4d-b5b4eed057c6.png)

### Continuous Integration

Continuous Integration is a software development practice where code is continuously tested after a commit to ensure there are no bugs. The common practice is that whenever a code commit occurs, a build should be triggered.

### Continuous Deployment

Continuous Deployment is a software development process where code changes to an application are released automatically into the production environment.

### Continuous Delivery

Continuous delivery is a software development practice where a code change is built, tested, and then pushed to a non-production testing or staging environment but final deploy to production is made after approval.

### Advantages of Jenkins

* Open source tool
* Easy to install
* Platform Independent
* Support 1000+ plugins
* Free of cost
* Automates integration
