Como obter o token de API para Jenkins

86

Estou tentando usar o Jenkins Rest api. Nas instruções, diz que preciso ter a chave de API. Eu olhei todas as páginas de configuração para encontrá-lo. Como faço para obter a chave de API para Jenkins?

Luke101
fonte
Se você deseja o mesmo programaticamente, pode dar uma olhada em Recuperar programaticamente o token da API REST do Jenkins
footyapps27

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 .

Brian Walker
fonte
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 
Raiva
fonte
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}

Carlos Leonardo Camilo Vargas
fonte