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

Jenkins流水线报MissingPropertyException无法获取VAR1变量如何解决

问题根因

抛出groovy.lang.MissingPropertyException的核心原因有两个:

  1. Groovy语法使用错误:${VAR1}是GString专属的字符串插值语法,仅能在双引号包裹的字符串内部使用,脱离双引号直接写${VAR1}会被Groovy引擎判定为去全局Binding域查找属性,无法读取到脚本顶层定义的局部变量VAR1。
  2. 传参逻辑冗余:调用下游Job的extendedChoice参数时,value字段直接接收字符串类型变量即可,不需要额外用插值语法包裹。
修正后的可执行代码

针对作用域和语法问题修正后的完整脚本如下:

import groovy.transform.Field
// 加@Field注解将顶层变量的作用域提升为脚本级,避免函数内访问不到
@Field def VAR1 = 'build architectures'

def BuildANew(customVariables)
{
   echo "Build declaration"
   build job: 'LocalJenkins', parameters:[
        // 直接传入变量VAR1,不需要额外加${}包裹
        extendedChoice(name: 'VAR1', value: VAR1),
        param(name:'Variables', value: customVariables)
    ]
}

pipeline{
   agent any
   stages{
      stage("Build"){
         parallel{
            stage("Build1"){
               agent{
                  label 'label'
               }
               steps{
                  script{
                      // 不要直接传内置parameters对象,替换为实际要传递的业务参数值
                      BuildANew("your-real-variable-content")
                  }
               }
            }
         }
      }
   }
}
其他可选实现方案

如果不想使用@Field注解处理变量作用域,也可以把VAR1定义到流水线的environment块中,更符合声明式流水线的写法规范:

pipeline{
   agent any
   environment {
       VAR1 = 'build architectures'
   }
   stages{
      stage("Build"){
         parallel{
            stage("Build1"){
               agent{
                  label 'label'
               }
               steps{
                  script{
                      BuildANew("your-real-variable-content")
                  }
               }
            }
         }
      }
   }
}
// 自定义BuildANew函数逻辑不变,函数内可直接读取到VAR1变量
避坑提示
  • 声明式流水线中调用自定义Groovy函数时,必须把函数调用逻辑包裹在script{}块内,否则会触发声明式语法校验错误。
  • 自定义传参不要和Jenkins内置的parameters对象重名,否则会出现非预期的参数传递错误。
  • 所有Groovy字符串插值逻辑${xxx}都必须写在双引号字符串内部,单引号字符串不会执行插值替换。

内容的提问来源于stack exchange,提问作者Hiep Le Thanh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:39:26