spring
[Spring/Jenkins] 젠킨스 Rest API로 젠킨스 Job 실행
moonsiri
2022. 7. 4. 16:58
728x90
반응형
젠킨스 Rest API를 이용하여 젠킨스 Job을 실행하는 방법을 알아보겠습니다.
1. 젠킨스 계정 API Token 생성
계정 > 설정 > API Token > Add new Token
원하는 이름으로 생성한 뒤 토큰을 복사해주세요. (복사하지 않으면 토큰을 알 수가 없음. 토큰명은 의미 없음.)
2. Item에 Token 추가
view > item > 구성 > 빌드 유발
빌드를 원격으로 유발 (예: 스크립트 사용)을 체크한 뒤 복사한 토큰을 붙여 넣기 해주세요.
3. curl로 job 실행 테스트
curl -X POST [젠킨스 서버 URL]/job/[job 이름]/buildWithParameters --user [젠킨스 user id]:[user password] --data token=[생성한 job token] --data [설정한 매개변수 명]=[콤마로 구분한 서버 설정명 리스트]
4. RestTemplate 통신 방법
basic auth로 젠킨스 계정 정보 넣은 뒤 get으로 호출하면 됩니다. (만약 404 오류가 발생한다면 url encoding 여부를 확인해주세요.)
파라미터는 전달하지 않으면 구성에 설정해놓은 매개변수의 Default Value로 설정되어 실행됩니다.
public void 젠킨스_job_실행() {
String jobUrl = "{젠킨스Job경로}/buildWithParameters";
LinkedMultiValueMap<String, String> param = new LinkedMultiValueMap<>();
param.add("token", "토큰값");
param.add("파라미터명1", "파라미터값1");
param.add("파라미터명2", "파라미터값2");
this.runJob(jobUrl, "젠킨스ID", "젠킨스PW", param);
}
public void runJob(String jobUrl, String userId, String pwd, LinkedMultiValueMap<String, String> sendParam) {
HttpHeaders headers = new HttpHeaders();
headers.setBasicAuth(userId, pwd);
URI uri = UriComponentsBuilder.fromUriString(jobUrl).queryParams(sendParam).build().encode().toUri();
ResponseEntity<String> exchange = restTemplate.exchange(uri, HttpMethod.GET, new HttpEntity<>(headers), String.class);
// ...
}
4.1. apache http 통신 방법
public String runJob(String jobUrl, String userId, String pwd, LinkedMultiValueMap<String, String> sendParam) {
URI uri = UriComponentsBuilder.fromUriString(jobUrl).queryParams(sendParam).build().encode().toUri();
HttpHost host = new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme());
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(new AuthScope(uri.getHost(), uri.getPort()), new UsernamePasswordCredentials(userId, pwd));
AuthCache authCache = new BasicAuthCache();
BasicScheme basicAuth = new BasicScheme();
authCache.put(host, basicAuth);
HttpGet httpGet = new HttpGet(uri);
HttpClientContext localContext = HttpClientContext.create();
localContext.setAuthCache(authCache);
HttpResponse response = httpClient.execute(host, httpGet, localContext);
// ...
}
5. 마지막 실행 이력 조회
curl -X POST [젠킨스 서버 URL]/job/[job 이름]/lastBuild/api/json --user [젠킨스 user id]:[user password] --data token=[생성한 job token]
728x90
반응형