Jenkins Integration
Instances
| Name | URL | Shorthand |
|---|---|---|
| SW Jenkins | https://sw-jenkins-ctrl07.habana-labs.com | sw |
| QA Jenkins | https://qa-jenkins-ctrl02.habana-labs.com | qa |
Authentication
Uses ~/.netrc for credentials. Required entries:
code
machine sw-jenkins-ctrl07.habana-labs.com login USERNAME password API_TOKEN machine qa-jenkins-ctrl02.habana-labs.com login USERNAME password API_TOKEN
Generate API token: Jenkins → User → Configure → API Token → Add new token
Quick Reference
bash
# Base URLs
SW="https://sw-jenkins-ctrl07.habana-labs.com"
QA="https://qa-jenkins-ctrl02.habana-labs.com"
# List all jobs
curl -sn "$SW/api/json?tree=jobs[name,color]" | jq '.jobs[]'
# Job info
curl -sn "$SW/job/JOB_NAME/api/json"
# Last build status
curl -sn "$SW/job/JOB_NAME/lastBuild/api/json" | jq '{result,number,duration,timestamp}'
# Build history (last 10)
curl -sn "$SW/job/JOB_NAME/api/json?tree=builds[number,result,timestamp]{0,10}" | jq '.builds[]'
# Console output
curl -sn "$SW/job/JOB_NAME/BUILD_NUM/consoleText"
# Trigger build
curl -sn -X POST "$SW/job/JOB_NAME/build"
# Trigger with parameters
curl -sn -X POST "$SW/job/JOB_NAME/buildWithParameters?PARAM=value"
# Search jobs by name pattern
curl -sn "$SW/api/json?tree=jobs[name,color]" | jq '.jobs[] | select(.name | test("pattern"))'
# Get failing jobs
curl -sn "$SW/api/json?tree=jobs[name,color]" | jq '.jobs[] | select(.color | contains("red"))'
# Folder navigation (for jobs in folders)
curl -sn "$SW/job/FOLDER/job/SUBFOLDER/job/JOB_NAME/api/json"
URL Encoding
Job names with spaces or special characters need encoding:
bash
# Use --data-urlencode or manual encoding JOB=$(echo "My Job Name" | sed 's/ /%20/g') curl -sn "$SW/job/$JOB/api/json"
Common Workflows
Check why a build failed
- •Get last build info:
lastBuild/api/json - •Check result field
- •If failed, fetch
consoleTextand search for error patterns
Find jobs matching pattern
bash
curl -sn "$SW/api/json?tree=jobs[name,url,color]" | jq '.jobs[] | select(.name | test("PATTERN"; "i"))'
Compare job status across instances
bash
for J in "$SW" "$QA"; do
echo "=== $J ==="
curl -sn "$J/job/JOB_NAME/lastBuild/api/json" | jq '{result,number}'
done
Troubleshooting
| Issue | Solution |
|---|---|
| 401 Unauthorized | Check ~/.netrc has correct machine entry |
| 403 Forbidden | API token may have expired, regenerate |
| Connection refused | Check VPN connection |
| Job not found | URL-encode job name, check folder path |