Ich versuche die Jenkins Rest API zu verwenden. In der Anleitung steht, dass ich den API-Schlüssel haben muss. Ich habe alle Konfigurationsseiten durchgesehen, um sie zu finden. Wie bekomme ich den API-Schlüssel für Jenkins?
Ich versuche die Jenkins Rest API zu verwenden. In der Anleitung steht, dass ich den API-Schlüssel haben muss. Ich habe alle Konfigurationsseiten durchgesehen, um sie zu finden. Wie bekomme ich den API-Schlüssel für Jenkins?
Antworten:
Seit Jenkins 2.129 hat sich die API-Token-Konfiguration geändert :
Sie können jetzt mehrere Token haben und diese benennen. Sie können einzeln widerrufen werden.
Vor Jenkins 2.129: Zeigen Sie das API-Token wie folgt an:
Das API-Token wird angezeigt.
Sie können das Token ändern, indem Sie auf die Schaltfläche API-Token ändern klicken .
Show API Token
ist anscheinend nicht mehr gültig.
Die Nicht-UI-Methode für diesen Beitrag Jenkins 2.129 lautet:
curl 'https://<jenkinsURL>/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' \
--data 'newTokenName=foo' \
--user username:Password
was zurückgibt:
{
"status": "ok",
"data": {
"tokenName": "foo",
"tokenUuid": "<uuid>",
"tokenValue": "<redacted>"
}
}
Pre Jenkins 2.129
curl http://<username>:<password>@<jenkins-url>/me/configure
Getestet in Jenkins 2.225
Nachdem ich einige Stunden recherchiert hatte, konnte ich die Antwort finden:
Das Api-Token wird anstelle des CSFR-Tokens verwendet. Was passiert jedoch, wenn Sie die Authentifizierung von einem anderen Client (POSTMAN, CLI. Curl usw.) durchführen möchten?
Zuerst müssen Sie ein CSFR-Token erhalten und die Informationen in einem Cookie mit speichern --cookie-jar
curl -s --cookie-jar / tmp / cookies -u Benutzername: Passwort http: // localhost: 8080 / crumbIssuer / api / json
{"_class": "hudson.security.csrf.DefaultCrumbIssuer", "crumb": "bc92944100d12780cfc251c9255f3f323a475562b4ee0d8b9cc6e4121f50a450", "crumbRequestField"
Dann können wir den Cookie mit lesen --cookie
und den neuen Token generieren:
curl -X POST -H 'Jenkins-Crumb: your_crumb_token_generated_above' --cookie / tmp / cookies http: // localhost: 8080 / me / deskriptorByName / jenkins.security.ApiTokenProperty / generateNewToken? newTokenName = \ your_token_name -u Benutzername:
{"status": "ok", "data": {"tokenName": "my android token", "tokenUuid": "c510e26c-b2e8-4021-bf79-81d1e4c112af", "tokenValue": "11a2a0c91913d1391d8e8c815"