博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何批量修改Jenkins job的配置?
阅读量:7004 次
发布时间:2019-06-27

本文共 2546 字,大约阅读时间需要 8 分钟。

背景:jerkins 有100多个job,但是运行机器下线了,需要修改所有job的机器配置,手工一条条修改的话会疯掉的,所以想到写一个脚本进行批量修改。

思路:第一步:获取Jenkins的所有jobname

         第二步:  遍历jobname,获取每个job的配置文件config.xml

         第三步:将获取到的xml类型字符串转化为document对象,然后修改机器节点的值,然后将修改的document对象写入一个新的xml文件

         第四步:将新的修改后的xml文件作为参数传给job

好了,上代码:

import org.xml.sax.InputSource;import com.offbytwo.jenkins.JenkinsServer;import java.net.URI;import org.jdom2.input.SAXBuilder;import org.jdom2.Document;import org.jdom2.Element;public void modifyJenkinsTest(){        String username=*******;        String password=*******;        String url = *******;        String filename="tempConfig.xml";        //count 用于统计成功修改多少个job的配置        int count=0;        try {            JenkinsServer jenkins = new JenkinsServer(new URI(url), username, password);            Map
jobs = jenkins.getJobs(); //遍历获取到所有的jobname for (String jobname:jobs.keySet()) { String configUrl = url+"job/" + jobname + "/config.xml"; //在这里需要单独写一个httpRequest类,里面写一个静态函数sendGet,需要携带Authorization参数,因为访问Jenkins需要认证信息,(通过用户名和密码生成) String response = httpRequest.sendGet(configUrl, ""); # 将字符串xml转化为document对象 StringReader read = new StringReader(response); InputSource source = new InputSource(read); SAXBuilder sb = new SAXBuilder(); Document document; document = sb.build(source); Element root = document.getRootElement(); //配置文件没有assignedNode节点或者这个节点的值已经修改过了就跳过这条job if(root.getChild("assignedNode")==null||root.getChild("assignedNode").getText().equals("********")){ continue; } //修改document对象中名字为assignedNode的节点的值为******* root.getChild("assignedNode").setText("********"); //将修改之后的xml对象写入一个临时的xml文件 File file = new File(filename); XMLOutputter outputter = new XMLOutputter(format); outputter.output(document, new FileOutputStream(file)); //将修改之后xml文件传给job,进行修改 //在这里需要单独写一个httpRequest类,里面写一个静态函数requestPost,需要携带Authorization参数,因为访问Jenkins需要认证信息,(通过用户名和密码生成) httpRequest.requestPost(configUrl, filename); //修改成功一个,count加1 count++; } }catch (Exception e){ e.printStackTrace(); } System.out.println("成功修改了"+count+"条job的配置"); }

  

转载于:https://www.cnblogs.com/zhaijing/p/8391558.html

你可能感兴趣的文章