有没有办法安排一个 cron 作业来删除 Jenkins 中旧的构建历史记录?

问题描述 投票:0回答:1

我想要实现的目标:

  • 我想在 Jenkins 中有一个 cron 作业,它将帮助我删除多分支管道中一些过时分支的构建历史记录。也就是说,在名为
    Demo
    的多分支管道内,检查超过三个月的过时分支,然后删除那里的构建历史记录。

上下文:

  • 我有一个名为
    Demo
    的多分支管道。它链接到我的 Github,因此,在管道内部它包含许多分支。通常,我可以在 Jenkins UI 上删除分支的构建历史记录,但这非常有压力。有没有办法让我有一个 cron 作业或 groovy 脚本来帮助实现这一目标?

到目前为止我所拥有的:

import com.cloudbees.hudson.plugins.folder.Folder
import jenkins.model.Jenkins
import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject

int months = 3

int totalJobs = 0
int totalBuilds = 0
int olderThanThreeMonths = 0

String targetJobName = 'demo'

// Find the multibranch pipeline project named 'demo'
def targetJob = Jenkins.instance.getAllItems(WorkflowMultiBranchProject).find { it.fullName == targetJobName }

if (targetJob) {
    println "Found multibranch pipeline named '${targetJobName}'"
    
    // Count the total number of branches (WorkflowJobs) in the multibranch pipeline
    int branchCount = targetJob.items.size()
    println "Total number of branches: ${branchCount}"

我对 Groovy 很陌生。昨天才开始学习。我能够打印管道中有效的分支总数,但我发现很难检查超过三个月的分支,并且在分支内删除构建历史记录以释放空间。

请帮忙。谢谢。

jenkins groovy jenkins-groovy jenkins-cli
1个回答
0
投票

多分支管道已经提供了删除过时项目的选项:

enter image description here

您可以在多分支管道配置部分找到它。但是,请注意,您必须定期运行“扫描组织”,以便发生此丢弃过程。

另一方面,如果您想在工作级别上删除构建,您可以在 Jenkins 管道中实现构建丢弃器:

pipeline {
  options {
    buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10'))
  }
  ...
}
© www.soinside.com 2019 - 2024. All rights reserved.