在Jenkinsfile

时间:2017-05-26 11:49:48

标签: jenkins groovy jenkins-pipeline jenkins-2

我在Groovy脚本中遇到问题,其中在shell脚本部分中无法访问该变量。

脚本-1:

 def a=20;
 println ("a is: $a");

输出-1:

a is: 20

脚本-2:

def a=20;
println ("a is: $a");
sh '''echo a is $a''';

输出-2:

  

groovy.lang.MissingMethodException:没有方法签名:Script1.sh()适用于参数类型:(java.lang.String)值:[echo a is $ a]   可能的解决方案:使用([Ljava.lang.Object;),是(java.lang.Object),run(),run(),any(),with(groovy.lang.Closure)       在Script1.run(Script1.groovy:3)

如何在shell部分$a = 20中获取sh。换句话说,在shell脚本部分中传递变量$ a需要什么操作。

我正在Jenkins管道的上下文中编写这个脚本,我正面临一个问题,即在shell部分中看不到groovy变量。

1 个答案:

答案 0 :(得分:1)

这有效:

pipeline {
    agent any
    stages {
        stage('Example') {
            steps {
                script {
                    // a is accessible globally in the Jenkinsfile
                    a = 20
                    // b is only accessible inside this script block
                    def b = 22
                    sh "echo a is $a"
                    sh "echo b is $b"
                }
            }
        }
    }
    post { 
        always { 
            sh "echo a is $a"
        }
    }
}

你应该对shell语句使用双引号而不是三重单引号。