Как получить токен API для Jenkins

86

Я пытаюсь использовать api отдыха jenkins. В инструкции написано, что мне нужен ключ api. Я просмотрел все страницы конфигурации, чтобы найти его. Как получить ключ API для jenkins?

Люк101
источник
Если вы хотите то же самое программно, вы можете взглянуть на Программно получить
токен

Ответы:

139

Начиная с Jenkins 2.129 конфигурация токена API изменилась :

Теперь вы можете иметь несколько жетонов и давать им имена. Их можно отозвать индивидуально.

  1. Войдите в Jenkins.
  2. Щелкните свое имя (в правом верхнем углу).
  3. Щелкните Настроить (меню слева).
  4. Используйте кнопку «Добавить новый токен», чтобы создать новый, затем назовите его.
  5. Вы должны скопировать токен при его создании, так как после этого вы не сможете просмотреть токен.
  6. Отзовите старые токены, когда они больше не нужны.

До Jenkins 2.129: покажите токен API следующим образом:

  1. Войдите в Jenkins.
  2. Щелкните свое имя (в правом верхнем углу).
  3. Щелкните Настроить (меню слева).
  4. Щелкните Показать токен API .

Токен API раскрывается.

Вы можете изменить токен, нажав кнопку « Изменить токен API» .

Брайан Уокер
источник
2
есть ли какой-нибудь api, чтобы получить это?
Мадху Авинаш
2
срок действия этого токена истек?
ndh103 02
Show API Tokenуже не действует похоже.
Saikat
1
@MadhuAvinash См. Мой ответ ниже
RaGe
К вашему сведению. В Jenkins 2.150.1 кнопка «Добавить новый токен» не появляется, пока не появится хотя бы один токен. Пожалуйста, проверьте ответ @ RaGe, чтобы узнать, как это сделать без пользовательского интерфейса.
m__
17

Другой способ сделать этот пост 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>"
  }
}

Pre Jenkins 2,129

curl http://<username>:<password>@<jenkins-url>/me/configure 
RaGe
источник
2
Вам нужно включить крошку CSRF ( wiki.jenkins.io/display/JENKINS/Remote+access+API ) в свой запрос curl, иначе он не удастся с 403: Forbidden.
MKesper
Что, если имя пользователя name@domain.com, мы включили единый вход на сервере
jenkins
2
@SibiCoder Попробуйте заменить '@' на '% 40'
Тим Кист
1

Протестировано в Jenkins 2.225

После нескольких часов исследования я нашел ответ:

Токен Api используется вместо токена CSFR. Однако что произойдет, если вы захотите выполнить аутентификацию от любого другого клиента (POSTMAN, CLI. Curl и т. Д.).

Сначала вам нужно получить токен CSFR и сохранить информацию в файле cookie с помощью --cookie-jar

  • ЗАПРОС

curl -s --cookie-jar / tmp / cookies -u имя пользователя: пароль http: // localhost: 8080 / crumbIssuer / api / json

  • ОТВЕТ

{"_class": "hudson.security.csrf.DefaultCrumbIssuer", "крошка": "bc92944100d12780cfc251c9255f3f323a475562b4ee0d8b9cc6e4121f50a450", "crumbRequestField": "crumbRequestField": "crumbRequestField": "crumbRequestField": "

Затем мы можем прочитать файл cookie --cookieи сгенерировать новый токен:

  • ЗАПРОС

curl -X POST -H 'Jenkins-Crumb: your_crumb_token_generated_above' --cookie / tmp / cookies http: // localhost: 8080 / me / descriptorByName / jenkins.security.ApiTokenProperty / generateNewToken? newTokenName = \ your_token_name:

  • ОТВЕТ

{"status": "ok", "data": {"tokenName": "мой токен Android", "tokenUuid": "c510e26c-b2e8-4021-bf79-81d1e4c112af", "tokenValue": "11a2a0c91913d1391d8e814581155ca}

Карлос Леонардо Камило Варгас
источник