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

网友投稿 674 2022-12-07


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

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

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

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

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

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

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

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

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

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

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

Java中通过JenkinsServer获取JenkinLXZleyLLdsHttpClient对象,使用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中

com.offbytwo.jenkins

jenkins-client

0.3.7

3.编码实现jenkins构建

URI uri = new URI("jenkins地址");

JenkinsHttpClient client = new JenkinsHttpClient(uri, "jenkins用户名", "jenkins密码");

JenkinsServer jenkinsServer = new JenkinsServer(client);

//获取所有job

Map jobs = jenkinsServer.getJobs();

//触发jenkins构建

jenkinsServer.getJob("job名称").build();

//获取最后一次构建结果,结果为BuildResult枚举类型

jenkinsServer.getJob("job名称").getLastBuild().details().getResult();

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

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构建了……


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java手动配置线程池过程详解
下一篇:Spring项目运行依赖spring
相关文章

 发表评论

暂时没有评论,来抢沙发吧~