You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins:如何根据用户选择的参数在Post阶段执行清理操作?

实现Jenkins构建后按参数执行清理的可行方案

你可以通过两种简洁的方式实现需求,同时修正原脚本里的逻辑错误:

方式一:修正Script块的判断逻辑

原脚本里ON FAIL的判断逻辑写反了——当参数选ON FAIL时,应该是构建失败时执行清理,而不是成功时。以下是修正后的完整代码:

pipeline {
    agent any
    parameters {
        choice(name: 'CLEANUP', choices: ['ALWAYS', 'ON FAIL', 'NEVER'], description: '选择清理时机')
    }
    stages {
        // 你的构建阶段
        stage('Build') {
            steps {
                echo '执行构建任务'
            }
        }
    }
    post {
        always {
            script {
                def shouldClean = false
                if (params.CLEANUP == 'ALWAYS') {
                    shouldClean = true
                } else if (params.CLEANUP == 'ON FAIL' && currentBuild.result == 'FAILURE') {
                    shouldClean = true
                }
                // NEVER的情况直接跳过
                if (shouldClean) {
                    deleteDir() // 直接调用deleteDir,若清理步骤可能抛异常,可嵌套cleanup块:cleanup { deleteDir() }
                }
            }
        }
    }
}

方式二:拆分到Post的不同条件块(更直观)

利用Jenkins Post阶段的原生条件块(always、failure),结合参数判断,逻辑更清晰:

pipeline {
    agent any
    parameters {
        choice(name: 'CLEANUP', choices: ['ALWAYS', 'ON FAIL', 'NEVER'], description: '选择清理时机')
    }
    stages {
        stage('Build') {
            steps {
                echo '执行构建任务'
            }
        }
    }
    post {
        always {
            script {
                if (params.CLEANUP == 'ALWAYS') {
                    deleteDir()
                }
            }
        }
        failure {
            script {
                if (params.CLEANUP == 'ON FAIL') {
                    deleteDir()
                }
            }
        }
        // NEVER情况无需处理,直接跳过所有清理
    }
}

两种方式都能完美实现你的需求,第二种方式的逻辑更易读,便于后续维护。

内容的提问来源于stack exchange,提问作者shugo0000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 07:52:18