Jenkins shell 隐藏堆栈跟踪丢失 curl 输出
Jenkins shell hiding stacktrace loses curl output
我试图从以下脚本中隐藏堆栈跟踪:
def status = "false"
while (status.equals("false")) {
sleep 5
status = sh(
script: "curl -s -H 'Accept: application/json' http://my.ip | jq \'.completed\' ",
returnStdout: true
).trim()
echo "status: ${status}"
}
输出:
+ curl -s -H 'Accept: application/json' 'http://my.ip'
+ jq .completed
status: true
如果我只想查看输出消息,我必须在脚本主体中写入 "set +x"。但这会导致状态返回为 NULL。
status = sh(
script:'''
set +x
script: "curl -s -H 'Accept: application/json' http://my.ip | jq \'.completed\'
''',
returnStdout: true
).trim()
输出:
status: NULL
为什么输出会丢失,有没有其他方法可以删除堆栈跟踪?
这里的修复是我声明多行脚本错误。对于这种情况,它应该使用双引号而不是单引号。所以解决方案:
script: """
my
script
here
""",
我试图从以下脚本中隐藏堆栈跟踪:
def status = "false"
while (status.equals("false")) {
sleep 5
status = sh(
script: "curl -s -H 'Accept: application/json' http://my.ip | jq \'.completed\' ",
returnStdout: true
).trim()
echo "status: ${status}"
}
输出:
+ curl -s -H 'Accept: application/json' 'http://my.ip'
+ jq .completed
status: true
如果我只想查看输出消息,我必须在脚本主体中写入 "set +x"。但这会导致状态返回为 NULL。
status = sh(
script:'''
set +x
script: "curl -s -H 'Accept: application/json' http://my.ip | jq \'.completed\'
''',
returnStdout: true
).trim()
输出:
status: NULL
为什么输出会丢失,有没有其他方法可以删除堆栈跟踪?
这里的修复是我声明多行脚本错误。对于这种情况,它应该使用双引号而不是单引号。所以解决方案:
script: """
my
script
here
""",