
我嘗試使用以下方法透過curl命令執行(觸發)jenkins作業(不是參數化作業),但它顯示了這些結果。我的詹金斯版本是詹金斯2.73.3
curl -X POST -u jenkins_user_name:jenkins_user_passwd http://jenkins_server/job/job_name/build
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 令牌
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 遠端執行您的作業。
你需要:
- apiToken 來驗證您的身分。該值是從 JENKINS_URL/me/configure 建立的。另請檢查這裡用於文件
- 您在啟用「觸發器遠端建置」時所建立的另一個作業身份驗證令牌。
以下是使用 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¶m1_name=$PARAM1_VALUE¶m2_name=$PARAM2_VALUE"
答案3
要配置這些權限:
- 點選
Manage Jenkins
- 點選
Configure Global Security
- 消除
Prevent Cross Site Request Forgery exploits
- 點選
save