Tools Connect: Jenkins
Allstacks pulls data about triggered build runs, and what, if any, processes triggered them so you can identify potential bottlenecks.
For Jenkins, the supported integration method is Custom CI/CD.
Instead of Allstacks pulling data from Jenkins, Jenkins sends build events directly to Allstacks using a secure webhook.
This approach is:
Reliable
Fast
Works with any Jenkins setup
Avoids timeout and polling issues
How it works
Jenkins runs a job
Jenkins sends job data to Allstacks
Allstacks records the job and updates metrics
No polling is required.
Prerequisites
Before connecting Jenkins to Allstacks, make sure the following are completed.
1. Create a Custom CI/CD Service
A Custom CI/CD service must already exist in your Allstacks organization.
To create one:
Go to your organization’s Tools page in Allstacks
Click Tool
Search for Custom CI/CD
Select it and name it
JenkinsClick Add Tool
This service will be used to route your Jenkins build data into Allstacks.
2. Create a Personal Access Token (PAT)
A Personal Access Token (PAT) is required to authenticate requests sent from Jenkins to Allstacks.
To create a PAT:
Open the org menu (top-right corner, click org name)
Go to Personal Access Tokens
Click Create PAT
Enter:
Jenkinsfor the Token nameSelect
Webhook TokenAn expiration date (optional)
Click Submit
Save the token securely
You will use this token in your webhook requests as a Bearer token in the Authorization header.
Webhook Endpoint
Send data using the following endpoint:
POST
https://app.allstacks.com/webhook/company/<company_id>/cicd_jobAuthentication
Each request must include these headers:
Authorization: Bearer <token>
Content-Type: application/jsonRequired Fields
These fields must be included in every request:
Field | Type | Description |
|---|---|---|
| String | Your job’s ID (does not need to be globally unique) |
| String | Full commit SHA (40 or 64 chars) |
| Integer | Custom CD Service ID in Allstacks |
| Integer | Start time (epoch seconds) |
| Integer | Job length (seconds) |
| String |
|
| String | One is required |
Optional Fields
Field | Type | Default |
|---|---|---|
| String |
|
| String |
|
You may include up to 20 additional properties to enrich your job data.
Format:
Supported types:
string
integer
float
duration (seconds)
timestamp (epoch seconds)
Values may be single or lists (maximum 20 items).
Example: curl (Linux / macOS)
Example: Groovy (Windows / Jenkins Pipeline)
Pre-Flight Checklist
Before testing your integration:
Endpoint URL is correct
Authorization header is set
Token is valid
All required fields are included
Timestamps are in epoch seconds
Jenkins can reach
app.allstacks.comover HTTPS (port 443)A test request is sent using curl or Postman
Troubleshooting
401 Unauthorized
Authentication token is missing or invalid
→ Verify Authorization header and token
400 Bad Request
Payload is missing required fields or contains invalid values
→ Validate required fields and formats
Job not appearing in Allstacks
→ Verify service_id
→ Confirm repo_name or repo_id
→ Log the response code from Jenkins
Network errors
→ Ensure outbound HTTPS (443) access to app.allstacks.com
Mini FAQ
Is this the recommended Jenkins integration?
Yes. This is the supported and intended method.
Do I need a Jenkins API token?
No. Only an Allstacks bearer token is required.
Does this work behind a firewall or VPN?
Yes. Jenkins only needs outbound HTTPS access.
How many optional properties can I send?
Up to 20.
What time format should I use?
Epoch seconds.
What happens if triggered_by is missing?
It defaults to Custom CD Agent.