如何将脚本添加到 Discard build 并将其保留用于 Max build#5

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

我在 Jenkins 上有 100 个作业,并且没有通过任何声明性管道进行配置。 而不是去单独的工作并启用丢弃构建策略并将最大构建添加到 6。 是否有一个我可以包含的脚本(bash 脚本),在丢弃构建中为所有作业启用?

我尝试使用此脚本为每个作业启用但失败了

// Jenkins job
def jobName = 'foo'
// Range of builds to delete
def rs = Fingerprint.RangeSet.fromString("0-3", false);
// Set to true to actually delete. Use false to test the script.
def reallyDelete = false;

// ----------------------------------
def job = Jenkins.instance.getItemByFullName(jobName);
println("Job: ${job.jobName}");

def builds = job.getBuilds(rs);
println("Found ${builds.size()} builds");
builds.each{ b-> 
  if (reallyDelete) {
    println("Deleting ${b}");
    b.delete();
  } else {
    println("Found match ${b}");
  }
}

我也在使用 Jenkins 2.332.2 或者如果我在 Jenkins - Manage Jenkins - Configuration -Global Build Discarders 中启用 Builder Discard(我是否不需要启用每个作业并且它会被照顾),任何帮助将不胜感激。

/ Jenkins job
def jobName = 'foo'
// Range of builds to delete
def rs = Fingerprint.RangeSet.fromString("0-3", false);
// Set to true to actually delete. Use false to test the script.
def reallyDelete = false;

// ----------------------------------
def job = Jenkins.instance.getItemByFullName(jobName);
println("Job: ${job.jobName}");

def builds = job.getBuilds(rs);
println("Found ${builds.size()} builds");
builds.each{ b-> 
  if (reallyDelete) {
    println("Deleting ${b}");
    b.delete();
  } else {
    println("Found match ${b}");
  }
}
jenkins jenkins-groovy cicd
1个回答
0
投票

是的,全局构建丢弃配置将应用于所有作业,除非它们设置了作业级别配置。

如果您想为每个作业启用构建丢弃配置,您可以使用以下脚本。修改脚本以满足您的特定需求。

def maxDaysToKeep = 30
def maxNumToKeep = 6

Jenkins.instance.getAllItems(Job.class).each { job ->
  println("Updating the job: " + job.getName())
  job.setBuildDiscarder(new hudson.tasks.LogRotator(maxDaysToKeep, maxNumToKeep))         
}
© www.soinside.com 2019 - 2024. All rights reserved.