Java操作Jenkins操作凭证(Credential)信息方式

jenkins-client包的api中大部分的操作是支持的,但有一些特殊操作,比如需要操作jenkins的Credential凭据信息,或是希望使用java修改Jenkins的系统配置,类似这样的操作在api中是没有的。

但依然可以通过rest的方式完成这些操作

当新增一条凭据信息时可以通过浏览器的网络监控看到他的请求内容

可以看到操作凭证的请求地址、请求参数列表,这里的参数列表的参数非常的多,但实际上在源码中读取的只有红框中的json的这一段。用postman来模拟调用一下

调用后会发现是失败的,失败原因是我们没有提供登录jenkins的认证信息

在用户管理—你的用户—设置—API TOKEN中添加token

我们会得到一个认证信息串,记录下来,重新拼装postman请求

请求地址更改为http://用户名:token@地址,发送请求即可

虽然返回值是一个页面,但我们查看一下凭据列表,请求的凭据已经被录入了

java通过jenkins-client发送请求,jenkins-client不需要使用token。

Java中通过JenkinsServer获取JenkinsHttpClient对象,使用postFromWithResult方法发送请求报文即可,但这里判断返回值的时候不能使用200判断结果,因为返回结果是一个重定向请求(302)。

HttpResponse httpResponse = staticJenkinsHttpClient.post_form_with_result("/credentials/store/system/domain/_/createCredentials", data, crumbFlag);

这个方法只有0.3.8以上版本的jenkins-client才有

如果要使用rest修改jenkins的配置应该也是一样的道理。

公司在生产环境做初期部署的时候需要修改大量的jenkins的配置和插件的参数配置,很容易忘记一些配置,如果调成一个请求完成配置应该也是不错的。

补充知识:java触发jenkins构建

背景:jenkins集成了sonarqube,并解决了jenkins分布式分发部署,现在需要自动触发jenkins部署,使用java语言实现。

注:jenkins分布式分发,不用人为配置,master和slave配置了几个并发,那么就可以同时构建几个job,其他job排队等候,等有空闲的节点,会自动分发。

目录:

1.开启jenkins全局安全配置

2.引用Jenkins-client的jar包

3.编码实现jenkins构建

=============================

1.开启jenkins全局安全配置

路径:系统配置-全局安全设置

2.引用Jenkins-client的jar包

maven官网找到Jenkins-client的依赖添加到pom.xml中

    <dependency>
      <groupId>com.offbytwo.jenkins</groupId>
      <artifactId>jenkins-client</artifactId>
      <version>0.3.7</version>
    </dependency>

3.编码实现jenkins构建

URI uri = new URI("jenkins地址");
JenkinsHttpClient client = new JenkinsHttpClient(uri, "jenkins用户名", "jenkins密码");
JenkinsServer jenkinsServer = new JenkinsServer(client);
//获取所有job
Map<String, Job> jobs = jenkinsServer.getJobs();
//触发jenkins构建
jenkinsServer.getJob("job名称").build();
//获取最后一次构建结果,结果为BuildResult枚举类型
jenkinsServer.getJob("job名称").getLastBuild().details().getResult();

需要注意,导入的包要正确

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.client.JenkinsHttpClient;
import com.offbytwo.jenkins.model.BuildResult;
import com.offbytwo.jenkins.model.Job;

然后就可以根据job名称触发jenkins构建了……

以上这篇Java操作Jenkins操作凭证(Credential)信息方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 使用Jenkins Pipeline自动化构建发布Java项目的方法

    简介 Pipeline,简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. Pipeline是Jenkins2.X的最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变. 一,创建pipeline项目 二,清除部分历史构建 三,参数化构建 这里使用三个参数,分别对应是否拉取代码,项目名称,以及发版选项 四,编写pipeline脚本 选择pipeline script 编写pipelin

  • java代码获取jenkins数据,构建历史等信息方式

    本篇文章主要介绍如何获取jenkins构建历史数据等信息,不包含java构建等操作. 1.jenkins所需jar,后续如有缺少可百度自行补齐. <!--jenkins所需jar包开始--> <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <dependency> <groupId>org.apache.httpcomponents</gr

  • 使用Java实现构建jenkins的多个job并返回构建结果示例

    背景: 使用java实现jenkins构建很简单,但是如何确定什么时候job已经构建完成才是关键,而且要实现多个job并行构建. 分析: 我有一篇文章提到过使用java实现jenkins构建,但是获取的结果是最后一次构建的结果,不能实时获取构建结果.实时获取构建结果有个关键的点,在于他会根据构建的版本号获取当前版本号的结果,如果对应版本号的结果为空则证明还在构建过程中,按照这个思路我们就可以进行编码了. 1.判断指定构建版本号的job是否执行完; 2.根据是否构建完成获取构建结果; /** *

  • Java利用jenkins做项目的自动化部署

    最近领导要求上海本地的项目需要使用进jenkins实现自动化部署,以便可以直接将项目移交给运维的同学,减轻开发的工作量.记录下这次爬坑的过程. 一.前言 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. 上面是我从百科上down下来的,老实说没看懂,这是个什么玩意啊?其实以我现在的理解和应用,最多的便是部署了,其他功能待研究╮(╯_╰)╭撸主目前在上海一个不知名国企打工,我们现在项目的发布流程

  • Java操作Jenkins操作凭证(Credential)信息方式

    jenkins-client包的api中大部分的操作是支持的,但有一些特殊操作,比如需要操作jenkins的Credential凭据信息,或是希望使用java修改Jenkins的系统配置,类似这样的操作在api中是没有的. 但依然可以通过rest的方式完成这些操作 当新增一条凭据信息时可以通过浏览器的网络监控看到他的请求内容 可以看到操作凭证的请求地址.请求参数列表,这里的参数列表的参数非常的多,但实际上在源码中读取的只有红框中的json的这一段.用postman来模拟调用一下 调用后会发现是失

  • Java获取e.printStackTrace()打印的信息方式

    获取e.printStackTrace()打印的信息 某些情况下,我们需要获取应用打印的异常信息,这时就可以借助StringWriter和PrintWriter两个类来获取异常信息 具体用法如下: try{ throw new NullPointerException(); }catch (Exception e){ StringWriter sw = new StringWriter(); e.printStackTrace(new PrintWriter(sw,true)); String

  • java用list集合存储学生信息并算出成绩平均值操作

    需求 键盘输入五名学生信息并录入list集合; 输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值: 计算并输出他们Java语言成绩的最大值和最小值. 思路 用Scanner 键盘输入 用for循环依次录入学生信息 用for循环输出学生信息 用for循环拿出学生成绩并求出成绩平均分 代码 补充知识:java 计算平均值,去除不合理的数据 我就废话不多说了,大家还是直接看代码吧~ package com.ine.tool; import java.util.ArrayList; im

  • Java JUC中操作List安全类的集合案例

    目录 不安全的集合 Java中提供的安全措施 JUC下的安全List集合 性能方面 不安全的集合 在单线程应用中,通常采取new ArrayList(),指定一个List集合,用于存放可重复的数据. 但在多线程下,往往会出现意想不到的问题,代码如下所示: import java.util.*; public class ListTest { public static void main(String[] args) throws InterruptedException { // 创建list

  • java io文件操作删除文件或文件夹的7种方法

    目录 一.删除文件或文件夹的四种基础方法 二.如何删除整个目录或者目录中的部分文件 前提准备 2.1. walkFileTree与FileVisitor 2.2.Files.walk 2.3.传统IO-递归遍历删除文件夹 本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇 为了

  • Java编程cas操作全面解析

    CAS 指的是现代 CPU 广泛支持的一种对内存中的共享数据进行操作的一种特殊指令.这个指令会对内存中的共享数据做原子的读写操作. 简单介绍一下这个指令的操作过程:首先,CPU 会将内存中将要被更改的数据与期望的值做比较.然后,当这两个值相等时,CPU 才会将内存中的数值替换为新的值.否则便不做操作.最后,CPU 会将旧的数值返回.这一系列的操作是原子的.它们虽然看似复杂,但却是 Java 5 并发机制优于原有锁机制的根本.简单来说,CAS 的含义是"我认为原有的值应该是什么,如果是,则将原有的

  • JAVA使用Ldap操作AD域的方法示例

    项目上遇到的需要在集成 操作域用户的信息的功能,第一次接触ad域,因为不了解而且网上其他介绍不明确,比较费时,这里记录下. 说明: (1). 特别注意:Java操作查询域用户信息获取到的数据和域管理员在电脑上操作查询的数据可能会存在差异(同一个意思的表示字段,两者可能不同). (2). 连接ad域有两个地址: ldap://XXXXX.com:389 和 ldap://XXXXX.com:636(SSL). (3). 端口389用于一般的连接,例如登录,查询等非密码操作,端口636安全性较高,用

  • Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】

    本文实例讲述了Python操作MySQL数据库的两种方式.分享给大家供大家参考,具体如下: 第一种 使用pymysql 代码如下: import pymysql #打开数据库连接 db=pymysql.connect(host='1.1.1.1',port=3306,user='root',passwd='123123',db='test',charset='utf8') cursor=db.cursor()#使用cursor()方法获取操作游标 sql = "select * from tes

  • 使用Java对Hbase操作总结及示例代码

    前面已经给大家讲解过如何使用Hbase建表,以及基本的操作和一些常用shell命令,今天就给大家介绍下如何使用java对Hbase进行各种操作. 没印象的话可以再去浏览下: Hbase入门教程,shell命令大全讲解 Java操作Hbase主要方法: 1.Configuration 在使用Java API时,Client端需要知道HBase的配置环境,如存储地址,zookeeper等信息. 这些信息通过Configuration对象来封装,可通过如下代码构建该对象: Configuration

随机推荐