JenkinsAPI实现—JAVA

本文详细介绍了如何通过Java操作Jenkins API,实现对Job、View等的CRUD操作。首先,文章阐述了Jenkins API的功能和格式,包括JSON、XML和Python API。接着,讨论了调用接口前对Jenkins的参数调整,如关闭CSRF保护和设置Jenkins URL。最后,展示了使用Maven引入java-client-api库,并提供了连接Jenkins、操作视图、任务和编译的Java代码示例。
摘要由CSDN通过智能技术生成

通过JAVA 操作 Jenkins API,实现对 Jenkins Job、View等等的增、删、改、查操作。

参靠及项目地址:
      Jenkins API wiki 地址:https://wiki.jenkins.io/display/JENKINS/Remote+access+API

      Jenkins-Java-Client Github 地址:https://github.com/jenkinsci/java-client-api

      原创文章地址:https://blog.csdn.net/qq_32641153/article/details/94230465

 一、JenkinsAPI
1、JenkinsAPI简介

Jenkins远程API能够通过http协议远程调用相关命令操作Jenkins进行Jenkins视图、任务、插件、构建信息、任务日志信息、统计信息等,非常容易与其配合更好得完成CI/CD工作。

2、JenkinsAPI格式

JenkinsAPI有三种格式分别为:

  •  JSON  API
  •  XML  API
  •  Python  API

3、Jenkins查看API信息

可以用浏览器打开你的 Jenkins UI 界面,然后 URL 地址栏后面追加 “/api/json” 或者 “/api/xml” ,效果如下:

“JenkinsURL/api/json” 显示:

“JenkinsURL/api/xml” 显示:

还可以访问 View、Job等 API 信息,例如:

  • View API: /view/<view-name>/api/json
  • Job API: /job/<job-name>/api/xml
  • build API: /job/<job-name>/<build-number>/

二、调用接口前对 Jenkins 参数调整

1、关闭 CSRF
由于在调用 Jenkins 中,操作执行 Job 一些命令时会用到 Post 方式命令,所以需要关闭 Jenkins 的 CSRF 选项。

关闭 系统管理->全局安全配置->跨站请求伪造保护 选项

2、系统设置中和 jenkins 地址一致
设置 系统管理->系统设置->Jenkins Location 的 URL 和 Jenkins 访问地址保持一致


三、使用 Java 调用 Jenkins API 示例

1、Maven引入工具

    在 Jenkins Github 中查找到已经有人做了封装调用 Jenkins API 的工具 Jar,这里只需要我们 Maven 中引入这个工具 java-client-api,就可以方便的调用 Jenkins API 了 。

 <dependency>
      <groupId>com.offbytwo.jenkins</groupId>
      <artifactId>jenkins-client</artifactId>
      <version>${project.version}</version>
 </dependency>

2、连接 Jenkins 工具类

此类主要用于连接 Jenkins

JenkinsConnect.java

import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.client.JenkinsHttpClient;
import java.net.URI;
import java.net.URISyntaxException;
 
/**
 * 连接 Jenkins
 */
public class JenkinsConnect {
 
    private JenkinsConnect(){}
 
    // 连接 Jenkins 需要设置的信息
    static final String JENKINS_URL = "http://192.168.72.122:8080/jenkins/";
    static final String JENKINS_USERNAME = "admin";
    static final String JENKINS_PASSWORD = "111111";
 
    /**
     * Http 客户端工具
     *
     * 如果有些 API 该Jar工具包未提供,可以用此Http客户端操作远程接口,执行命令
     * @return
     */
    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;
    }
 
    /**
     * 连接 Jenkins
     */
    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;
    }
}

3、操作视图

此类主要用于操作 Jenkins 中的 View

ViewApi.java

import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.client.JenkinsHttpClient;
import com.offbytwo.jenkins.model.View;
import java.io.IOException;
 
/**
 * View(视图) 相关操作
 *
 * 例如对视图的增、删、改、查等操作
 */
public class ViewApi {
 
    // Jenkins 对象
    private JenkinsServer jenkinsServer;
    // http 客户端对象
    private JenkinsHttpClient jenkinsHttpClient;
 
    /**
     * 构造方法中调用连接 Jenkins 方法
     */
    ViewApi() {
        JenkinsApi jenkinsApi = new JenkinsApi();
        // 连接 Jenkins
        jenkinsServer = JenkinsConnect.connection();
        // 设置客户端连接 Jenkins
        jenkinsHttpClient = JenkinsConnect.getClient();
    }
 
    /**
     * 创建视图
     */
    public void createView() {
        try {
            // 创建一个 xml 字符串,里面设置一个 view 描述信息
            String xml = "<listView _class=\"hudson.model.ListView\">\n" +
                    "<description>用于测试的视图</description>\n" +
                    "</listView>";
            // 创建 view
            jenkinsServer.createView("test-view", xml);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    /**
     * 获取视图基本信息
     */
    public void getView() {
        try {
            // 视图名
            String viewName = "test-view";
            // 获取视图基本信息
            View view = jenkinsServer.getView(viewName);
            System.out.println(view.getName());
            System.out.println(view.getUrl());
            System.out.println(view.getDescription());
            // 获取视图xml信息
            String viewXml = jenkinsHttpClient.get("/view/" + viewName + "/api/xml");
            System.out.println(viewXml);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    /**
     * 获取视图配置 XML 信息
     */
    public void getViewConfig() {
        try {
            // 视图名
            String viewName = "test-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值