Jak uzyskać token API dla Jenkins


86

Próbuję użyć interfejsu API Jenkins Rest. W instrukcjach jest napisane, że muszę mieć klucz interfejsu API. Przeszukałem wszystkie strony konfiguracyjne, aby go znaleźć. Jak uzyskać klucz API dla Jenkins?


Jeśli chcesz tego samego programistycznie, możesz
rzucić

Odpowiedzi:


139

Od wersji Jenkins 2.129 konfiguracja tokena API uległa zmianie :

Możesz teraz mieć wiele tokenów i nadawać im nazwy. Można je odwołać indywidualnie.

  1. Zaloguj się do Jenkins.
  2. Kliknij swoje imię (prawy górny róg).
  3. Kliknij Konfiguruj (menu po lewej stronie).
  4. Użyj przycisku „Dodaj nowy token”, aby wygenerować nowy, a następnie nazwij go.
  5. Musisz skopiować token podczas generowania go, ponieważ później nie możesz go wyświetlić.
  6. Odwołaj stare żetony, gdy nie są już potrzebne.

Przed Jenkins 2.129: Pokaż token API w następujący sposób:

  1. Zaloguj się do Jenkins.
  2. Kliknij swoje imię (prawy górny róg).
  3. Kliknij Konfiguruj (menu po lewej stronie).
  4. Kliknij Pokaż token API .

Ujawniono token API.

Możesz zmienić token, klikając przycisk Zmień token API .


2
czy jest jakiś interfejs API, aby to uzyskać?
Madhu Avinash

2
czy ten token straci ważność?
ndh103

Show API Tokenwydaje się, że już nie obowiązuje.
Saikat

1
@MadhuAvinash Zobacz moją odpowiedź poniżej
RaGe

FYI. W Jenkins 2.150.1 przycisk „Dodaj nowy token” nie pojawia się, dopóki nie istnieje co najmniej jeden token. Sprawdź odpowiedź @ RaGe, aby dowiedzieć się, jak to zrobić bez interfejsu użytkownika.
m__

17

Sposób wykonania tego postu Jenkins 2.129 bez interfejsu użytkownika to:

curl 'https://<jenkinsURL>/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' \
--data 'newTokenName=foo' \
--user username:Password

która zwraca:

{
  "status": "ok",
  "data": {
    "tokenName": "foo",
    "tokenUuid": "<uuid>",
    "tokenValue": "<redacted>"
  }
}

Pre Jenkins 2.129.1

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

2
Musisz dołączyć crumb CSRF ( wiki.jenkins.io/display/JENKINS/Remote+access+API ) w swoim żądaniu curl, w przeciwnym razie nie powiedzie się z 403: Forbidden.
MKesper

Co jeśli nazwa użytkownika to nazwa@domena.com,
włączyliśmy

2
@SibiCoder Spróbuj zamienić „@” na „% 40”
Tim Kist

1

Przetestowano w Jenkins 2.225

Po kilku godzinach poszukiwań mogłem znaleźć odpowiedź:

Zamiast tokena CSFR używany jest token API. Jednak co się stanie, jeśli chcesz dokonać uwierzytelnienia z dowolnego innego klienta (POSTMAN, CLI, curl, itp.).

Najpierw musisz zdobyć token CSFR i zapisać informacje w pliku cookie z rozszerzeniem --cookie-jar

  • ŻĄDANIE

curl -s --cookie-jar / tmp / cookies -u nazwa użytkownika: hasło http: // localhost: 8080 / crumbIssuer / api / json

  • ODPOWIEDŹ

{"_class": "hudson.security.csrf.DefaultCrumbIssuer", "crumb": "bc92944100d12780cfc251c9255f3f323a475562b4ee0d8b9cc6e4121f50a450", "crumbRequestField": "CrumbRequestField": "

Następnie możemy odczytać plik cookie --cookiei wygenerować nowy token:

  • ŻĄDANIE

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

  • ODPOWIEDŹ

{"status": "ok", "data": {"tokenName": "mój token Androida", "tokenUuid": "c510e26c-b2e8-4021-bf79-81d1e4c112af", "tokenValue": "11a2a0c91913d1391d8ca8cb155}

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.