我尝试使用以下方法通过 curl 命令执行(触发)jenkins 作业(不是参数化作业),但它显示了这些结果。我的 jenkins 版本是 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
它也给出了同样的错误。它说 Forbidden 403
之后,我为 jenkins 用户创建了一个 API 令牌并尝试了。
curl -X POST -u auto:testingdae6dc22a73048e6d596e7b0 http://jenkins_server/job/job_name/build?token=wefiytgwiefiweihfqweiodf
但它也是一样,它说禁止 403
其实我也关注过这个答案。https://www.nczonline.net/blog/2015/10/triggering-jenkins-builds-by-url/ 这对我来说也不起作用。
每次都是 403 forbidden。我想我无法正确验证 jenkins 用户。
答案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