Como obter o token de API para Jenkins


Respostas:


139

Desde Jenkins 2.129, a configuração do token da API mudou :

Agora você pode ter vários tokens e nomeá-los. Eles podem ser revogados individualmente.

  1. Faça login no Jenkins.
  2. Clique no seu nome (canto superior direito).
  3. Clique em Configurar (menu do lado esquerdo).
  4. Use o botão "Adicionar novo token" para gerar um novo e nomeie-o.
  5. Você deve copiar o token ao gerá-lo, pois não será possível visualizar o token posteriormente.
  6. Revogue os tokens antigos quando não forem mais necessários.

Antes do Jenkins 2.129: Mostre o token de API da seguinte maneira:

  1. Faça login no Jenkins.
  2. Clique em seu nome (canto superior direito).
  3. Clique em Configurar (menu do lado esquerdo).
  4. Clique em Mostrar token de API .

O token da API é revelado.

Você pode alterar o token clicando no botão Change API Token .


2
existe alguma API para conseguir isso?
Madhu Avinash

2
este token expirou?
ndh103,

Show API Tokennão é mais válido, parece.
Saikat

1
@MadhuAvinash Veja minha resposta abaixo
RaGe

PARA SUA INFORMAÇÃO. No Jenkins 2.150.1, o botão "Adicionar novo token" não parece aparecer até que exista pelo menos um token. Verifique a resposta de @Rage para saber como fazer isso sem a IU.
m__ de

17

A maneira não IU de fazer esta postagem Jenkins 2.129 é:

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

que retorna:

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

Pré Jenkins 2.129

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

2
Você precisa incluir o fragmento CSRF ( wiki.jenkins.io/display/JENKINS/Remote+access+API ) em sua solicitação curl, caso contrário, ele falhará com 403: Proibido.
MKesper de

E se o nome de usuário for nome@domínio.com, habilitamos o logon único no servidor jenkins
SibiCoder

2
@SibiCoder Tente substituir '@' por '% 40'
Tim Kist

1

Testado em Jenkins 2.225

Depois de fazer pesquisas por várias horas, pude encontrar a resposta:

O token Api é usado em vez do token CSFR. Porém, o que acontece se você quiser fazer autenticação de qualquer outro cliente (POSTMAN, CLI. Curl, etc).

Primeiro você precisa obter um token CSFR e salvar as informações em um cookie com --cookie-jar

  • SOLICITAÇÃO

curl -s --cookie-jar / tmp / cookies -u nome de usuário: senha http: // localhost: 8080 / crumbIssuer / api / json

  • RESPOSTA

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

Então, podemos ler o cookie --cookiee gerar o novo token:

  • SOLICITAÇÃO

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

  • RESPOSTA

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.