当运行执行bash shell的Jenkins Groovy Piepline脚本时,在回显时无法找到本地设置的变量。
报告错误 -
groovy.lang.MissingPropertyException: No such property: md5Value for class: WorkflowScript
非常感谢任何想法/指针。
#!groovy
node {
try {
stage('Test-Echo') {
sh """
#!/usr/bin/env bash
md5Value='y'
echo 'md5Value : ${md5Value}'
"""
}
} catch (e) {
println (e.getMessage())
}
}
是的我尝试了这些不同的排列,都报告了同样的错误。
echo 'md5Value : ${md5Value}'
echo "md5Value : ${md5Value}"
echo 'md5Value : ' ${md5Value}
echo "md5Value : " ${md5Value}
echo 'md5Value : $md5Value'
echo 'md5Value : ' $md5Value
echo "md5Value : $md5Value"
echo "md5Value : " $md5Value
如果在本地处理异常,则会产生错误 -
hudson.AbortException: script returned exit code 1
将变量更新为
echo 'md5Value : " \${md5Value}
现在正在产生错误
hudson.AbortException: script returned exit code 126 //: Permission denied
答案 0 :(得分:0)
所以解决方法是将bash shell放入自己的脚本中,然后局部变量赋值就像在这里看到的那样 -
#!groovy
node {
try {
stage('Test-Echo') {
git poll: true,
branch: "develop",
credentialsId: 'xxx',
url: 'https://yyy.org/here/and-there.git'
sh """
chmod +x ./jenkins/test/echo-test.sh
./jenkins/test/echo-test.sh
exit "\${?}"
"""
}
} catch (e) {
println (e.getMessage());
}
}
和bash脚本
#!/bin/bash
md5Value="y"
echo "md5Value : ${md5Value}"
答案 1 :(得分:0)
将三重双引号更改为单引号,并在脚本中将单引号替换为双引号,如下所示:
sh '''
#!/usr/bin/env bash
md5Value='y'
echo "md5Value : ${md5Value}"
'''
答案 2 :(得分:0)
我已经尝试了 this link 中建议的解决方法,并且奏效了。试试
echo "md5Value : ${'$'}md5Value"