1. Jenkins API调用
2. Jenkins API
2.1. 认证
这里既支持密码也支持 Token 的方式
curl http://jenkins.example.com/job/jobName/api/json -u admin:admin
在 HTTP 协议头中添加认证信息:
curl http://jenkins.example.com/job/jobName/api/json --header "Authorization: Basic echo -n user:passwd | base64
"
2.1.1. 跨站请求伪造保护
默认情况下,Jenkins开启了跨站请求伪造,对于Job的一些POST操作需要通过下面的命令来获取相应的Token curl -u admin:admin http://jenkins.example.com/crumbIssuer/api/json curl -u admin:admin http://jenkins.example.com/job/demo/build -X POST --header "Jenkins-Crumb:cd4e9cfd7b15c80543aa3b12ee34ac153502812d42cb800bc37a690785929cf3"
2.2. 单个任务
2.2.1. 获取任务信息
curl -u admin:admin http://jenkins.example.com/job/demo/api/json?pretty=true
2.2.2. 触发构建
curl -u admin:admin -X POST http://jenkins.example.com/job/demo/build
2.2.3. 添加描述信息
curl -u admin:admin -X POST http://jenkins.example.com/job/jobName/submitDescription?description=hello
2.2.4. 禁用任务
curl -u admin:admin -X POST http://jenkins.example.com/job/jobName/disable
2.2.5. 启用任务
curl -u admin:admin -X POST http://jenkins.example.com/job/jobName/enable
2.2.6. 删除任务
curl -u admin:admin -X POST http://jenkins.example.com/job/jobName/doDelete
2.3. 构建历史
2.3.1. 获取构建历史的控制台日志
curl -u admin:admin http://jenkins.example.com/job/DevOps-Demo-Commit-Stage/51/consoleText --header "Jenkins-Crumb: e73f381c3299de3b169fbce0153f0fb8"
2.3.2. 获取部分日志,并返回是否还有未输出的日志。协议头中的 X-Text-Size 为日志内容的大小,X-More-Data 的值如果为 true 的话则标示还有未输出的日志。
curl -u admin:admin http://jenkins.example.com/job/jobName/1/logText/progressiveText?start=0
2.3.3. 删除构建历史
curl -u admin:admin -X POST http://jenkins.example.com/job/jobName/1/doDelete
2.4. 下面是特定情况的构建:
2.4.1. 最近一次构建的日志
curl -u admin:admin http://jenkins.example.com/job/DevOps-Demo-Commit-Stage/lastBuild/consoleText
2.4.2. 最近一次失败构建的日志
curl -u admin:admin http://jenkins.example.com/job/jobName/lastFailedBuild/consoleText
2.4.3. 最近一次未成功的构建日志
curl -u admin:admin http://jenkins.example.com/job/jobName/lastUnsuccessfulBuild/consoleText
2.4.4. 最近一次完成的构建日志
curl -u admin:admin http://jenkins.example.com/job/jobName/lastCompletedBuild/consoleText
2.5. 插件管理
2.5.1. 上传插件
curl -u admin:admin http://jenkins.example.com/pluginManager/uploadPlugin -F "name=@target/demo.hpi"
2.6. 重启
2.6.1. 必须使用 POST 请求
curl -u admin:admin -X POST http://jenkins.example.com/safeRestart
带参数的构建
curl -k --user <username:password/API token> -X POST ${JENKINS_URL}/job/<particular job>/build?delay=${delay_in_seconds}sec --data-urlencode json='{"parameter": [{"name":"version", "value":"'$version'"},{"name":"environment","value":"'$environment'"}]}'
Format: curl -X POST -u <username:password/API token> "${JENKINS_URL}/job/<particular job>/buildWithParameters?[key1=value1]&[key2=value2]"