Answers:
Jenkins中有一种清理工作区的方法。您可以在构建之前或构建之后清理工作空间。
首先,安装Workspace Cleanup Plugin。
要在构建之前清理工作空间:在“ 构建环境”下,选中“ 在构建开始之前删除工作空间 ”复选框。
要在构建后清理工作空间,请执行以下操作:在“ 构建后操作 ”标题下,从“ 添加构建后操作”下拉菜单中选择“ 在构建完成后删除工作空间”。
如果您想手动清理它,对我来说,使用我的jenkins版本(似乎不需要安装额外的插件,但是谁知道),在左列中有一个“工作区”链接,请点击您的项目,然后在“工作区”上,左侧栏上的下方会出现一个“清除当前工作区”链接。
除了上述解决方案之外,还有一种“常见”的方式-直接从Linux机器中删除最大的空间消耗者。您可以按照以下步骤操作:
也使用ls -lart列出隐藏的文件夹,通常将jenkin安装放在.jenkins /文件夹中
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
显示高级磁盘空间
du -sh ./*/
列出当前路径中每个子文件夹的总内存。
du -a /etc/ | sort -n -r | head -n 10
将列出/ etc /中占用磁盘空间的前10个目录
通常,。/ job /文件夹或./workspace/文件夹可以是最大的文件夹。请进入并根据需要删除(请勿删除整个文件夹)。
rm -rf theFolderToDelete
cleanWs()
在插件着陆页上却没有作为添加到我的语法的语法Jenkinsfile
。
重要说明:只要当前未运行作业,就可以删除给定Jenkins作业的工作空间!
注意:我假设您$JENKINS_HOME
已设置为默认值:/var/jenkins_home
。
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
此人使用grep创建白名单:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
这一个使用du和sort来按最大到最小的顺序列出工作区。然后,它使用head抓住前10个:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
您可以在Manage Jenkins → 脚本控制台中运行以下脚本,一次删除所有作业的工作区。我们这样做是为了清理文件系统上的空间。
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")
}
}
不允许发表评论,因此:
Upen的答案很好,但是如果您将Jenkins Pipeline Jobs与Freestyle Jobs混合使用,则不能。在管道作业上没有DoWipeWorkspace这样的方法。因此,我修改了脚本以跳过那些脚本:
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")
}
}
您还可以根据需要按职位名称过滤:
item.getDisplayName().toLowerCase().contains("release")