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

Jenkins Stashed File Parameter插件未传文件时流水线报错求助

解决Jenkins Stashed File Parameter插件未上传文件时的MissingPropertyException错误

问题根源在于:当未上传文件时,Stashed File Parameter插件不会生成uploadfile_FILENAME这个属性,直接访问该属性会触发Groovy的MissingPropertyException(旧版本插件可能默认生成空值,新版本逻辑调整后不再生成)。

以下是两种可行的解决方案:

方案一:先检查属性是否存在再取值

通过Groovy的binding.hasVariable()方法判断属性是否存在,不存在则赋值为空字符串,避免直接访问不存在的属性抛出异常:

修改后的完整流水线代码:

pipeline {
    agent {
        node {
            label 'Ansible_host'
        }
    }
    stages {
        stage('Precheck') {
            steps {
                // 未上传文件时unstash可能报错,添加changelog: false避免失败
                unstash changelog: false, name: 'uploadfile'
                script{
                    // 先判断属性是否存在,不存在则设为空字符串
                    def uploadedFileName = binding.hasVariable('uploadfile_FILENAME') ? uploadfile_FILENAME : ''
                    if ( uploadedFileName != "" )
                    {
                        sh "mv uploadfile '$uploadedFileName'"
                        echo "File is uploaded from localhost"  
                    }
                    else
                    {
                        echo "File is uploaded from $source_host"
                    }
                }
                sh "echo Im from Jenkins>/tmp/jenkinsmoht.txt"
            }
        }
    }
}

方案二:使用try-catch捕获异常

如果需要更灵活的错误处理,可以用try-catch包裹属性访问逻辑:

script{
    def uploadedFileName = ''
    try {
        uploadedFileName = uploadfile_FILENAME
    } catch (MissingPropertyException e) {
        // 未上传文件时的处理逻辑
        uploadedFileName = ''
    }
    if ( uploadedFileName != "" )
    {
        sh "mv uploadfile '$uploadedFileName'"
        echo "File is uploaded from localhost"  
    }
    else
    {
        echo "File is uploaded from $source_host"
    }
}

额外提示

  • 未上传文件时,unstash 'uploadfile'可能也会抛出异常,添加changelog: false参数可以让unstash在没有文件时跳过失败,继续执行后续步骤。
  • 两种方案中,方案一更高效,因为提前判断属性存在性,避免了异常捕获的性能开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:23:15