导入依赖
com.offbytwo.jenkins
jenkins-client
0.3.8
创建连接配置,配置对应的信息
import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.client.JenkinsHttpClient;
import java.net.URI;
import java.net.URISyntaxException;
public class JenkinsConnect {
private JenkinsConnect(){}
// 连接 Jenkins 需要设置的信息
static final String JENKINS_URL = "http://jenkins:8080/";
static final String JENKINS_USERNAME = "jenkins";
static final String JENKINS_PASSWORD = "jenkins";
public static JenkinsHttpClient getClient(){
JenkinsHttpClient jenkinsHttpClient = null;
try {
jenkinsHttpClient = new JenkinsHttpClient(new URI(JENKINS_URL), JENKINS_USERNAME, JENKINS_PASSWORD);
} catch (URISyntaxException e) {
e.printStackTrace();
}
return jenkinsHttpClient;
}
public static JenkinsServer connection() {
JenkinsServer jenkinsServer = null;
try {
jenkinsServer = new JenkinsServer(new URI(JENKINS_URL), JENKINS_USERNAME, JENKINS_PASSWORD);
} catch (URISyntaxException e) {
e.printStackTrace();
}
return jenkinsServer;
}
}
JENKINS_URL是Jenkins的反向代理地址, Configure System -> Jenkins location url, 一般和Jenkins首页访问地址一致
JENKINS_USERNAME Jenkins登录账号
JENKINS_PASSWORD Jenkins账号密码
使用示例import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.client.JenkinsHttpClient;
import com.offbytwo.jenkins.model.Build;
import com.offbytwo.jenkins.model.Job;
import com.offbytwo.jenkins.model.JobWithDetails;
import com.offbytwo.jenkins.model.MavenJobWithDetails;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class JobApi {
// Jenkins 对象
private JenkinsServer jenkinsServer;
// http 客户端对象
private JenkinsHttpClient jenkinsHttpClient;
JobApi() {
// 连接 Jenkins
jenkinsServer = JenkinsConnect.connection();
// 设置客户端连接 Jenkins
jenkinsHttpClient = JenkinsConnect.getClient();
}
public void ceateJob(){
try {
// 创建 Pipeline 脚本
String script = "node(){ n" +
"echo 'hello world!' n" +
"}";
// xml配置文件,且将脚本加入到配置中
String xml = "n" +
"测试项目 n" +
"n" +
"n" +
"true n" +
" n" +
" ";
// 创建 Job
jenkinsServer.createJob("test-job",xml, true);
} catch (IOException e) {
e.printStackTrace();
}
}
public void updateJob(){
try {
// 创建 Pipeline 脚本,用一个key变量
String script = "node(){ n" +
"echo "${key}" n" +
"}";
// xml配置文件,且将脚本加入到配置中
String xml = "n" +
"n" +
"测试项目 n" +
"false n" +
"n" +
"n" +
"n" +
"n" +
"key n" +
"用于测试的字符变量 n" +
"hello n" +
"false n" +
" n" +
" n" +
" n" +
" n" +
"n" +
"n" +
"true n" +
" n" +
"false n" +
" ";
// 创建 Job
jenkinsServer.updateJob("test-job",xml, true);
} catch (IOException e) {
e.printStackTrace();
}
}
public void getJob(){
try {
// 获取 Job 信息
JobWithDetails job = jenkinsServer.getJob("das-app-android-pkg");
// 获取 Job 名称
System.out.println(job.getName());
// 获取 Job URL
System.out.println(job.getUrl());
// 获取 Job 下一个 build 编号
System.out.println(job.getNextBuildNumber());
// 获取 Job 显示的名称
System.out.println(job.getDisplayName());
// 输出 Job 描述信息
System.out.println(job.getDescription());
// 获取 Job 下游任务列表
System.out.println(job.getDownstreamProjects());
// 获取 Job 上游任务列表
System.out.println(job.getUpstreamProjects());
} catch (IOException e) {
e.printStackTrace();
}
}
public void getMavenJob(){
try {
// 获取 Job 信息
MavenJobWithDetails job = jenkinsServer.getMavenJob("test-job");
} catch (IOException e) {
e.printStackTrace();
}
}
public void getJobList(){
try {
// 获取 Job 列表
Map jobs = jenkinsServer.getJobs();
for (Job job:jobs.values()){
System.out.println(job.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void getJobListByView(){
try {
// 获取 Job 列表
Map jobs = jenkinsServer.getJobs("all");
for (Job job:jobs.values()){
System.out.println(job.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void getJobConfig(){
try {
String xml = jenkinsServer.getJobXml("test-job");
System.out.println(xml);
} catch (IOException e) {
e.printStackTrace();
}
}
public void buildJob(){
try {
jenkinsServer.getJob("test-job").build(true);
} catch (IOException e) {
e.printStackTrace();
}
}
public void buildParamJob(){
try {
// 设置参数值
Map param = new HashMap<>();
param.put("way","gm-R-b");
// 执行 build 任务
jenkinsServer.getJob("das-app-android-pkg").build(param, true);
} catch (IOException e) {
e.printStackTrace();
}
}
public void stopLastJobBuild(){
try {
// 获取最后的 build 信息
Build build = jenkinsServer.getJob("test-job").getLastBuild();
// 停止最后的 build
build.Stop();
} catch (IOException e) {
e.printStackTrace();
}
}
public void deleteJob(){
try {
jenkinsServer.deleteJob("test-job", true);
} catch (IOException e) {
e.printStackTrace();
}
}
public void disableJob(){
try {
jenkinsServer.disableJob("test-job", true);
} catch (IOException e) {
e.printStackTrace();
}
}
public void enableJob(){
try {
jenkinsServer.enableJob("test-job", true);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
JobApi jobApi = new JobApi();
// jobApi.getJob();
// jobApi.getJobList();
jobApi.buildParamJob();
// // 创建 Job
// jobApi.ceateJob();
// // 构建无参数的 Job
// jobApi.buildJob();
// // 构建带参数的 Job
// jobApi.buildParamJob();
// // 停止最后构建的 Job Build
// jobApi.stopLastJobBuild();
// // 更新 Job
// jobApi.updateJob();
// // 获取 Job 信息
// jobApi.getJob();
// // 获取 Maven 项目 Job
// jobApi.getMavenJob();
// // 获取 Job 配置xml
// jobApi.getJobConfig();
// 获取全部 Job 列表
// jobApi.getJobList();
// 根据 view 名称获取 Job 列表
// jobApi.getJobListByView();
// // 禁用 Job
// jobApi.disableJob();
// // 启用 Job
// jobApi.enableJob();
// // 删除 Job
// jobApi.deleteJob();
}
}



