Dan*_*eck 89
您有多种选择:
临时设置要保留在作业配置中的构建数量(丢弃旧构建),以便在下一次构建完成时删除这些构建。如果下一个版本是 1800,请将其设置为保留最近的 85 左右。在开始下一个构建之前,将所有较旧的构建(即 1 到 10)标记为“永久保留此构建”。如果您有一个阻止上游构建被删除的下游作业,则此选项将无法删除某些构建(尽管它们都失败了,但在您的情况下这不是问题)。
使用脚本控制台的管理詹金斯。如果它是顶级工作(不在文件夹中),则以下方法可以解决问题:
Jenkins.instance.getItemByFullName('JobName').builds.findAll { it.number > 10 && it.number < 1717 }.each { it.delete() }
当然,这种方法一般需要良好的备份。使用脚本控制台可以打破很多东西。
从磁盘中删除构建的文件夹(默认情况下$JENKINS_HOME/jobs/JobName/builds/,使用开始时间戳作为文件夹名称)并重新启动 Jenkins,或从磁盘重新加载配置。此选项将不允许通过将任何更改移动到后续构建来保持 SVN 历史记录的插件来完成它们的工作。
hel*_*rry 22
只需进行 API 调用:
curl -X POST http://jenkinUser:jenkinAPIToken@yourJenkinsURl.com/job/theJob/[11-1717]/doDelete
要获取 APIToken:登录 Jenkins > 配置 > 显示 API 令牌。
jal*_*tek 17
正如Aaron正确指出的那样,您也可以为此目的使用Jenkins CLI:
java -jar jenkins-cli.jar -s http://yourserver.com delete-builds <JobName> 11-1717
Run Code Online (Sandbox Code Playgroud)
在 Jenkins 脚本控制台中运行的脚本模板。reallyDelete在实际删除之前使用该标志对其进行测试:
// Jenkins job
def jobName = 'foo'
// Range of builds to delete
def rs = Fingerprint.RangeSet.fromString("11-1717", 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.fullName}");
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}");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74962 次 |
| 最近记录: |