jenkins插件开发,在任何的一个类中获取当前Job
现在有这样一个需求,我需要获取当前Job的配置参数,该配置参数config.xml 文件 的路径是 JENKINS_HOME/jobs/${Job name}/config.xml。也就是说我要去获取这个config.xml 文件值。
第一步我就先要去获取到当前job 。直接放代码
public Job getParentJob() { Job context = null; List<Job> jobs = Jenkins.getInstance().getAllItems(Job.class); for (Job job : jobs) { if (!(job instanceof TopLevelItem)) continue; ParametersDefinitionProperty property = (ParametersDefinitionProperty) job.getProperty(ParametersDefinitionProperty.class); if (property != null) { List<ParameterDefinition> parameterDefinitions = property.getParameterDefinitions(); if (parameterDefinitions != null) { for (ParameterDefinition pd : parameterDefinitions) { if (pd instanceof SVNParameterDefinition && ((SVNParameterDefinition) pd).compareTo(this) == 0) { context = job; break; } } } } } return context; }
代码中SVNParameterDefinition 是我自己的实现类
拿到这个Job后,你就可以为所欲为了 哈哈 我这里是要通过这个Job获取到一些svn的地址还有用户名和密码。
public List<String> getDirNameTips() throws IOException { Job job = getParentJob(); // job.writeConfigDotXml(new FileOutputStream("D:/1.xml")); XmlFile xmlFile = Items.getConfigFile(job); // String s = xmlFile.asString(); XStream xStream = xmlFile.getXStream(); Object o = xStream.fromXML(xmlFile.getFile()); if(o != null && o instanceof Project) { Project p = (Project) o; DescribableList list = p.getPublishersList(); for (Object o1 : list) { if(o1 instanceof SVNPublisher) { SVNPublisher sp = (SVNPublisher) o1; String svn_url = sp.getUrl(); String accessId = sp.getAccessId(); String secretKey = sp.getSecretKey(); SVNUtil su = new SVNUtil(svn_url, accessId, secretKey); try { List<SVNDirEntry> svnDirEntries = new ArrayList<>(); SvnOption.listEntries(su.getSVNRepository(),"",svnDirEntries,"", SvnGetFileTypeEnum.DIR,false); return svnDirEntries.stream().map(e -> e.getName()).collect(Collectors.toList()); } catch (SVNException e) { e.printStackTrace(); break; } } } } return new ArrayList<>(); }
附上jenkins api https://javadoc.jenkins.io/index.html?hudson/XmlFile.html
https://github.com/zxavier94/svn-publisher 这是我自己开发的jenkins 插件 跟git publisher 类似
本文来自博客园,作者:margo,转载请注明原文链接:https://www.cnblogs.com/ZMargo/articles/10918904.html