Jenkins groovy.lang.MissingPropertyException:没有这样的属性Bash

时间:2018-02-06 12:45:59

标签: bash jenkins groovy

当运行执行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())
    }
}

回复评论1

是的我尝试了这些不同的排列,都报告了同样的错误。

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

回复评论2

将变量更新为

echo 'md5Value : " \${md5Value}

现在正在产生错误

hudson.AbortException: script returned exit code 126 //: Permission denied

3 个答案:

答案 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"