如何获取Jenkins的API令牌

时间:2017-08-02 16:19:53

标签: jenkins

我正在尝试使用jenkins rest api。在说明中它说我需要有api密钥。我查看了整个配置页面以找到它。我如何获得詹金斯的API密钥?

3 个答案:

答案 0 :(得分:93)

自Jenkins 2.129以来,API令牌配置has changed

您现在可以拥有多个令牌并为其命名。它们可以单独撤销。

  1. 登录Jenkins。
  2. 点击你的名字(右上角)。
  3. 点击配置(左侧菜单)。
  4. 使用“添加新标记”按钮生成新标记然后命名。
  5. 您必须在生成令牌时复制令牌,因为之后您无法查看令牌。
  6. 不再需要时撤销旧令牌。
  7. 在Jenkins 2.129之前:按如下方式显示API令牌:

    1. 登录Jenkins。
    2. 点击您的名字(右上角)。
    3. 点击配置(左侧菜单)。
    4. 点击显示API令牌
    5. 显示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

将信息保存在cookie中
  • 请求

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” }