Jenkins REST API 保姆级使用教程:从入门到实战(附常见问题解决)

前言

Jenkins 作为最流行的开源持续集成与持续交付(CI/CD)工具之一,不仅提供了强大的 Web UI,还支持通过 REST API 实现自动化操作。无论是触发构建、获取构建状态,还是管理插件和用户权限,REST API 都能让你将 Jenkins 深度集成到自己的系统中。

本文将手把手带你掌握 Jenkins REST API 的核心用法,并提供实用示例和常见问题解决方案,助你轻松实现 Jenkins 自动化!


一、什么是 Jenkins REST API?

Jenkins 提供了一套基于 HTTP 协议的 RESTful 接口,允许外部程序以编程方式与其交互。通过这些接口,你可以:

  • 触发或取消构建任务
  • 获取 Job 和 Build 的详细信息
  • 创建、更新或删除 Job
  • 管理节点(Agent)
  • 查询系统信息(如插件、版本等)

所有操作均通过标准 HTTP 方法(GET、POST、PUT、DELETE)完成,返回格式通常为 JSON 或 XML(默认为 XML,但可指定 Accept 头切换为 JSON)。


二、启用 Jenkins REST API

1. 确保 Jenkins 已启用远程访问

Jenkins 默认开启 REST API,但需注意以下几点:

  • 安全设置:若启用了“全局安全配置”中的“登录认证”,则必须提供有效凭证。
  • CSRF 保护:Jenkins 默认启用防止跨站请求伪造(CSRF),调用修改类 API(如 POST/DELETE)时需携带 Crumb。

2. 获取 API Token(推荐方式)

为避免使用明文密码,建议为用户生成 API Token:

  1. 登录 Jenkins → 点击右上角用户名 →Configure
  2. 滚动到API Token区域 → 点击Add new Token
  3. 输入描述(如my-script-token)→ 点击Generate
  4. 复制并保存 Token(仅显示一次!)

注意:Token 具有与密码相同的权限,请妥善保管。


三、基础 API 使用方法

1. 查看 API 文档

Jenkins 自带 API 文档。在任意页面 URL 后加上/api/即可查看,例如:

http://your-jenkins/job/my-job/api/

添加?pretty=true可美化输出:

http://your-jenkins/api/json?pretty=true

2. 常用 API 端点速查

功能URL 示例方法
获取所有 Job 列表/api/jsonGET
获取某个 Job 信息/job/MyJob/api/jsonGET
触发构建/job/MyJob/buildPOST
触发带参数构建/job/MyJob/buildWithParametersPOST
获取某次构建详情/job/MyJob/123/api/jsonGET
删除 Job/job/MyJob/doDeletePOST
获取系统信息/systemInfo/api/jsonGET

所有路径均相对于 Jenkins 根路径(如http://localhost:8080


四、实战示例(含代码)

示例 1:使用 curl 触发无参构建

# 替换 YOUR_JENKINS_URL、USERNAME、API_TOKEN、JOB_NAMEcurl-X POST\http://YOUR_JENKINS_URL/job/JOB_NAME/build\--user USERNAME:API_TOKEN

示例 2:触发带参数的构建

curl-X POST\"http://YOUR_JENKINS_URL/job/JOB_NAME/buildWithParams?BRANCH=main&ENV=prod"\--user USERNAME:API_TOKEN

参数通过 URL Query String 传递(适用于简单参数)。复杂参数建议使用 POST 表单。

示例 3:使用 Python 调用 API(推荐 requests 库)

importrequestsimportjson JENKINS_URL="http://your-jenkins"USERNAME="admin"API_TOKEN="your-api-token"JOB_NAME="my-app-build"# 获取 Crumb(用于 CSRF 防护)auth=(USERNAME,API_TOKEN)crumb_url=f"{JENKINS_URL}/crumbIssuer/api/json"crumb_resp=requests.get(crumb_url,auth=auth)crumb=crumb_resp.json()['crumb']# 触发带参数构建build_url=f"{JENKINS_URL}/job/{JOB_NAME}/buildWithParameters"params={"BRANCH":"develop","DEPLOY_ENV":"staging"}headers={"Jenkins-Crumb":crumb}response=requests.post(build_url,params=params,auth=auth,headers=headers)ifresponse.status_code==201:print("构建已成功触发!")else:print(f"失败:{response.status_code}-{response.text}")

示例 4:获取最近一次构建状态

resp=requests.get(f"{JENKINS_URL}/job/{JOB_NAME}/lastBuild/api/json",auth=auth)build_info=resp.json()print(f"构建 #{build_info['number']}状态:{build_info['result']}")

五、常见问题及解决办法(重点章节)

在实际使用 Jenkins REST API 时,开发者常遇到以下问题。本节提供针对性解决方案。

问题 1:403 Forbidden 错误

现象:调用 API 返回403 No valid crumb was included in the request

原因:Jenkins 启用了 CSRF 保护,但请求未携带有效的 Crumb。

解决

  1. 先调用/crumbIssuer/api/json获取 Crumb;
  2. 在后续 POST/DELETE 请求头中添加Jenkins-Crumb: <crumb值>

示例见上文 Python 代码。


问题 2:401 Unauthorized

现象:返回401 Invalid password/token for user

排查步骤

  • 确认用户名拼写正确;
  • 确认使用的是API Token而非登录密码(尤其在启用了“API Token only”策略时);
  • 检查 Jenkins 用户是否具有对应 Job 的权限(如“Build”权限)。

建议:在 Jenkins 中为自动化脚本创建专用账号,并分配最小必要权限。


问题 3:返回 XML 而非 JSON

现象:即使请求了/api/json,仍返回 XML。

原因:某些旧版本 Jenkins 或特定插件可能忽略 Accept 头。

解决

  • 显式添加请求头:Accept: application/json
  • 或在 URL 后加?tree=...来定制返回字段(推荐)
curl-H"Accept: application/json"\http://jenkins/job/myjob/api/json?pretty=true\--user user:token

问题 4:带参数构建不生效

现象:调用buildWithParameters后,参数未传入 Job。

原因

  • Job 未配置为“参数化构建”;
  • 参数名大小写不匹配;
  • 使用了错误的 Content-Type(如 multipart/form-data 但未正确构造表单)。

解决

  1. 确保 Job 设置中勾选了This project is parameterized
  2. 优先使用URL Query String 方式传参(简单可靠);
  3. 若必须用 POST body,设置Content-Type: application/x-www-form-urlencoded并用data=传递参数。

问题 5:无法删除 Job(405 Method Not Allowed)

现象:尝试 DELETE/job/name返回 405。

原因:Jenkins 不支持标准 DELETE 方法删除 Job。

正确做法
使用 POST 请求访问/job/NAME/doDelete

curl-X POST\http://jenkins/job/myjob/doDelete\--user user:token\-H"Jenkins-Crumb:$(crumb)"

六、最佳实践建议

  1. 使用 API Token 而非密码:更安全,可单独吊销。
  2. 缓存 Crumb:Crumb 通常在会话有效期内可复用,无需每次请求都获取。
  3. 限制权限:为自动化脚本创建专用 Jenkins 用户,仅授予必要权限。
  4. 处理重试与超时:网络波动可能导致请求失败,建议加入重试机制。
  5. 日志记录:记录 API 调用结果,便于排查问题。

七、结语

掌握 Jenkins REST API,意味着你拥有了将 CI/CD 流程深度自动化的钥匙。无论是与 GitLab/GitHub 集成、自研运维平台对接,还是实现智能监控告警,REST API 都是不可或缺的桥梁。


参考资料

  • Jenkins 官方 API 文档
  • Jenkins Crumb Issuer 说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1149735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手玩转S7-1200伺服绝对定位(附翻车实录)

品牌型号 西门子PLC S7-1200程序 伺服绝对定位系统教程 软件 博图V15.1&#xff0c;V16 IO分配表&#xff0c;西门子采购清单搞自动化的人都知道&#xff0c;伺服绝对定位在产线上简直就是刚需。今天拿西门子S7-1200和博图V16开刀&#xff0c;聊聊怎么搞一套不断电也能记住位置…

导师推荐8个一键生成论文工具,本科生搞定毕业论文!

导师推荐8个一键生成论文工具&#xff0c;本科生搞定毕业论文&#xff01; AI 工具让论文写作不再难 对于许多本科生来说&#xff0c;撰写毕业论文是一项既复杂又耗时的任务。从选题到文献综述&#xff0c;再到数据分析和结论撰写&#xff0c;每一个环节都可能成为“拦路虎”。…

没GPU怎么玩AI分类?万能分类器云端镜像2块钱搞定

没GPU怎么玩AI分类&#xff1f;万能分类器云端镜像2块钱搞定 引言&#xff1a;产品经理的AI分类验证困境 作为产品经理&#xff0c;当你灵光一闪想到"用AI分类器优化业务流程"时&#xff0c;兴奋之余马上会面临三大现实难题&#xff1a; 硬件门槛&#xff1a;公司…

玩转西门子全家桶:从PID到Modbus的实战全攻略

西门子PID程序西门子PLC 1200和多台G120西门子变频器Modbud RTU通讯&#xff0c;带西门子触摸屏&#xff0c;带变频器参数/Modbus通讯报文详细讲解&#xff0c;PID自写FB块无密码可以直接应用到程序&#xff0c;PID带手动自动功能&#xff0c;可手动调节PID, 注释详细/CAD电气最…

混元MT1.5双模型深度解读|从云端到边缘的翻译解决方案

混元MT1.5双模型深度解读&#xff5c;从云端到边缘的翻译解决方案 随着全球化进程加速&#xff0c;高质量、低延迟、可定制的机器翻译能力已成为企业出海、内容本地化和跨语言交互的核心需求。腾讯混元团队开源的 HY-MT1.5 系列翻译模型&#xff0c;凭借“一大一小”双模型协同…

STM32串口DMA通讯+源码+原理图+说明。 很多时候,单片机需要进行多机通讯,但是如果使用...

STM32串口DMA通讯源码原理图说明。 很多时候&#xff0c;单片机需要进行多机通讯&#xff0c;但是如果使用以往的串口通讯&#xff0c;势必会占用CPU时间&#xff0c;影响单片机的实时性&#xff0c;如果才用.DMA的方式就行数据通讯&#xff0c;就可以很好的保证了实时性。搞嵌…

紧急项目救星:临时GPU租赁3小时搞定AI分类任务

紧急项目救星&#xff1a;临时GPU租赁3小时搞定AI分类任务 引言&#xff1a;当广告创意遇上AI deadline 广告公司最怕什么&#xff1f;不是客户改需求&#xff0c;而是突然接到一个"明天就要"的AI提案。上周我就遇到这样一个真实案例&#xff1a;某4A公司接到汽车品…

芯谷科技—D5534:高性能低噪声运算放大器,开启精准信号处理新时代

一、产品简介D5534 是由绍兴芯谷科技有限公司推出的高性能低噪声运算放大器&#xff0c;专为满足高精度、低失真信号处理需求而设计。它集成了卓越的直流和交流特性&#xff0c;具备极低的噪声、高输出驱动能力、高单位增益带宽和最大输出摆幅带宽、低失真以及高转换速率等优势…

江湖救急!做预测的朋友们肯定遇到过BP神经网络训练卡壳的情况。今天咱们唠唠怎么用遗传算法和粒子群给BP神经网络打鸡血,直接上MATLAB代码边说边练

遗传算法、粒子群算法优化BP神经网络 #预测#机器学习#MATLAB# 我这是关于预测的先看原始BP神经网络的痛点代码&#xff1a; net feedforwardnet([10,5]); % 经典的双隐层结构 net.trainParam.epochs 1000; [net,tr] train(net,input,target); % 标准训练流程 这老兄容易卡在…

从下载到API服务:AutoGLM-Phone-9B本地化部署完整流程

从下载到API服务&#xff1a;AutoGLM-Phone-9B本地化部署完整流程 1. AutoGLM-Phone-9B 模型简介与核心价值 1.1 多模态轻量化模型的技术定位 AutoGLM-Phone-9B 是一款专为移动端和边缘设备优化的多模态大语言模型&#xff0c;融合了视觉理解、语音识别与文本生成三大能力。…

AutoGLM-Phone-9B核心机制全曝光|9B参数下的跨模态融合方案

AutoGLM-Phone-9B核心机制全曝光&#xff5c;9B参数下的跨模态融合方案 1. 多模态模型架构全景解析 AutoGLM-Phone-9B 是一款专为移动端优化的多模态大语言模型&#xff0c;融合视觉、语音与文本处理能力&#xff0c;支持在资源受限设备上高效推理。该模型基于 GLM 架构进行轻…

分类模型效果优化秘诀:云端超参搜索,成本比本地低75%

分类模型效果优化秘诀&#xff1a;云端超参搜索&#xff0c;成本比本地低75% 1. 为什么需要云端超参搜索&#xff1f; 想象你正在参加Kaggle比赛&#xff0c;每次调整模型参数后&#xff0c;都需要用本地显卡训练2小时才能看到效果。这种"训练-等待-调整"的循环就像…

锂电池系统的控制核心就像给手机充电时那个默默守护的管家——BMS(电池管理系统)。今天咱们聊聊它的几个关键技术点,顺带用代码片段看看这些理论如何落地

BMS系统充放电 SOC SOH控制模型: 电池的CCCV 充电控制 电压平衡策略 &#xff08;包括温度热量影响)&#xff1b; 电池冷却系统 仿真 &#xff1b; 电池参数估计&#xff1b; SOC参数估计、SOH参数估计&#xff08;卡尔曼滤波&#xff09;&#xff1b; 非常适合电池系统建模原…

揭秘7款免费AI写论文工具:瑞达写作1天搞定带文献综述

引言&#xff1a;90%的学生不知道的论文写作“黑科技”&#xff0c;导师私藏的效率密码 你是否经历过这样的绝望&#xff1f; 导师催论文初稿的前一天&#xff0c;你还在对着空白文档发呆&#xff0c;文献综述堆了几十篇却理不清逻辑&#xff0c;公式输入错了十几次&#xff0…

老铁们今天咱们玩点硬核的,手把手教你们用MATLAB搞时间序列预测。咱不整那些虚的理论,直接上能跑起来的代码,重点解决自回归阶数和隐层节点数这两个头疼问题

时间序列bp自回归神经网络预测matlab程序代码 &#xff0c;含最佳 自回归阶数和最佳隐层节点数的确定。 代码直接运行即可&#xff0c;数据excel格式。先看数据怎么处理&#xff08;假设数据存在data.xlsx第一列&#xff09;&#xff1a; raw_data xlsread(data.xlsx); data …

移动端多模态大模型实践|基于AutoGLM-Phone-9B快速部署与验证

移动端多模态大模型实践&#xff5c;基于AutoGLM-Phone-9B快速部署与验证 1. 引言&#xff1a;移动端多模态AI的落地挑战与机遇 随着大语言模型&#xff08;LLM&#xff09;技术的迅猛发展&#xff0c;如何在资源受限的移动设备上实现高效、低延迟的多模态推理&#xff0c;已…

伺服技术前沿揭秘:汇川详述CANopen及CIA402协议支持性能技术前沿汇川解析伺服系统...

汇川 伺服 源码 620N 620P 支持EtherC AT Canopen CIA402协议。 位置环 速度环 惯量辩识 转矩观测 摩擦补偿最近在折腾汇川620系列伺服的源码实现&#xff0c;发现他们家这套方案确实藏着不少干货。特别是620N/620P双胞胎兄弟&#xff0c;不仅硬件平台扎实&#xff0c;协议…

轰动开源圈!这个能自主思考的AI Agent项目,让程序员集体破防

这一天终于来了 说实话&#xff0c;做开源项目搬运工这么多年&#xff0c;见过无数AI项目&#xff0c;有花里胡哨的&#xff0c;有吹上天的&#xff0c;但真正让我坐直了身子的项目&#xff0c;真的不多。 今天要说的这个&#xff0c;不一样。 它叫MiroThinker&#xff0c;一个…

MATLAB仿真牵引逆变器IGBT故障模拟系统

matlab仿真逆变器故障模拟 牵引逆变器IGBT故障模拟系统最近在研究牵引逆变器的故障模拟&#xff0c;特别是IGBT的故障。这玩意儿在电力电子里可是个大头&#xff0c;搞不好就炸了。所以&#xff0c;模拟一下故障情况&#xff0c;提前预防&#xff0c;还是挺有必要的。今天就用M…

学霸同款2026 AI论文写作软件TOP9:继续教育必备测评

学霸同款2026 AI论文写作软件TOP9&#xff1a;继续教育必备测评 2026年学术写作工具测评&#xff1a;为继续教育者量身打造的高效指南 在当前知识更新速度不断加快的背景下&#xff0c;继续教育群体对学术写作工具的需求日益增长。无论是撰写论文、报告还是完成课程作业&#x…