栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java远程操作JenkinsAPI 进行构建

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java远程操作JenkinsAPI 进行构建

配置

导入依赖


        
            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" +
                    "truen" +
                    "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" +
                    "falsen" +
                    "n" +
                    "n" +
                    "n" +
                    "n" +
                    "keyn" +
                    "用于测试的字符变量n" +
                    "hellon" +
                    "falsen" +
                    "n" +
                    "n" +
                    "n" +
                    "n" +
                    "n" +
                    "n" +
                    "truen" +
                    "n" +
                    "falsen" +
                    "";
            // 创建 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();
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1040042.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号