问题
How can I cleanup the workspace in Jenkins? I am using AccuRev
as version control tool.
I created freestyle
projects in Jenkins.
回答1:
There is a way to cleanup workspace in Jenkins. You can clean up the workspace before build or after build.
First, install Workspace Cleanup Plugin.
To clean up the workspace before build: Under Build Environment, check the box that says Delete workspace before build starts.
To clean up the workspace after the build: Under the heading Post-build Actions select Delete workspace when build is done from the Add Post-build Actions drop down menu.
回答2:
If you want to manually clean it up, for me with my version of jenkins (didn't appear to need an extra plugin installed, but who knows), there is a "workspace" link on the left column, click on your project, then on "workspace", then a "Wipe out current workspace" link appears beneath it on the left hand side column.
回答3:
Beside above solutions, there is a more "COMMON" way - directly delete the largest space consumer from Linux machine. You can follow the below steps:
- Login to Jenkins machine (Putty)
- cd to the Jenkins installation path
Using ls -lart to list out hidden folder also, normally jenkin installation is placed in .jenkins/ folder
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
- list out the folders spaces
Use df -h
to show Disk space in high level
du -sh ./*/
to list out total memory for each subfolder in current path.
du -a /etc/ | sort -n -r | head -n 10
will list top 10 directories eating disk space in /etc/
- Delete old build or other large size folder
Normally ./job/ folder or ./workspace/ folder can be the largest folder. Please go inside and delete base on you need (DO NOT delete entire folder).
rm -rf theFolderToDelete
回答4:
Workspace Cleanup Plugin
In Jenkins file add
cleanWs()
This will delete the workspace after the build is complete
回答5:
You can run the below script in the Manage Jenkins → Scripts Console for deleting the workspaces of all the jobs at one shot. We did this to clean up space on the file system.
import hudson.model.*
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding()) {
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
回答6:
IMPORTANT: It is safe to remove the workspace for a given Jenkins job as long as the job is not currently running!
NOTE: I am assuming your $JENKINS_HOME
is set to the default: /var/jenkins_home
.
Clean up one workspace
rm -rf /var/jenkins_home/workspaces/<workspace>
Clean up all workspaces
rm -rf /var/jenkins_home/workspaces/*
Clean up all workspaces with a few exceptions
This one uses grep to create a whitelist:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Clean up 10 largest workspaces
This one uses du and sort to list workspaces in order of largest to smallest. Then, it uses head to grab the first 10:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
回答7:
not allowed to comment, therefore:
The answer from Upen works just fine, but not if you have Jenkins Pipeline Jobs mixed with Freestyle Jobs. There is no such Method as DoWipeWorkspace on Pipeline Jobs. So I modified the Script in order to skip those:
import hudson.model.*
import org.jenkinsci.plugins.workflow.job.WorkflowJob
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding() && !(item instanceof WorkflowJob))
{
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
you could also filter by Job Names if required:
item.getDisplayName().toLowerCase().contains("release")
回答8:
You will need to install this plugin before the options mentioned above will appear
Workspace Cleanup Plugin
This plugin add the check box to all job configs to allow you to delete the whole workspace before any steps (inc source control) are run
This is useful to make sure you always start from a known point to guarantee how you build will run
回答9:
Assuming the question is about cleaning the workspace of the current job, you can run:
test -n "$WORKSPACE" && rm -rf $WORKSPACE/*
来源:https://stackoverflow.com/questions/28683914/is-there-any-way-to-cleanup-jenkins-workspace