Як отримати API-маркер для Jenkins


86

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


Якщо ви хочете те саме програмно, тоді ви можете подивитися на Програмне отримання API Jenkins REST API Token
footyapps27

Відповіді:


139

Починаючи з Jenkins 2.129, конфігурація маркера API змінилася :

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

  1. Увійдіть до Дженкінса.
  2. Клацніть своє ім'я (правий верхній кут).
  3. Клацніть Налаштувати (ліве меню).
  4. Використовуйте кнопку "Додати новий маркер", щоб створити новий, а потім назвіть його.
  5. Ви повинні скопіювати маркер, коли його генеруєте, оскільки потім ви не зможете переглянути маркер.
  6. Відкликайте старі жетони, коли вони більше не потрібні.

До Jenkins 2.129: Покажіть маркер API таким чином:

  1. Увійдіть до Дженкінса.
  2. Клацніть своє ім'я (верхній правий кут).
  3. Клацніть Налаштувати (ліве меню).
  4. Клацніть Показати маркер API .

Розкрито маркер API.

Ви можете змінити маркер, натиснувши кнопку Змінити маркер API .


2
чи є якийсь API, щоб отримати це?
Мадху Авінаш

2
чи термін дії цього маркера закінчився?
ndh103,

Show API Tokenбільше не діє, здається.
Сайкат

1
@MadhuAvinash Дивіться мою відповідь нижче
RaGe

FYI. На Jenkins 2.150.1 кнопка "Додати новий маркер", здається, не з'являється, поки не існує хоча б один маркер. Будь ласка, перевірте відповідь @ RaGe, як це зробити без інтерфейсу користувача.
m__

17

Неінтерфейсний спосіб зробити це повідомлення Дженкінс 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>"
  }
}

Попередньо Дженкінс 2.129

curl http://<username>:<password>@<jenkins-url>/me/configure 

2
Вам потрібно включити крихту CSRF ( wiki.jenkins.io/display/JENKINS/Remote+access+API ) до вашого запиту на завивання, інакше це не вдасться з 403: Заборонено.
MKesper

Що робити, якщо ім’я користувача ім’я@domain.com, ми ввімкнули єдиний вхід на сервері
jenkins

2
@SibiCoder Спробуйте замінити "@" на "% 40"
Тім Кіст,

1

Випробувано в Jenkins 2.225

Провівши дослідження протягом декількох годин, я міг знайти відповідь:

Замість маркера CSFR використовується маркер Api. Однак що станеться, якщо ви хочете здійснити автентифікацію з будь-якого іншого клієнта (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", "crumb": "bc92944100d12780cfc251c9255f3f323a475562b4ee0d8b9cc6e4121f50a450", "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 / generatedNewToken? newTokenName = \ your_token_name -u

  • ВІДПОВІДЬ

{"status": "ok", "data": {"tokenName": "my android token", "tokenUuid": "c510e26c-b2e8-4021-bf79-81d1e4c112af", "tokenValue": "11a2a0c91913d1391d8e8cb151ca8ca8cb15151ca8ca8cb1515

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.