如何快速删除 Jenkins 服务器上许多旧的 Pipeline Job 构建?

Eri*_*vic 2 jenkins jenkins-pipeline

我有一个 Jenkins 服务器,它似乎无缘无故地有大量已用空间。在四处挖掘之后,我注意到旧的构建并没有被保留的分支(master例如)丢弃。我可以通过添加“keep x builds”设置来修复所有项目,但我有很多项目,我需要立即清理磁盘。

在 Jenkins 服务器上手动删除作业既麻烦又耗时,而且如果您需要快速释放一些空间(除了从硬盘驱动器中手动删除内容),不清楚如何继续。从 Jenkinsjob目录中删除内容可能也会在fingerprints目录中留下一些东西(?) - 这不是一个好主意。

如何快速清理一堆项目,同时仍然在 Pipeline 项目中的每个分支留下 5 个构建?

Eri*_*vic 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 次

最近记录:

5 年,6 月 前