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

Jenkins Pipeline使用sshCommand定义环境变量报MissingPropertyException错误

错误产生原因
  • 首要原因是变量作用域不匹配:在pipeline代码块外部用def关键字定义的remote变量属于Groovy顶层脚本作用域,Jenkins声明式Pipeline的steps块运行在独立的沙箱执行上下文当中,默认无法直接访问顶层用def声明的普通变量,因此抛出了找不到remote属性的异常。
  • 代码同时存在潜在的字符串插值错误:定义remote参数时的host : '${HOST}'、执行命令时的command: 'export ENV1=${env.ENV1}'都使用了单引号包裹变量占位符,Groovy语法规则中单引号包裹的字符串不会解析内部的变量插值表达式,即使作用域问题修复后,也会出现变量无法正确替换的问题,需要改为双引号包裹才能正常解析占位符。
修复参考代码

可以将remote变量的定义移入script块内,同时调整字符串引号即可正常执行:

pipeline {
    agent any
    stages {
        stage('env var'){
            steps {
               script {
                   def remote = [name: 'something', host : "${HOST}", password: "${PASSWORD}"]
                   sshCommand remote: remote, command: "export ENV1=${env.ENV1}"
               }
            }
        }
    }
 }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:54:03