jenkins - groovy.lang.MissingPropertyException:没有这样的属性:类的ERROR_MESSAGE:groovy.lang.Binding
问题描述
我知道这个问题已经被问过很多次了,但是发生这种情况的原因总是不同的,因此再次询问。
我最近将我的 jenkins 从 2.270 升级到了 2.278 版本。
升级后,当我尝试运行其中一个管道时,出现以下错误并且管道失败。
groovy.lang.MissingPropertyException:没有这样的属性:类的ERROR_MESSAGE:groovy.lang.Binding
它指向的代码片段看起来像这样。
def <func2>(body) {
<some code>
stages {
stage('Initialise') {
steps {
buildName "${JOB_NAME}#${BUILD_NUMBER}"
script{
if (env.RELEASE == "1.0"){
env.ERROR_MESSAGE = "Please provide RELEASE"
currentBuild.result = 'FAILURE'
return
}
}
}
post {
unsuccessful {
notifySlack(
**message: "Deploy Initialise failed: ${ERROR_MESSAGE}",**
channel:"${slackDeployChannel}")
script{
env.DEPLOY = 'no'
}
}
}
}
还有一个地方 env.ERROR_MESSAGE 被调用
def <func1>(arguments) {
try{
<SOME CODE>
return 0
}
catch (Exception e) {
env.ERROR_MESSAGE = e.getMessage()
return 0
}
}
func1 和 func2 都是单独调用的单独函数。不确定 env.ERROR_MESSAGE 是否正在初始化。
任何线索将不胜感激。
干杯
解决方案
"Deploy Initialise failed: ${ERROR_MESSAGE}"
由于初始化 ENV 变量的范围有限,因此在常规解析时失败。
它可能是这样的:
定义一个变量并让它在你想要的任何地方分配和使用。
def errorMessage
def <func2>(body) {
<some code>
stages {
stage('Initialise') {
steps {
buildName "${JOB_NAME}#${BUILD_NUMBER}"
script{
if (env.RELEASE == "1.0"){
errorMessage = "Please provide RELEASE"
currentBuild.result = 'FAILURE'
return
}
}
}
post {
unsuccessful {
notifySlack(
**message: "Deploy Initialise failed: ${errorMessage}",**
channel:"${slackDeployChannel}")
script{
env.DEPLOY = 'no'
}
}
}
}
def <func1>(arguments) {
try{
<SOME CODE>
return 0
}
catch (Exception e) {
errorMessage = e.getMessage()
return 0
}
}
推荐阅读
- javascript - 如果某事*没有*发生,则触发的计时器的名称是什么?
- php - PHP Google Pub/Sub:调用 listTopics 时为什么出现 404(未找到)错误?
- android - 在构造函数中注入需要参数的依赖项
- python - 有什么方法可以从excel文件中读取使用openpyxl python获取单元格内每个单词的样式
- python - 底图找不到底图数据雇用
- c++ - 如何避免意外的内存分配
- python - 无法在 Windows 上打开 Grakn Visualizer
- javascript - 如何将条件点击属性添加到链接
- excel - 如何将excel的行和列存储到数组中(超过1列和1行)
- python - “NoneType”任务不能存储值