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?
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?
Odpowiedzi:
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.
Przed Jenkins 2.129: Pokaż token API w następujący sposób:
Ujawniono token API.
Możesz zmienić token, klikając przycisk Zmień token API .
Show API Token
wydaje się, że już nie obowiązuje.
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
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
curl -s --cookie-jar / tmp / cookies -u nazwa użytkownika: hasło http: // localhost: 8080 / crumbIssuer / api / json
{"_class": "hudson.security.csrf.DefaultCrumbIssuer", "crumb": "bc92944100d12780cfc251c9255f3f323a475562b4ee0d8b9cc6e4121f50a450", "crumbRequestField": "CrumbRequestField": "
Następnie możemy odczytać plik cookie --cookie
i wygenerować nowy token:
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
{"status": "ok", "data": {"tokenName": "mój token Androida", "tokenUuid": "c510e26c-b2e8-4021-bf79-81d1e4c112af", "tokenValue": "11a2a0c91913d1391d8ca8cb155}