package hudson.plugins.tmpcleaner; import hudson.Extension; import hudson.model.Computer; import hudson.model.Hudson; import hudson.model.PeriodicWork; import hudson.remoting.VirtualChannel; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; /** * Clean up /tmp files from slaves. * * @author Kohsuke Kawaguchi */ @Extension public class TmpCleanWork extends PeriodicWork { @Override public long getRecurrencePeriod() { return MIN * minutes; } @Override protected void doRun() { LOGGER.log(Level.INFO, "run TmpCleanTask days " + days + ", extraDirectories " + extraDirectories ); for (Computer c : Hudson.getInstance().getComputers()) { try { LOGGER.log(Level.FINER, "start run TmpCleanTask on computer " + c.getDisplayName() ); VirtualChannel ch = c.getChannel(); if (ch!=null) ch.callAsync(new TmpCleanTask(extraDirectories,days)); LOGGER.log(Level.FINER, "end run TmpCleanTask on computer " + c.getDisplayName() ); } catch (IOException e) { LOGGER.log(Level.WARNING, "Failed to run tmp cleaner for "+c.getDisplayName(),e); } } } private static final Logger LOGGER = Logger.getLogger(TmpCleanWork.class.getName()); /** * recurence period in minutes */ public static long minutes = Long.valueOf( System.getProperty(TmpCleanWork.class.getName()+".minutes", "360" ) ); /** * extra directories to cleanup comma separated */ public static String extraDirectories = System.getProperty( TmpCleanWork.class.getName() + ".extraDirectories" ); /** * delete files not accessed since x days */ public static long days = Long.valueOf( System.getProperty(TmpCleanWork.class.getName()+".days", "7" ) ); }