如何透過curl指令遠端觸發jenkins作業

如何透過curl指令遠端觸發jenkins作業

我嘗試使用以下方法透過curl命令執行(觸發)jenkins作業(不是參數化作業),但它顯示了這些結果。我的詹金斯版本是詹金斯2.73.3

curl -X POST -u jenkins_user_name:jenkins_user_passwd http://jenkins_server/job/job_name/build

但它說禁止 403 在此輸入影像描述

因此,我為該作業建立了一個身份驗證令牌 在此輸入影像描述

curl -X POST http://jenkins_server/job/job_name/build?token=wefiytgwiefiweihfqweiodf

它也給了同樣的錯誤。上面寫著“禁止 403”

之後,我為 jenkins 用戶建立了一個 API 令牌並進行了嘗試。 在此輸入影像描述

curl -X POST -u auto:testingdae6dc22a73048e6d596e7b0 http://jenkins_server/job/job_name/build?token=wefiytgwiefiweihfqweiodf

但它也是一樣的,它說Forbidden 403

其實我也遵循了這個答案。https://www.nczonline.net/blog/2015/10/triggering-jenkins-builds-by-url/ 這對我來說也不起作用。

每次,都是403禁止。我想我無法正確驗證詹金斯用戶的身份。

答案1

找到了答案。其實這些步驟都是正確的。我想提一下正確的步驟。

在 Jenkins 中建立一個用戶,您可以使用該用戶密碼或 API 令牌來觸發 Jenkins 作業。但為該用戶建立 API 令牌要好得多。但兩種方式都運作得很好。

但是你必須為 Jenkins Job 建立一個身份驗證令牌

在此輸入影像描述

使用密碼

curl -I -u auto:<userpasswd> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

使用 API 令牌

為該 Jenkins 使用者建立 API 令牌 在此輸入影像描述

curl -I -u auto:<user_api_token> http://<jenkins_Server>/job/test/build?token=wefiytgwiefiweihfqweiodf

這些是結果,使用詹金斯用戶密碼jenkins 用戶 API 令牌

在此輸入影像描述

實際上你也可以發送這個請求,而不需要「-I」。

curl -u auto:<jenkins_user_token> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

curl -u auto:<jenkins_user_password> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

答案2

快轉到 2023 年

您需要傳遞 2 個令牌才能從腳本/bash 遠端執行您的作業。
你需要:

  1. apiToken 來驗證您的身分。該值是從 JENKINS_URL/me/configure 建立的。另請檢查這裡用於文件
  2. 您在啟用「觸發器遠端建置」時所建立的另一個作業身份驗證令牌。

以下是使用 2 個參數執行作業的範例,您可以調整以完成您的任務。

PARAM1_VALUE=<param1_value>
PARAM2_VALUE=<param2_vale>
USERNAME=dummy_user_name
JENKINS_URL="http://10.xxx.x.xxx:8080"
JOB_TOKEN="<value>" # you create this token when you enable Job>Configure>Build Triggers>Trigger builds remotely
LOGIN_API_TOKEN="<value>" #get this value from JENKINS_URL/me/configure 

curl -L --user $USERNAME:$LOGIN_API_TOKEN "$JENKINS_URL/job/JobName/buildWithParameters?token=$JOB_TOKEN&param1_name=$PARAM1_VALUE&param2_name=$PARAM2_VALUE"

答案3

要配置這些權限:

  • 點選Manage Jenkins
  • 點選Configure Global Security
  • 消除Prevent Cross Site Request Forgery exploits
  • 點選save

相關內容