Java调用JenkinsAPI发起构建并获取构建结果
package com.vmware.service;
import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.model.*;
import com.vmware.utils.JenkinsConnect;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Slf4j
public class JenkinsService {
public static Integer launchJob(String jobName, Map<String, String> params) {
int buildNumber = -1;
JenkinsServer connection = JenkinsConnect.connection();
try {
JobWithDetails job = connection.getJob(jobName);
job.build(params);
log.info("已发起构建请求...");
TimeUnit.SECONDS.sleep(10);
buildNumber = job.details().getLastBuild().getNumber();
} catch (Exception e) {
log.error("构建失败!");
log.error(e.getMessage());
}
connection.close();
return buildNumber;
}
public static boolean getBuildResult(String jobName, Integer buildNumber) throws Exception {
if (buildNumber < 0) {
throw new Exception("Build Number Error:" + buildNumber);
}
JenkinsServer connection = JenkinsConnect.connection();
JobWithDetails job = connection.getJob(jobName);
Build build = job.getBuildByNumber(buildNumber);
BuildResult buildResult = build.details().getResult();
while (buildResult == null) {
log.info("Build Is Running...");
buildResult = build.details().getResult();
TimeUnit.SECONDS.sleep(10);
}
log.info(buildResult.toString());
connection.close();
return buildResult.toString().equals("SUCCESS");
}
public static String getBuildDesc(String jobName, Integer buildNumber) throws IOException {
JenkinsServer connection = JenkinsConnect.connection();
String description = connection.getJob(jobName).getBuildByNumber(buildNumber).details().getDescription();
connection.close();
return description;
}
public static void main(String[] args) {
final String JOB_NAME = "";
Map<String,String> params=new HashMap<>(2);
Integer buildNumber = launchJob(JOB_NAME, params);
log.info("***************************************************************");
log.info("Job:{} launch success!",JOB_NAME);
log.info("BUILD NUMBER:{}",buildNumber);
boolean buildResult = false;
try {
buildResult = getBuildResult(JOB_NAME, buildNumber);
log.info("Build Success? {}",buildResult);
} catch (Exception e) {
log.error(e.getMessage());
}
if (!buildResult){
System.exit(501);
}
try {
String desc = getBuildDesc(JOB_NAME, buildNumber);
log.info(desc);
} catch (IOException e) {
log.error("Query Desc Failed! {}",e.getMessage());
}
}
}