我正在尝试使用Jenkins REST API。在说明中它说我需要有API密钥。我已经找遍了所有的配置页面来找到它。我如何获得Jenkins的API密钥?
laawzig21#
自Jenkins 2.129 API令牌配置has changed:您现在可以拥有多个令牌并为它们命名。它们可以单独撤销。1.登录到Jenkins。1.单击您的姓名(右上角)。1.单击配置(左侧菜单)。1.使用“添加新令牌”按钮生成一个新令牌,然后对其命名。1.您必须在生成令牌时复制令牌,因为以后无法查看令牌。1.当不再需要旧令牌时撤销旧令牌。Jenkins之前2.129:显示API标记,如下所示:1.登录到Jenkins。1.单击您的姓名(右上角)。1.单击配置(左侧菜单)。1.单击显示API标记。显示API令牌。您可以通过单击更改API令牌按钮来更改令牌。
klr1opcd2#
Jenkins 2.129的非用户界面方法是:
curl 'https://<jenkinsURL>/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' \ --data 'newTokenName=foo' \ --user username:Password
返回:
{ "status": "ok", "data": { "tokenName": "foo", "tokenUuid": "<uuid>", "tokenValue": "<redacted>" } }
Jenkins2.129
curl http://<username>:<password>@<jenkins-url>/me/configure
yebdmbv43#
经过几个小时的研究,我找到了答案:使用API标记而不是CSFR标记。但是,如果要从任何其他客户端(Postman、CLI、cURL等)进行验证,会发生什么情况?首先,您需要获取一个CSFR令牌,并使用--cookie-jar将信息保存在cookie中
--cookie-jar
用户名:密码:http://localhost:8080/crumbIssuer/api/json
如果您有任何问题,请与我们联系。"搜索请求字段":"Jenkins-克鲁姆"}然后,我们可以使用--cookie读取cookie并生成新令牌:
--cookie
用户名:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码
{"状态":"正常","数据":{"令牌名称":"我的Android令牌"、"tokenUuid":"令牌值":"""""""
xkrw2x1b4#
以下命令需要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')
连续API调用
您需要使用带有用户名沿着生成的crumb的令牌,而不是密码。
curl -u $JENKINS_USER:$ACCESS_TOKEN \ -H $JENKINS_CRUMB \ ..........
4条答案
按热度按时间laawzig21#
自Jenkins 2.129 API令牌配置has changed:
您现在可以拥有多个令牌并为它们命名。它们可以单独撤销。
1.登录到Jenkins。
1.单击您的姓名(右上角)。
1.单击配置(左侧菜单)。
1.使用“添加新令牌”按钮生成一个新令牌,然后对其命名。
1.您必须在生成令牌时复制令牌,因为以后无法查看令牌。
1.当不再需要旧令牌时撤销旧令牌。
Jenkins之前2.129:显示API标记,如下所示:
1.登录到Jenkins。
1.单击您的姓名(右上角)。
1.单击配置(左侧菜单)。
1.单击显示API标记。
显示API令牌。
您可以通过单击更改API令牌按钮来更改令牌。
klr1opcd2#
Jenkins 2.129的非用户界面方法是:
返回:
Jenkins2.129
yebdmbv43#
经过几个小时的研究,我找到了答案:
使用API标记而不是CSFR标记。但是,如果要从任何其他客户端(Postman、CLI、cURL等)进行验证,会发生什么情况?
首先,您需要获取一个CSFR令牌,并使用
--cookie-jar
将信息保存在cookie中请求
用户名:密码:http://localhost:8080/crumbIssuer/api/json
响应
如果您有任何问题,请与我们联系。"搜索请求字段":"Jenkins-克鲁姆"}
然后,我们可以使用
--cookie
读取cookie并生成新令牌:请求
用户名:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码
响应
{"状态":"正常","数据":{"令牌名称":"我的Android令牌"、"tokenUuid":"令牌值":"""""""
xkrw2x1b4#
如何生成Jenkins API标记
以下命令需要curl和jq。请在同一会话中执行它们。
"去拿面包屑"
获取访问令牌
连续API调用
您需要使用带有用户名沿着生成的crumb的令牌,而不是密码。