我正在尝试使用jenkins rest api。在说明中它说我需要有api密钥。我查看了整个配置页面以找到它。我如何获得詹金斯的API密钥?
答案 0 :(得分:93)
自Jenkins 2.129以来,API令牌配置has changed:
您现在可以拥有多个令牌并为其命名。它们可以单独撤销。
在Jenkins 2.129之前:按如下方式显示API令牌:
显示API令牌。
您可以点击更改API令牌按钮更改令牌。
答案 1 :(得分:2)
Jenkins 2.129发布的非UI方法是:
curl 'https://<jenkinsURL>/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' \
--data 'newTokenName=foo' \
--user username:Password
返回:
{
"status": "ok",
"data": {
"tokenName": "foo",
"tokenUuid": "<uuid>",
"tokenValue": "<redacted>"
}
}
答案 2 :(得分:2)
在Jenkins 2.225中进行了测试
研究了几个小时后,我找到了答案:
使用Api令牌代替CSFR令牌。但是,如果要从任何其他客户端(POSTMAN,CLI。curl等)进行身份验证,会发生什么情况。
首先,您需要获取CSFR令牌,然后使用--cookie-jar
curl -s --cookie-jar / tmp / cookies -u用户名:密码 http:// localhost:8080 / crumbIssuer / api / json
{ “ _class”:“ hudson.security.csrf.DefaultCrumbIssuer”, “ crumb”:“ bc92944100d12780cfc251c9255f3f323a475562b4ee0d8b9cc6e4121f50a450”, “ crumbRequestField”:“ Jenkins-Crumb”}
然后,我们可以使用--cookie
读取cookie并生成新令牌:
卷曲-X开机自检-H 詹金斯·克鲁姆(Jenkins-Crumb): --cookie / tmp / cookies http:// localhost:8080 / me / descriptorByName / jenkins.security.ApiTokenProperty / generateNewToken?newTokenName = \ your_token_name -u用户名:密码
{ “ status”:“确定”, “数据”:{ “ tokenName”:“我的Android令牌”, “ tokenUuid”:“ c510e26c-b2e8-4021-bf79-81d1e4c112af”, “ tokenValue”:“ 11a2a0c91913d1391d8e8cb155ca714581” }