Jenkins如何根据运行条件设置不同构建的差异化保留时长?
Jenkins 按条件动态设置构建保留时长方案
Jenkins 原生 Declarative Pipeline 完全支持该需求,无需额外安装插件,你可以通过内置属性动态调整单个构建的保留规则,实现不同条件下的差异化留存时长。
具体实现方案如下:
- 原生无插件实现方式
先配置全局默认的构建保留规则,再在Pipeline执行逻辑中插入条件判断,动态修改当前构建的留存时长,参考代码示例:pipeline { agent any // 配置默认规则:常规构建仅保留7天 options { buildDiscarder(logRotator(daysToKeepStr: '7', numToKeepStr: '-1')) } stages { stage('业务执行') { steps { script { // 此处替换为你的实际业务逻辑,获取condition1、condition2的判断结果 if (condition1) { // 满足条件1:保留30天(参数单位为毫秒) currentBuild.setRetentionTime(30 * 24 * 60 * 60 * 1000) } else if (condition2) { // 满足条件2:保留180天 currentBuild.setRetentionTime(180 * 24 * 60 * 60 * 1000) } } } } } }注意:如果使用的Jenkins版本较旧不支持
setRetentionTime方法,也可以将符合条件的构建设置为currentBuild.keepLog = true永久保留,再搭配全局定时清理脚本按规则二次清理,也能实现同等效果。 - 可选插件方案(非必需)
如果你需要适配更复杂的多维度保留规则,可选择安装Build Retention Plugin类扩展插件简化配置,但上述原生方案已经可以完全覆盖你提出的需求,无需额外引入插件依赖。
内容的提问来源于stack exchange,提问作者queeg
相关产品推荐
相关产品推荐

