jenkins - 带有 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)
解决方案
多行sh块也应该从同一行开始:-
stage('Stage 2')
{
sh '''
echo ${WORKSPACE}
'''
}
推荐阅读
- c++ - 是否存在对象的存储在其生命周期内可能发生变化的任何情况?
- r - Unicode 字符输出与 print() 的差异
- node.js - 如何使用自动生成的 SSL 密钥正确地向服务器发送 HTTPS 请求?
- c++ - 我对下面 [dcl.enum]/5 (5.3) 中的“否则”一词的解释是否正确?
- excel - 如何根据一系列单元格打开和关闭多个 Excel 工作簿
- excel - 当单元格已包含该列表中的值时,如何从单元格的验证列表中删除项目?
- mysql - 使用单个表单将数据保存到两个表
- pyspark - 如何在 AWS Glue 作业中附加带有源名称的新列?
- dialogflow-es - 如何匹配当前或最新的问题
- javascript - 模态弹出窗口无法正常工作(希望背景页面变暗)