Jenkins API 403错误,禁止用户无法发布路径作业/构建版本

nwwlzxa7  于 2023-03-07  发布在  Jenkins
关注(0)|答案(1)|浏览(259)

我正在尝试使用以下命令通过Jenkins API触发作业:

curl -X POST https://<myserver>:8008/job/my-test-job/build?token=<mytoken>

我通过单击我的名字-〉配置-〉凭证并添加一个新的凭证,然后将结果值复制到这里来生成令牌。
但是,我得到了以下错误:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot post path \"/job/my-test-job/build\"",
  "reason": "Forbidden",
  "details": {},
  "code": 403
}

我错过了什么?

vatpfxk5

vatpfxk51#

在远程触发作业的请求中,您需要适当的访问令牌和Jenkins crumb。
以下命令需要curl和jq。在同一会话中执行。

# Change the following appropriately
JENKINS_URL="http://localhost:8080"
JENKINS_USER=admin
JENKINS_USER_PASS=admin

"吃面包屑"

JENKINS_CRUMB=$(curl -u "$JENKINS_USER:$JENKINS_USER_PASS" -s --cookie-jar /tmp/cookies $JENKINS_URL'/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')

获取访问令牌

ACCESS_TOKEN=$(curl -u "$JENKINS_USER:$JENKINS_USER_PASS" -H $JENKINS_CRUMB -s \
                    --cookie /tmp/cookies $JENKINS_URL'/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' \
                    --data 'newTokenName=GlobalToken' | jq -r '.data.tokenValue')

然后

curl -X POST -H $JENKINS_CRUMB -u $JENKINS_USER:$ACCESS_TOKEN "https://<myserver>:8008/job/my-test-job/build?token=<mytoken>"

相关问题