首页 > 解决方案 > 带有 sh 的 Jenkins 脚本化管道不适用于多行脚本

问题描述

在此处输入图像描述

node {

    stage('Stage 1') 
    {
        sh "echo ${WORKSPACE}"
    }

    stage('Stage 2') 
    {
        sh
        ''' 
        echo ${WORKSPACE}
        '''
    }

}

刚刚得到了简单的脚本化管道,它已经停止执行包裹在“sh”下的多行 shell 命令。片段如所附图片。

这是我在执行第 2 阶段时遇到的错误。你能告诉我如何解决这个问题吗?

尝试在“脚本控制台”中运行,但没有运气

import jenkins.model.*
jenkins = Jenkins.instance

运行 Jenkins 阶段 2 的错误如下。

groovy.lang.MissingPropertyException: No such property: sh for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:224)
at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:221)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:221)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:28)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
at WorkflowScript.run(WorkflowScript:10)
at ___cps.transform___(Native Method)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:74)

标签: jenkinsjenkins-pipelineshjenkins-groovy

解决方案


多行sh块也应该从同一行开始:-

stage('Stage 2') 
    {
        sh ''' 
            echo ${WORKSPACE}
        '''
    }

推荐阅读