Jenkins için API Token nasıl alınır


86

Jenkins rest api'sini kullanmaya çalışıyorum. Talimatlarda api anahtarına sahip olmam gerektiğini söylüyor. Bulmak için tüm konfigürasyon sayfalarına baktım. Jenkins için API anahtarını nasıl edinebilirim?


Aynısını programlı olarak istiyorsanız, Programlı olarak Jenkins REST API Token alma
footyapps27

Yanıtlar:


141

Jenkins 2.129'dan beri API belirteci yapılandırması değişti :

Artık birden fazla jetonunuz olabilir ve bunları adlandırabilirsiniz. Bireysel olarak iptal edilebilirler.

  1. Jenkins'te oturum açın.
  2. Adınızı tıklayın (sağ üst köşe).
  3. Yapılandır'ı tıklayın (sol taraftaki menü).
  4. Yeni bir tane oluşturmak için "Yeni Jeton Ekle" düğmesini kullanın ve ardından adlandırın.
  5. Daha sonra jetonu görüntüleyemeyeceğiniz için jetonu oluşturduğunuzda kopyalamanız gerekir.
  6. Artık ihtiyaç duyulmadığında eski jetonları iptal edin.

Jenkins 2.129'dan önce: API belirtecini aşağıdaki gibi gösterin:

  1. Jenkins'te oturum açın.
  2. Adınızı tıklayın (sağ üst köşe).
  3. Yapılandır'ı tıklayın (sol taraftaki menü).
  4. API Jetonunu Göster'i tıklayın .

API belirteci ortaya çıkar.

API Jetonunu Değiştir düğmesini tıklayarak jetonu değiştirebilirsiniz .


2
bunu almak için herhangi bir api var mı?
Madhu Avinash

2
bu jetonun süresi dolacak mı?
ndh103

Show API Tokenartık geçerli değil gibi görünüyor.
Saikat

1
Aşağıda Cevabımı bakın @MadhuAvinash
Rage

FYI. Jenkins 2.150.1'de "Yeni Belirteç Ekle" düğmesi, en az bir belirteç var olana kadar görünmüyor. Kullanıcı arayüzü olmadan nasıl yapılacağını öğrenmek için lütfen @ RaGe'nin yanıtını kontrol edin.
m__

18

Bu yazıyı Jenkins 2.129 yapmanın UI olmayan yolu şudur:

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

döndüren:

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

Ön Jenkins 2.129

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

2
Curl isteğinize CSRF kırıntısını ( wiki.jenkins.io/display/JENKINS/Remote+access+API ) eklemeniz gerekir , aksi takdirde 403: Yasak ile başarısız olur.
MKesper

Ya kullanıcı adı
name@domain.com

2
@SibiCoder '@' yerine '% 40' yazmayı deneyin
Tim Kist

2

Jenkins 2.225'te test edildi

Birkaç saat araştırma yaptıktan sonra cevabı bulabildim:

CSFR belirteci yerine Api Token kullanılır. Ancak, başka bir istemciden (POSTMAN, CLI. Curl, vb.) Kimlik doğrulaması yapmak isterseniz ne olur.

Öncelikle bir CSFR belirteci almanız ve bilgileri bir çereze kaydetmeniz gerekir. --cookie-jar

  • İSTEK

curl -s --cookie-jar / tmp / cookies -u kullanıcı adı: şifre http: // localhost: 8080 / crumbIssuer / api / json

  • TEPKİ

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

Ardından çerezi okuyabilir --cookieve yeni jetonu oluşturabiliriz:

  • İSTEK

curl -X POST -H 'Jenkins-Crumb: your_crumb_token_generated_above' --cookie / tmp / cookies http: // localhost: 8080 / me / descriptorByName / jenkins.security.ApiTokenProperty / generateNewToken? newTokenName = \ kullanıcı adı: parola

  • TEPKİ

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.