NO.95 Jenkins管理员工具之:干掉无用的本地workspace(Java版)

来源:互联网 发布:js replace 单引号 编辑:程序博客网 时间:2024/06/06 00:11

搞个大家一起用的Jenkins,30多个项目组建了500多个任务。有个节点的workspace所在盘只有100G,一来二去就满了。

下手处理。

其中一个点是:Jenkins的任务删掉了或者改名了,但是原来的Job workspace是不会删除的。

看了https://my.oschina.net/donhui/blog/677935这一篇,觉得思路可行,不过里面的Python不懂哇,写个Java版吧。

搞定后删掉了40G垃圾,洁癖如我,内心是欢喜的。


上代码。

目录结构

.\src\DelUnusedWS.java

.\bin\DelUnusedWS.class

.\lib\jenkins-cli.jar

.\runDelUnusedWS.cmd



runDelUnusedWS.cmd内容

java -classpath .\lib\jenkins-cli.jar;.\bin; DelUnusedWS http://*.*.*.*:8091/jenkins D:\jenkins\workspace@pause



DelUnusedWS.java内容

import java.io.ByteArrayOutputStream;import java.io.File;import java.io.OutputStream;import java.net.URL;import java.util.LinkedList;import java.util.List;import hudson.cli.CLI;public class DelUnusedWS {public static void deleteFile(File file) throws Exception {if (file.isDirectory()) {for (File f : file.listFiles()) {deleteFile(f);}}file.delete();}public static void main(String[] args) throws Exception {// TODO Auto-generated method stubString url = args[0];// Jenkins地址URL,例:"http://*.*.*.*:8091/jenkins";//String wsDir = args[1];// Jenkins节点本地Workspace目录,例:“D:\jenkins\workspace”System.out.println("url:" + url);System.out.println("wsDir:" + wsDir);List<String> arguments = new LinkedList<String>();// arguments.add("create-view");// arguments.add(viewname);// arguments.add("--username");// arguments.add(username);// arguments.add("--password");// arguments.add(password);arguments.add("list-jobs");// 展示所有jobCLI cli = new CLI(new URL(url));OutputStream output = new ByteArrayOutputStream();int exit_code = cli.execute(arguments, null, output, System.err);String s = output.toString();System.out.println("jobs:" + s);/* 主要逻辑:逐个验证本地workspace下的目录(即job名称)是否在刚查询到的任务名称清单中存在 */File dir = new File(wsDir);for (File f : dir.listFiles()) {if (s.indexOf(f.getName() + '\n') == -1) {//为保证避免目录名是任务名的子串情况,加'\n'进行严格查找System.out.println(f.getName() + " not exists!");deleteFile(f);if (f.exists()) {System.out.println(f.getName() + " can 【not】 be deleted!");} else {System.out.println(f.getName() + " was deleted!");}}}System.out.println("Done!");}}

0 0
原创粉丝点击