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

搞个大家一起用的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 stub
		String 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");// 展示所有job
		CLI 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!");
	}

}

猜你喜欢

转载自blog.csdn.net/amosryan/article/details/70051540
95