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 CSRF 配置

常用接口介紹

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 的 CSRF 跨域請求問題?

問:如何使用 Jenkins API 觸發任務執行?

問:如何通過 Jenkins API 創建新任務?

問:Jenkins API 可以通過哪些 SDK 進行調用?

上一篇:

JenkinsAPI文檔詳解

下一篇:

MinIO API是什么以及如何使用
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費