Jenkins外壳隐藏stacktrace丢失了curl输出

时间:2019-01-23 15:25:54

标签: bash jenkins sh jenkins-pipeline stack-trace

我正在尝试从以下脚本中隐藏stacktrace:

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

为什么输出会丢失,还有其他方法可以删除堆栈跟踪吗?

1 个答案:

答案 0 :(得分:1)

这里的解决方法是我声明多行脚本错误。在这种情况下,应使用双引号而不是单引号。所以解决方法:

script: """
  my 
  script
  here
""",