메뉴 건너뛰기

XEDITION

프로그램

 

https://oingdaddy.tistory.com/237

 

 

Jenkins의 기능은 무궁무진한것 같다. 아직 빙산의 일각밖에 모른다는 생각도 든다. 이번에 포스팅할 내용은 Jenkins에서 제공하는 REST API를 사용해 Jenkins의 Job을 생성, 실행, 삭제, 결과조회 등을 해보는 것이다. Jenkins의 Job을 외부에서 실행시키는건 어떤 경우가 있을까? 정말 다양한 용도로 활용할 수 있겠지만 필자의 경우는 기존에 web에서 ondemand 형식으로도 동작하던 batch를 Jenkins에서 관리하게 되었고 이를 Jenkins의 REST API를 통해서 호출을 하는것이 목적이다. 


Jenkins에서의 설정

API 통신을 하기 위한 Token 발행

 

Jenkins 사용자 설정

 

Jenkins 메뉴 > 사람 > token 발행할 user 명 > 설정

 

 

Jenkins API Token
Jenkins API Token

 

설정에 들어가면 API Token 설정을 할 수 있는 메뉴가 있고 적당한 text를 입력 후 Add new Token 을 눌러서 Token을 발행한다. 그리고 이 값을 잘 저장해 놓도록 한다. 

 

Jenkins에서의 설정은 모두 끝이 났다. 사용자 token 정보만 생성해내면 된다. 아주 간단하다. 


Jenkins 원격 빌드 

위에서 계정정보에 대한 token 값을 받았다면 이것을 이용해서 Jenkins의 Job을 수행할 수 있다.

cmd 창을 열고 다음과 같이 작성해보자. 

> curl -X POST http://localhost:8080/job/failure-job/build --user admin:1129e4fbb4d66595ee59824a41d9d6a1cd -v

http://[jenkins URL]/job/[job name]/[jenkins에서 할일 (build, create..)] --user [jenkins계정]:[token]  

이렇게 넣고 실행을 시키면 

 

 

위와 같이 실행이 되는것을 확인할 수 있고 실제 Jenkins에 들어가서 해당 job을 살펴봐도 실행이 된것을 확인할 수 있다. 


REST API 사용방법

위에서 Job을 build 하는것 외에 다른 일들에 대해서도 REST API를 제공한다. 

 
 
Job 생성 [POST]
 
http://[jenkins url]/createItem?name=[job name]
 
 
 
Job 조회 [GET]
 
http://[jenkins url]/job/[job name]/api/json or xml
 
 
 
Job 빌드 수행 [POST]
 
http://[jenkins url]/job/[job name]/build
 
 
 
Job 빌드 결과 조회 [GET]
 
http://[jenkins url]/job/[job name]/[build number]/api/json or xml
 
 
 
Job 빌드 결과 조회 - 마지막 성공 빌드 [GET]
 
http://[jenkins url]/job/[job name]/lastStableBuild/api/json or xml

이중 마지막 성공 빌드에 대해서 한번 더 수행하는 모습을 보자면 

 
 
C:\Users\oing>curl -X GET http://localhost:18080/job/success-job/lastStableBuild/api/json --user admin:1129e4fbb4d66595ee59824a41d9d6a1cd -v
 
Note: Unnecessary use of -X or --request, GET is already inferred.
 
* Trying ::1...
 
* TCP_NODELAY set
 
* Trying 127.0.0.1...
 
* TCP_NODELAY set
 
* Connected to localhost (127.0.0.1) port 18080 (#0)
 
* Server auth using Basic with user 'admin'
 
> GET /job/success-job/lastStableBuild/api/json HTTP/1.1
 
> Host: localhost:18080
 
> Authorization: Basic YWRtaW46MTEyOWU0ZmJiNGQ2NjU5NWVlNTk4MjRhNDFkOWQ2YTFjZA==
 
> User-Agent: curl/7.55.1
 
> Accept: */*
 
>
 
< HTTP/1.1 200 OK
 
< Date: Thu, 31 Dec 2020 01:58:49 GMT
 
< X-Content-Type-Options: nosniff
 
< X-Jenkins: 2.249.2
 
< X-Jenkins-Session: 0e6ac1ef
 
< X-Frame-Options: deny
 
< Content-Type: application/json;charset=utf-8
 
< Content-Length: 644
 
< Server: Jetty(9.4.30.v20200611)
 
<
 
{"_class":"hudson.model.FreeStyleBuild","actions":[{"_class":"hudson.model.CauseAction","causes":[{"_class":"hudson.model.Cause$UserIdCause","shortDescription":"Started by user admin","userId":"admin","userName":"admin"}]},{},{},{}],"artifacts":[],"building":false,"description":null,"displayName":"#3","duration":5023,"estimatedDuration":6710,"executor":null,"fullDisplayName":"success-job #3","id":"3","keepLog":false,"number":3,"queueId":127,"result":"SUCCESS","timestamp":1603357730518,"url":"http://localhost:18080/job/success-job/3/","builtOn":"","changeSet":{"_class":"hudson.scm.EmptyChangeLogSet","items":[],"kind":null},"culprits":[]}* Connection #0 to host localhost left intact

대략 이런 모습으로 요청에 대한 결과를 마지막줄에 있는 json string or xml string으로 받아볼 수 있다. 

 

많이 사용되는것은 이정도이고 더 많은 정보를 원한다면 Jenkins의 우측 하단에 보면(혹은 http://[jenkins url]/api) 로 들어가보면 더 자세한 API 사용법에 대해 기술이 되어 있다. (사실 더 자세한지는 모르겠다..)

 

끝!

 

번호 제목 글쓴이 날짜 조회 수
212 안드로이드 생체 인식 인증 샘플 file 묵묵이 2024.12.19 0
211 Webbrowser 버전은 아래와 같이 변경 묵묵이 2024.04.28 1
210 HttpURLConnection 이용한 통신 / 파일 다운로드 묵묵이 2024.03.14 0
209 [Spring Boot] Gradle 로 빌드 하는 법 묵묵이 2024.02.08 0
208 Gradle 프로젝트 설정 묵묵이 2024.02.08 0
207 document.baseURI 를 지원하지 않는 이슈 묵묵이 2024.01.23 0
206 ios WkWebview 개발자 모드에서 로그를 볼수 없는 현상 묵묵이 2023.12.21 0
205 Cordova(코르도바) 설치, 프로젝트 생성 묵묵이 2023.12.14 0
204 웹뷰(WebView) 사용법 묵묵이 2023.12.13 0
203 안드로이드 기본값으로 휴대폰 기울기에 따라 자동회전 막기 묵묵이 2023.12.13 0
202 화면모드로 전환시 WebView가 리로드되는 현상 묵묵이 2023.12.13 0
201 xeni 엑셀 다운로드 관련 file 묵묵이 2023.12.08 2
200 CKeditor4 를 이용한 게시판 글쓰기 구현 및 사진 업로드 [1] 묵묵이 2023.11.23 1
» Jenkins REST API 호출로 Job 생성/실행/결과조회 하기 묵묵이 2023.09.22 1
198 키보드 변경시 앱 재시동 현상 묵묵이 2023.09.09 0
197 Tomcat(톰캣)에서 HTTP/2 (HTTP 2.0) 사용하기 묵묵이 2023.08.08 7
196 Eclipse Git Merge Conflict 해결 방법 [1] 묵묵이 2023.07.27 1
195 유튜브 무료 영화 묵묵이 2023.07.24 0
194 Git 줄 끝을 처리하도록 Git 구성 2 [2] 묵묵이 2023.07.20 2
193 빌라가배 Villagabae - 풀빌라 거제 묵묵이 2023.07.18 0
위로