# What Is the Purpose of the jenkinsci/jenkins Repository?

> Discover the purpose of the jenkinsci/jenkins repository, the core codebase for Jenkins, the leading open-source automation server for CI/CD pipelines.

- Repository: [Jenkins/jenkins](https://github.com/jenkinsci/jenkins)
- Tags: getting-started
- Published: 2026-07-29

---

**The jenkinsci/jenkins repository hosts the official open-source codebase for Jenkins, the automation server that orchestrates continuous integration and continuous delivery (CI/CD) pipelines through extensible plugins and distributed build execution.**

The jenkinsci/jenkins repository serves as the canonical source for Jenkins, one of the most widely adopted open-source automation servers in modern software development. This codebase contains the entire core system—from job scheduling algorithms and plugin management frameworks to the web interface and REST API layers—that enables teams to automate building, testing, and deploying software at scale.

## Core CI/CD Automation Capabilities

Jenkins automates software delivery by executing **Jobs**, abstracted in [`jenkins-core/src/main/java/hudson/model/Job.java`](https://github.com/jenkinsci/jenkins/blob/main/jenkins-core/src/main/java/hudson/model/Job.java). This class represents any buildable entity, whether compiling source code, running tests, or deploying artifacts. Each execution generates a **Run** instance, defined in [`jenkins-core/src/main/java/hudson/model/Run.java`](https://github.com/jenkinsci/jenkins/blob/main/jenkins-core/src/main/java/hudson/model/Run.java), which tracks the specific build's lifecycle, logs, and status.

The server triggers these automation sequences based on source-code changes, scheduled timers, or external webhooks. This continuous integration approach allows development teams to detect errors immediately after code commits, reducing the cost and complexity of fixing integration issues.

## Extensible Plugin Architecture

The jenkinsci/jenkins repository implements a modular plugin system that integrates with virtually every tool in the software delivery lifecycle. Through extension points defined in the core, plugins add support for source control systems like Git and Subversion, container platforms including Docker and Kubernetes, testing frameworks, and notification services.

Developers create custom plugins by extending core classes such as `Builder`. The example below demonstrates a custom build step that prints messages to the build log:

```java
package org.jenkinsci.plugins.myplugin;

import hudson.Extension;
import hudson.Launcher;
import hudson.model.*;
import hudson.tasks.Builder;
import java.io.IOException;

public class MyBuilder extends Builder {

    private final String message;

    @DataBoundConstructor
    public MyBuilder(String message) {
        this.message = message;
    }

    @Override
    public boolean perform(AbstractBuild<?,?> build, Launcher launcher,
                           BuildListener listener) throws InterruptedException, IOException {
        listener.getLogger().println("MyBuilder says: " + message);
        return true;
    }

    @Extension
    public static final class DescriptorImpl extends BuildStepDescriptor<Builder> {
        public boolean isApplicable(Class<? extends AbstractProject> aClass) { return true; }
        public String getDisplayName() { return "Print a custom message"; }
    }
}

```

## Distributed Build Execution

Jenkins scales automation through a master-agent architecture orchestrated by the core. The master node runs the web application defined in [`war/src/main/webapp/WEB-INF/web.xml`](https://github.com/jenkinsci/jenkins/blob/main/war/src/main/webapp/WEB-INF/web.xml), which configures servlet mappings and security constraints for the Jenkins interface. This master delegates build workload to remote **agent** nodes, allowing parallel execution across multiple machines, operating systems, and architectures.

The [`pom.xml`](https://github.com/jenkinsci/jenkins/blob/main/pom.xml) at the repository root defines the Maven build configuration that compiles the core, packages the WAR file, and manages dependencies for this distributed system.

## Pipeline as Code Implementation

Modern Jenkins workflows define CI/CD processes as code using `Jenkinsfile` syntax. These Groovy-based pipeline definitions version-control the automation logic alongside application source code, ensuring reproducible environments and consistent deployment sequences across development, staging, and production.

The following declarative pipeline checks out source code, compiles with Maven, executes tests, and archives artifacts:

```groovy
pipeline {
    agent any                     // Run on any available agent
    stages {
        stage('Checkout') {
            steps {
                checkout scm      // Pull source from the configured SCM
            }
        }
        stage('Build') {
            steps {
                sh 'mvn clean compile'   // Compile the project
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test'            // Run unit tests
                junit '**/target/surefire-reports/*.xml' // Publish test results
            }
        }
        stage('Archive') {
            steps {
                archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
            }
        }
    }
}

```

## Web Interface and REST API

The jenkinsci/jenkins repository provides dual interfaces for system management: a comprehensive web-based UI and a robust REST API. Users configure jobs, view build logs, and manage credentials through the browser interface, while automation scripts interact programmatically via HTTP endpoints.

Trigger a parameterized build remotely using the REST API with curl:

```bash
curl -X POST \
     -u user:apiToken \
     -H "Content-Type: application/json" \
     -d '{"parameter": [{"name":"BRANCH","value":"main"}]}' \
     https://jenkins.example.com/job/MyJob/buildWithParameters

```

## Summary

- The jenkinsci/jenkins repository contains the complete open-source codebase for the Jenkins automation server, enabling CI/CD workflows
- Core abstractions `Job` (in [`jenkins-core/src/main/java/hudson/model/Job.java`](https://github.com/jenkinsci/jenkins/blob/main/jenkins-core/src/main/java/hudson/model/Job.java)) and `Run` (in [`jenkins-core/src/main/java/hudson/model/Run.java`](https://github.com/jenkinsci/jenkins/blob/main/jenkins-core/src/main/java/hudson/model/Run.java)) manage build lifecycle and execution tracking
- A modular plugin architecture integrates Jenkins with thousands of third-party tools and platforms
- Distributed execution capabilities allow the master node to delegate builds across remote agents for scalability
- Pipeline definitions in `Jenkinsfile` format provide version-controlled, reproducible automation code
- Both web UI and REST API interfaces enable flexible system administration and programmatic access

## Frequently Asked Questions

### What programming languages are primarily used in the jenkinsci/jenkins repository?

The core Jenkins codebase is written primarily in **Java**, as evidenced by the Maven build system defined in [`pom.xml`](https://github.com/jenkinsci/jenkins/blob/main/pom.xml) and the core classes like [`Job.java`](https://github.com/jenkinsci/jenkins/blob/main/Job.java) and [`Run.java`](https://github.com/jenkinsci/jenkins/blob/main/Run.java). Pipeline definitions use **Groovy**, and the repository includes JavaScript and Jelly templates for the web interface components.

### How does the jenkinsci/jenkins repository support high-availability and scalability?

The repository implements a master-agent architecture that distributes build execution across multiple nodes. The master server maintains the UI and job configuration while delegating actual build work to remote agents, preventing resource exhaustion on the central server and allowing parallel execution across diverse infrastructure.

### What is the difference between a Jenkins Job and a Run according to the source code?

In the jenkinsci/jenkins codebase, a **Job** (defined in [`jenkins-core/src/main/java/hudson/model/Job.java`](https://github.com/jenkinsci/jenkins/blob/main/jenkins-core/src/main/java/hudson/model/Job.java)) represents the configuration and definition of a buildable project or task. A **Run** (defined in [`jenkins-core/src/main/java/hudson/model/Run.java`](https://github.com/jenkinsci/jenkins/blob/main/jenkins-core/src/main/java/hudson/model/Run.java)) represents a single execution instance of that Job, capturing specific build logs, artifacts, and results for that particular execution.

### Can the jenkinsci/jenkins repository be built and run independently?

Yes, the repository contains everything needed to build Jenkins from source using Maven (via [`pom.xml`](https://github.com/jenkinsci/jenkins/blob/main/pom.xml)). The build produces a WAR file (configured via [`war/src/main/webapp/WEB-INF/web.xml`](https://github.com/jenkinsci/jenkins/blob/main/war/src/main/webapp/WEB-INF/web.xml)) that can be deployed to any servlet container or run standalone using the embedded Jetty server included in the distribution.