Eri*_*vic 2 jenkins jenkins-pipeline
我有一个 Jenkins 服务器,它似乎无缘无故地有大量已用空间。在四处挖掘之后,我注意到旧的构建并没有被保留的分支(master例如)丢弃。我可以通过添加“keep x builds”设置来修复所有项目,但我有很多项目,我需要立即清理磁盘。
在 Jenkins 服务器上手动删除作业既麻烦又耗时,而且如果您需要快速释放一些空间(除了从硬盘驱动器中手动删除内容),不清楚如何继续。从 Jenkinsjob目录中删除内容可能也会在fingerprints目录中留下一些东西(?) - 这不是一个好主意。
如何快速清理一堆项目,同时仍然在 Pipeline 项目中的每个分支留下 5 个构建?
我有个好消息 - 我在Jenkins wiki上找到了一个描述构建清理的页面,但它不包括管道作业。如果您有很多项目,也会超时。
我设法基于处理超时的旧脚本创建了一个新脚本(但您可能必须多次运行它)。
将其粘贴到Script Console下面Manage Jenkins的部分中Tools and Actions:
// Inspired by https://wiki.jenkins.io/display/JENKINS/Manually+run+log+rotation+on+all+jobs
// Check out these files for more info on LogRotator and WorkflowJob
// https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/tasks/LogRotator.java
// https://github.com/jenkinsci/workflow-job-plugin/blob/master/src/main/java/org/jenkinsci/plugins/workflow/job/WorkflowJob.java
import hudson.tasks.*;
import org.jenkinsci.plugins.workflow.job.*;
def jobs = Jenkins.instance.getAllItems(WorkflowJob.class);
def numJobsToKeep = 5;
def rotator = new LogRotator(-1, numJobsToKeep);
def startTime = System.currentTimeMillis();
for (WorkflowJob job : jobs) {
if (System.currentTimeMillis() - startTime > 20000) {
// Bail out if it takes too long, just run the script again until it feels "instant"
break;
}
rotator.perform(job);
}
Run Code Online (Sandbox Code Playgroud)
它在我的机器上释放了 50+ GB 的空间!
我还建议设置某种全局构建丢弃器,以确保这种情况不会再次发生。CloudBees 有一个很好的指南。
| 归档时间: |
|
| 查看次数: |
2116 次 |
| 最近记录: |