Clearing all jobs workspaces to get free up disk space
Step-by-step guide
- Go to https://jenkins.PROJECTX.tds.CUSTOMERX.COM/script
Enter following script that clears workspaces on master:
import hudson.model.* deleteWorkspace (Hudson.instance.items) def deleteWorkspace (items) { for (item in items) { if (item.class.canonicalName != null && item.class.canonicalName != "com.cloudbees.hudson.plugins.folder.Folder" && item.class.canonicalName != "org.jenkinsci.plugins.workflow.job.WorkflowJob" && item.class.canonicalName != "com.github.mjdetullio.jenkins.plugins.multibranch.MavenMultiBranchProject" && item.class.canonicalName != "org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" && item.class.canonicalName != "hudson.model.ExternalJob") { println("Item of type "+item.class.canonicalName+" found") if(!item.isBuilding()) { println("Wiping out workspace of job "+item.name) item.doDoWipeOutWorkspace() } else { println("Skipping job "+item.name+", currently building") } } else if (item.class.canonicalName == "com.cloudbees.hudson.plugins.folder.Folder") { println("Item is folder with name "+item.name) deleteWorkspace(((com.cloudbees.hudson.plugins.folder.Folder) item).getItems()) } else { println("Item of type "+item.class.canonicalName + " cannot have its workspace cleaned") } } }
Eventually you can clear also all nodes/agents also:
def deleted = [] def oneDayAgo = new Date() - 1 jenkins.model.Jenkins.instance.nodes.each { hudson.model.Node node -> node.workspaceRoot.listDirectories().each { hudson.FilePath path -> def pathName = path.getRemote() if (path.name.startsWith(".")) { println "Skipping internal dir $node.displayName:$pathName" } else { def lastModified = new Date(path.lastModified()) if (lastModified < oneDayAgo) { println "Deleting workspace at $node.displayName:$pathName (last modified $lastModified)" path.deleteRecursive() deleted << "$node.displayName:$pathName" } else { println "Skipping workspace at $node.displayName:$pathName (last modified $lastModified)" } } } } "Deleted workspaces: \n\t" + deleted.sort().join("\n\t")
script to delete old builds
Here is a sample Groovy script you can use
import hudson.model.* def jobName = "YOUR_JOB_NAME" // Replace with your job name def daysToKeep = 20 def job = Jenkins.instance.getItem(jobName) job.getItems().each { jobItem -> if (jobItem instanceof Job) { jobItem.getBuilds().findAll { build -> def buildDate = new Date(build.getTimeInMillis()) def currentDate = new Date() def diffDays = (currentDate - buildDate) / (1000 * 60 * 60 * 24) diffDays > daysToKeep }.each { build -> println "Deleting build #${build.number} (${build.time})" build.delete() } } }
Make sure to replace `"YOUR_JOB_NAME"` with the name of your multibranch pipeline job. and daysToKeep with something you want, here is 20 days
SDTDS-43819 - Getting issue details... STATUS => here it was requested