<!-- BusyBot node reference — https://busybot.net/tools/jenkins/ -->

> Node: Jenkins (`jenkins`) · Action · v1
> Category: Development · Credentials: Jenkins API (`jenkinsApi`)
> Updated: 2026-08-16

# Jenkins

> Trigger builds, manage jobs, and control a Jenkins CI/CD server.

## Overview

Jenkins is an open-source automation server for CI/CD pipelines. This tool interacts with a Jenkins server via its REST API using Basic Authentication (username + API token). It supports triggering jobs (with or without parameters), copying/creating jobs, managing the Jenkins instance (restart, shutdown, quiet down), and listing build history for jobs.

**Category:** Development  
**Tool Name:** `jenkins`  
**Version:** 1

**Appearance:** Icon: `si-jenkins` | Color: `#D33833`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Jenkins API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/jenkins-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Build | `build` |
| Instance | `instance` |
| Job | `job` |

### Operations

Each resource offers its own set of operations.

| Resource | Operation | Value | Description |
|----------|-----------|-------|-------------|
| Build | Get Many | `getAll` | List builds for a job |
| Instance | Cancel Quiet Down | `cancelQuietDown` | Cancel quiet down state |
| Instance | Quiet Down | `quietDown` | Put Jenkins in quiet mode, no builds can be started, Jenkins is ready for shutdown |
| Instance | Restart | `restart` | Restart Jenkins immediately on environments where it is possible |
| Instance | Safely Restart | `safeRestart` | Restart Jenkins once no jobs are running on environments where it is possible |
| Instance | Safely Shutdown | `safeExit` | Shutdown once no jobs are running |
| Instance | Shutdown | `exit` | Shutdown Jenkins immediately |
| Job | Copy | `copy` | Copy a specific job |
| Job | Create | `create` | Create a new job |
| Job | Trigger | `trigger` | Trigger a specific job |
| Job | Trigger with Parameters | `triggerParams` | Trigger a specific job with parameters |

### Parameters

The `Instance` operations `Cancel Quiet Down`, `Restart`, `Safely Restart`, `Safely Shutdown` and `Shutdown` take no parameters of their own — see All Operations.

#### Build: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Job Name | `string` | Yes | — | Name of the Jenkins job to list builds for. Find in your Jenkins dashboard URL: {baseUrl}/job/{jobName}/ Supports expressions. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |

#### Instance: Quiet Down

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Reason | `string` | No | — | Freeform reason for quiet down mode. Supports expressions. |

#### Job: Copy

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Job Name | `string` | Yes | — | Name of the Jenkins job. Find in your Jenkins dashboard URL: {baseUrl}/job/{jobName}/ Supports expressions. |
| New Job Name | `string` | Yes | — | Name of the new Jenkins job. Supports expressions. |

#### Job: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| New Job Name | `string` | Yes | — | Name of the new Jenkins job. Supports expressions. |
| XML | `string` | Yes | — | XML of Jenkins job config. To get the XML of an existing job, add "config.xml" to the end of the job URL. Supports expressions. |

#### Job: Trigger

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Job Name | `string` | Yes | — | Name of the Jenkins job. Find in your Jenkins dashboard URL: {baseUrl}/job/{jobName}/ Supports expressions. |

#### Job: Trigger with Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Job Name | `string` | Yes | — | Name of the Jenkins job. Find in your Jenkins dashboard URL: {baseUrl}/job/{jobName}/ Supports expressions. |
| Parameters | `fixedCollection` | Yes | `{}` | Parameters for the Jenkins job build. |
| — Name | `string` | No | — | Parameter name as defined in the Jenkins job configuration. Supports expressions. |
| — Value | `string` | No | — | Parameter value to pass to the build. Supports expressions like {{ $json.version }}. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

Results are **merged onto the input item's JSON** — incoming fields pass through and stay addressable downstream, and binary data is forwarded unchanged.

| Resource / Operation | Output |
|----------------------|--------|
| Job `trigger`, `triggerParams`, `copy`, `create` | One item with `success: true` added. |
| Instance `quietDown`, `cancelQuietDown`, `restart`, `safeRestart`, `exit`, `safeExit` | One item with `success: true` added. |
| Build `getAll` | **Fans out** — one output item per build, each carrying that build's own fields merged onto the input item's JSON. A job with no builds produces no output items at all. |

Build fields come straight from the Jenkins API — reference them downstream by expression, e.g. `{{ $json.number }}` or `{{ $json.url }}`.

**Triggering reports acceptance, not completion.** A successful trigger means Jenkins queued the build; it carries no build number and does not wait for the build to finish. Poll with a Build `getAll` afterwards if you need the result.

## Usage Examples

- Trigger a Jenkins build job
- Trigger a parameterized Jenkins build
- Copy an existing Jenkins job
- Create a new Jenkins job from XML config
- List recent builds for a Jenkins job
- Safely restart the Jenkins server
- Put Jenkins in quiet down mode

## Example Configuration

Trigger a job:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "job",
    "operation": "trigger",
    "job": "my-build-job"
  }
}
```

Trigger a parameterized job:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "job",
    "operation": "triggerParams",
    "job": "my-parameterized-job",
    "param": {
      "params": [
        { "name": "BRANCH_NAME", "value": "main" },
        { "name": "BUILD_TYPE", "value": "release" }
      ]
    }
  }
}
```

Copy an existing job:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "job",
    "operation": "copy",
    "job": "existing-job",
    "newJob": "copied-job"
  }
}
```

Create a job from its XML config:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "job",
    "operation": "create",
    "newJob": "new-build-job",
    "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project></project>"
  }
}
```

Put Jenkins into quiet mode with a reason:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "instance",
    "operation": "quietDown",
    "reason": "Maintenance window for security updates"
  }
}
```

Cancel quiet mode:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "instance",
    "operation": "cancelQuietDown"
  }
}
```

Restart once the running builds have finished:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "instance",
    "operation": "safeRestart"
  }
}
```

Shut down immediately:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "instance",
    "operation": "exit"
  }
}
```

List every build of a job:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "build",
    "operation": "getAll",
    "job": "my-project-build",
    "returnAll": true
  }
}
```

List the ten most recent builds:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "build",
    "operation": "getAll",
    "job": "my-project-build",
    "returnAll": false,
    "limit": 10
  }
}
```

Trigger a deployment with environment-specific parameters:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "job",
    "operation": "triggerParams",
    "job": "deploy-to-staging",
    "param": {
      "params": [
        { "name": "ENVIRONMENT", "value": "staging" },
        { "name": "VERSION", "value": "{{ $json.version }}" },
        { "name": "NOTIFY_SLACK", "value": "true" }
      ]
    },
    "maxConcurrency": 5
  }
}
```

Pull the last 50 builds for monitoring:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "build",
    "operation": "getAll",
    "job": "nightly-integration-tests",
    "returnAll": false,
    "limit": 50,
    "maxConcurrency": 3
  }
}
```

Clone a template job into a new one:

```json
{
  "type": "jenkins",
  "parameters": {
    "resource": "job",
    "operation": "copy",
    "job": "template-nodejs-build",
    "newJob": "new-microservice-build"
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Trigger Jenkins CI/CD builds, manage jobs, control instance state, and retrieve build history via the Jenkins REST API.

### Behavior notes

- **Instance operations can shut Jenkins down and make it unresponsive.** Some of them may not be available depending on how your instance is hosted. Treat Restart, Safely Restart, Shutdown and Safely Shutdown as production-affecting actions.
- **The job must be set up to accept parameters** before Trigger with Parameters will work. Parameter names have to match the names declared in the job configuration; unknown names are ignored by Jenkins.
- **Get the XML for Create from an existing job** by adding `config.xml` to the end of that job's URL, then edit it to taste.
- **Copy needs both names.** Job Name is the source job to copy from and New Job Name is the job to create.
- **Job names come from the dashboard URL**, in the form `{baseUrl}/job/{jobName}/`. Jobs inside folders need the path Jenkins shows there.
- **Return All lists every build Jenkins reports** for the job; with it off, the list is capped at Limit, newest first.