[jenkins] Jenkins 용 API 토큰을 얻는 방법

젠킨스 나머지 API를 사용하려고합니다. 지침에는 API 키가 필요하다고 나와 있습니다. 나는 그것을 찾기 위해 모든 구성 페이지를 살펴 보았다. 젠킨스 용 API 키는 어떻게 얻나요?



답변

Jenkins 2.129 이후 API 토큰 구성 이 변경되었습니다 .

이제 여러 토큰을 갖고 이름을 지정할 수 있습니다. 개별적으로 취소 할 수 있습니다.

  1. Jenkins에 로그인합니다.
  2. 이름을 클릭하십시오 (오른쪽 상단 모서리).
  3. 구성 (왼쪽 메뉴)을 클릭 합니다.
  4. “새 토큰 추가”버튼을 사용하여 새 토큰을 생성 한 다음 이름을 지정합니다.
  5. 나중에 토큰을 볼 수 없으므로 토큰을 생성 할 때 복사해야합니다.
  6. 더 이상 필요하지 않으면 오래된 토큰을 취소하십시오.

Jenkins 2.129 이전 : 다음과 같이 API 토큰을 표시합니다.

  1. Jenkins에 로그인합니다.
  2. 이름 (오른쪽 상단 모서리)을 클릭합니다.
  3. 구성 (왼쪽 메뉴)을 클릭 합니다.
  4. Show API Token을 클릭 합니다 .

API 토큰이 공개됩니다.

API 토큰 변경 버튼 을 클릭하여 토큰을 변경할 수 있습니다 .


답변

이 게시물 Jenkins 2.129를 수행하는 비 UI 방법은 다음과 같습니다.

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

다음을 반환합니다.

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

Pre Jenkins 2.129

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


답변

Jenkins 2.225에서 테스트 됨

몇 시간 동안 조사를 한 후에 답을 찾을 수있었습니다.

CSFR 토큰 대신 API 토큰이 사용됩니다. 그러나 다른 클라이언트 (POSTMAN, CLI. curl 등)에서 인증을하려면 어떻게됩니까?

먼저 CSFR 토큰을 얻고 쿠키에 정보를 저장해야합니다. --cookie-jar

  • 의뢰

curl -s –cookie-jar / tmp / cookies -u 사용자 이름 : 암호 http : // localhost : 8080 / crumbIssuer / api / json

  • 응답

{ “_class”: “hudson.security.csrf.DefaultCrumbIssuer”, “crumb”: “bc92944100d12780cfc251c9255f3f323a475562b4ee0d8b9cc6e4121f50a450”, “crumbRequestField”: “Jenkins-Crumb”}

그런 다음 쿠키를 읽고 --cookie새 토큰을 생성 할 수 있습니다 .

  • 의뢰

curl -X POST -H ‘Jenkins-Crumb : your_crumb_token_generated_above’–cookie / tmp / cookies http : // localhost : 8080 / me / descriptorByName / jenkins.security.ApiTokenProperty / generateNewToken? newTokenName = \ your_token_name -u username : password

  • 응답

{ “status”: “ok”, “data”: { “tokenName”: “my android token”, “tokenUuid”: “c510e26c-b2e8-4021-bf79-81d1e4c112af”, “tokenValue”: “11a2a0c91913d1391d8e8cb155ca714581”}}


답변