| name | jenkins |
| description | Jenkins CI/CD 操作。用于:(1) 触发 Jenkins 任务构建 (2) 查询任务状态和构建历史 (3) 获取构建日志 (4) 操作 Jenkins 节点和配置 |
Jenkins Skill
配置
JENKINS_URL=http://jenkins.example.com:8080
JENKINS_USER=admin
JENKINS_TOKEN=your-api-token
获取 Token
- 登录 Jenkins
- 点击右上角用户名 → Configure
- 在 "API Token" 部分点击 "Add new Token"
- 复制生成的 token
操作示例
source ~/.openclaw/workspace/.env
触发构建
source ~/.openclaw/workspace/.env
curl -X POST "$JENKINS_URL/job/JOB_NAME/buildWithParameters" \
-u "$JENKINS_USER:$JENKINS_TOKEN" \
-d "PARAM1=value1&PARAM2=value2"
curl -X POST "$JENKINS_URL/job/JOB_NAME/build" \
-u "$JENKINS_USER:$JENKINS_TOKEN"
查询任务状态
source ~/.openclaw/workspace/.env
curl -s "$JENKINS_URL/api/json?tree=jobs[name,url,color]" \
-u "$JENKINS_USER:$JENKINS_TOKEN" | jq '.jobs[]'
curl -s "$JENKINS_URL/job/JOB_NAME/api/json" \
-u "$JENKINS_USER:$JENKINS_TOKEN"
curl -s "$JENKINS_URL/job/JOB_NAME/lastBuild/api/json" \
-u "$JENKINS_USER:$JENKINS_TOKEN"
获取构建日志
source ~/.openclaw/workspace/.env
curl -s "$JENKINS_URL/job/JOB_NAME/BUILD_NUMBER/consoleText" \
-u "$JENKINS_USER:$JENKINS_TOKEN"
curl -s "$JENKINS_URL/job/JOB_NAME/BUILD_NUMBER/logText/progressiveText" \
-u "$JENKINS_USER:$JENKINS_TOKEN"
停止/重启构建
source ~/.openclaw/workspace/.env
curl -X POST "$JENKINS_URL/job/JOB_NAME/BUILD_NUMBER/stop" \
-u "$JENKINS_USER:$JENKINS_TOKEN"
curl -X POST "$JENKINS_URL/job/JOB_NAME/disable" \
-u "$JENKINS_USER:$JENKINS_TOKEN"
curl -X POST "$JENKINS_URL/job/JOB_NAME/enable" \
-u "$JENKINS_USER:$JENKINS_TOKEN"
常用场景
- 触发构建: 传入参数启动构建任务
- 查看状态: 检查构建是否成功
- 获取日志: 查看构建失败原因
- 查询历史: 查看历史构建记录
使用场景
场景 1: 触发构建并等待结果
触发 CI 流水线并等待完成:
source ~/.openclaw/workspace/.env
BUILD_URL=$(curl -s -X POST "$JENKINS_URL/job/deploy-prod/buildWithParameters" \
-u "$JENKINS_USER:$JENKINS_TOKEN" \
-d "VERSION=1.0.0&ENV=prod" -w "%{url}")
while true; do
STATUS=$(curl -s "$BUILD_URL/api/json" -u "$JENKINS_USER:$JENKINS_TOKEN" | \
jq -r '.result')
if [[ "$STATUS" != "null" ]]; then
echo "Build $STATUS"
break
fi
sleep 10
done
场景 2: 回滚到上一个稳定版本
查询历史构建,找到上一个成功版本:
source ~/.openclaw/workspace/.env
LAST_SUCCESS=$(curl -s "$JENKINS_URL/job/my-app/api/json" \
-u "$JENKINS_USER:$JENKINS_TOKEN" | \
jq -r '.builds[].number | select(.result == "SUCCESS") | .number' | head -1)
curl -X POST "$JENKINS_URL/job/my-app/$LAST_SUCCESS/replay" \
-u "$JENKINS_USER:$JENKINS_TOKEN"
场景 3: 批量操作多个任务
触发多个项目同时构建:
source ~/.openclaw/workspace/.env
PROJECTS=("frontend" "backend" "api-gateway")
for proj in "${PROJECTS[@]}"; do
echo "Building $proj..."
curl -s -X POST "$JENKINS_URL/job/$proj/build" \
-u "$JENKINS_USER:$JENKINS_TOKEN" &
done
wait
echo "All builds triggered"