1. 创建 api token
// 创建 api token
// 拷贝 token
// api token 字符串
110a2b3f1ae219ae0b599509cb6706df37
[warning]注意提示,如果你的jenkins 不是 https 方式访问,就不要使用复制按钮了
2. jenkins job 构建操作
// 执行 testjob 构建(无参数)
$ curl -X POST --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
http://192.168.11.207:8080/job/testjob/build
// 停止 testjob 中号码为 3 的构建
$ curl -X POST --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
http://192.168.11.207:8080/job/testjob/3/stop
// 停止 testjob 中 上一次的构建
...
script {
def previousBuildNumber = env.BUILD_NUMBER.toInteger() - 1
sh "curl -X POST --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 http://192.168.11.207:8080/job/testjob/${previousBuildNumber}/stop"
}
...
// 执行构建(带参数)
$ curl -X POST --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
--data param1=1 --data param2=2 -k --silent -L\
http://192.168.11.207:8080/job/testjob/build
- -k: 允许通过不安全的连接(例如未签名或自签名证书的HTTPS连接)进行通信。这在开发环境中可能有用,但在生产环境中应谨慎使用。
--silent
: 静默模式。不会显示进度表单或错误信息,使输出更干净。- -L: 如果服务器报告请求页面已移动到不同的位置(通过发送一个重定向),此选项将让curl继续向新位置请求。
// 删除操作
$ curl -X POST --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
http://192.168.11.207:8080/job/testjob/3/doDelete // 删除一个构建
$ curl -X POST --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
http://192.168.11.207:8080/job/testjob/doDelete // 删除 job
// 禁用和启用 job
$ curl -X POST --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
http://192.168.11.207:8080/job/testjob/disable
$ curl -X POST --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
http://192.168.11.207:8080/job/testjob/enable
3. jenkins api 操作示例
// 触发构建
$ curl -i -L -X POST --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
http://jenkinstest.xiodi.cn/view/testview/job/testjob/build
HTTP/1.1 201 Created
Server: nginx/1.24.0 (Ubuntu)
Date: Tue, 18 Mar 2025 03:48:47 GMT
Content-Length: 0
Connection: keep-alive
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
Location: http://jenkinstest.xiodi.cn/queue/item/17/
通过响应数据可以知道当前构建的queue number为17。
// 查看执行状态
$ curl -i -L -X POST --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
http://jenkinstest.xiodi.cn/queue/item/17/api/json
$ curl -L --silent -X POST --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
http://jenkinstest.xiodi.cn/queue/item/17/api/json | json_pp
// 通过queue number读取对应的build number和构建结果:
$ curl -k -L --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
"http://jenkinstest.xiodi.cn/job/testjob/api/xml?tree=builds\[id,number,result,queueId\]&xpath=//build\[queueId=17\]"
<build _class="org.jenkinsci.plugins.workflow.job.WorkflowRun"><id>9</id><number>9</number><queueId>17</queueId><result>SUCCESS</result></build>
从输出中看到,构建号码为 9,结果为 SUCCESS
// 读取构建日志
$ curl -k -L --user xiodiadmin:110a2b3f1ae219ae0b599509cb6706df37 \
http://192.168.11.207:8080/job/testjob/9/consoleText
Started by user xiodiadmin
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/testjob
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Hello)
[Pipeline] echo
Hello World
[Pipeline] sh
+ sleep 60
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS