用RESTAPI远程访问你的Jenkins
Jenkins提供了功能强大的远程访问API,使得用户可以通过REST风格的接口对其进行远程控制。无论是触发任务,创建任务,还是管理视图,都可以通过简单的HTTP请求来完成。Jenkins的API支持多种语言的包装器,包括Python、Java和Ruby,使开发者可以根据自己的编程环境选择合适的工具进行集成。本文详细介绍了如何通过REST API配置和管理Jenkins实例,包括如何解决跨域访问问题,如何使用Python、Java和Ruby的API包装器等内容。
Jenkins 的远程访问 API
Jenkins 为其功能提供了远程访问 API,支持多种语言接口,如 REST API、Python、Java 和 Ruby 包装接口。这使得开发者可以在不同的编程环境中远程控制 Jenkins。

CSRF 跨域保护解决方案
当直接调用 Jenkins 接口时,可能会遇到 HTTP ERROR 403 No valid crumb was included in the request 的错误。这是因为默认情况下,Jenkins 的接口不允许跨域请求。我们可以通过修改 Jenkins 的配置来解决此问题。
配置步骤
首先,进入 Jenkins 容器并修改配置文件 jenkins.sh,添加 -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 参数。
# 进入 Jenkins 容器
$ docker exec -u root -it jenkins /bin/bash
# 修改配置文件
$ vim /usr/local/bin/jenkins.sh
然后重启 Jenkins 容器:
# 重启 Jenkins
$ docker restart jenkins
配置完成后,打开 Jenkins 的“系统管理-全局安全配置”,确认设置已生效。

常用接口介绍
Jenkins 提供了一系列的 API 接口,支持通过 HTTP 请求来进行任务的触发、创建和管理。
触发任务执行
可以通过 HTTP POST 请求触发 Jenkins 任务的执行。例如,无参任务 parallelsAlwaysFailFast 可以这样触发:
curl -X POST 'http://192.168.56.114:8080/job/parallelsAlwaysFailFast/build' --user admin:admin123
对于带参数的任务,如 pipeline_variables,需调用 buildWithParameters 接口:
curl -X POST 'http://192.168.56.114:8080/job/pipeline_variables/buildWithParameters' --user admin:admin123 --data ENV=prod
创建任务
要在 Jenkins 中创建任务,可以使用 POST 请求发送 config.xml 文件到 Jenkins 服务器。
curl -L 'http://192.168.56.114:8080/createItem?name=api_job_test'
-H 'Content-Type: application/xml'
--user admin:admin123
--data ''
Jenkins API 接口支持的 SDK
Jenkins 提供了多种 SDK 来支持 API 调用,帮助开发者在不同语言环境下更方便地操作 Jenkins。
Python API 包装器
Python 的 JenkinsAPI、Python-Jenkins、api4jenkins 和 aiojenkins 是针对 Jenkins REST API 的 Python 包装器,提供面向对象的接口,使得通过 Python 控制 Jenkins 更加简便。
Java API 包装器
jenkins-rest 是一个 Java 项目,提供对 Jenkins REST API 的访问,支持通过编程方式进行作业提交、监控等操作。
Ruby API 包装器
Jenkins API 客户端是 Ruby 的包装器,使用 JSON API 来控制 Jenkins,支持作业和视图的创建和管理。
参考
通过本文的介绍,您可以更好地利用 Jenkins 的远程访问 API 来简化持续集成的管理和操作过程。
FAQ
问:如何通过 REST API 远程访问 Jenkins?
- 答:Jenkins 提供了多种语言接口的远程访问 API,包括 REST API、Python、Java 和 Ruby 包装接口。这些接口允许开发者在不同的编程环境中远程控制 Jenkins,从而简化持续集成的管理和操作过程。
问:如何解决 Jenkins API 的 CSRF 跨域请求问题?
- 答:当直接调用 Jenkins 接口时,可能会遇到
HTTP ERROR 403 No valid crumb was included in the request的错误。这是因为 Jenkins 默认启用了 CSRF 保护。可以通过进入 Jenkins 容器,修改jenkins.sh配置文件,添加-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true参数,然后重启 Jenkins 来解决。
问:如何使用 Jenkins API 触发任务执行?
- 答:可以通过
HTTP POST请求来触发 Jenkins 任务的执行。对于无参任务,可以直接使用build接口;对于带参数的任务,需要使用buildWithParameters接口,并在请求中附加参数数据。
问:如何通过 Jenkins API 创建新任务?
- 答:可以使用
POST请求将config.xml文件发送到 Jenkins 服务器来创建新任务。请求需要包括任务名称和有效的 XML 配置数据。
问:Jenkins API 可以通过哪些 SDK 进行调用?
- 答:Jenkins 提供了多种 SDK 来支持 API 调用,包括 Python 的 JenkinsAPI、Python-Jenkins、api4jenkins 和 aiojenkins,Java 的 jenkins-rest,以及 Ruby 的 Jenkins API 客户端。这些 SDK 提供了面向对象的接口,帮助开发者在各自语言环境中操作 Jenkins 更加便捷。
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- Yahoo Finance API – 完整指南
- 使用 DEEPSEEK AI 构建应用程序:它能(和不能)做什么
- 如何获取 Figma 开放平台 API Key 密钥(分步指南)
- 大模型推理框架汇总
- 大模型 API 异步调用优化:高效并发与令牌池设计实践
- 支付宝国际版在国内使用:如何实现无缝支付体验?
- API接口安全性设计,项目中该如何保证API接口安全?
- REST API:关键概念、最佳实践和优势
- API测试:初学者终极指南 – Apidog
- API Mocking:你需要了解的一切 – Apidog
- 带有Logo和设计功能的二维码API:揭示8大应用场景
- 如何构建用于LLM微调的数据集 – MonsterAPI博客