如何通过 curl 命令远程触发詹金斯作业

如何通过 curl 命令远程触发詹金斯作业

我尝试使用以下方法通过 curl 命令执行(触发)jenkins 作业(不是参数化作业),但它显示了这些结果。我的 jenkins 版本是 Jenkins 2.73.3

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

但是它显示 Forbidden 403 在此处输入图片描述

因此,我为该作业创建了一个身份验证令牌 在此处输入图片描述

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 令牌

为该 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

相关内容