AgentSkillsCN

jenkins

当用户询问Jenkins作业、构建、CI状态,或构建失败问题时使用。支持SW与QA环境下的Jenkins实例。

SKILL.md
--- frontmatter
name: jenkins
description: Use when user asks about Jenkins jobs, builds, CI status, or build failures. Supports SW and QA Jenkins instances.

Jenkins Integration

Instances

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

  1. Get last build info: lastBuild/api/json
  2. Check result field
  3. If failed, fetch consoleText and 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

IssueSolution
401 UnauthorizedCheck ~/.netrc has correct machine entry
403 ForbiddenAPI token may have expired, regenerate
Connection refusedCheck VPN connection
Job not foundURL-encode job name, check folder path