Jenkins Groovy脚本中的转义引号和括号 -> shell -> curl



我需要使用有效负载进行API调用(一切都需要完全一样(

{"file": "//'HLQ.DATASET(MEMBER)'"}

詹金斯管道中。我想不出有效载荷的正确逃逸。问题是圆括号、单转义(Groovy抱怨(、双转义(其中一个斜杠将气泡一直插入curl调用(。

def String job = """{\"file\": \"\'HLQ.DATASET\(MEMBER\)\'\"}"""
...
script {
 def String response = sh(script: " curl -X PUT -w %{http_code} -v --header 'Content-Type: application/json' --cookie cookies.txt --header 'X-CSRF-ZOSMF-HEADER: dummy' --header 'X-IBM-Notification-URL: ${hook.getURL()}' https://.../zosmf/restjobs/jobs --data '$job'", returnStdout: true).trim()
}

如果您正在检查Jenkins控制台输出以确定消息是否正确发送,则会误导您。您在控制台输出中看到的并不总是经过解释的字符串。

你能试试下面的吗?此外,为了检查Curl发送的内容,您可以使用类似--trace 的标志

def job = "{"file": "//'HLQ.DATASET(MEMBER)'"}"
writeFile(file: 'payload.txt', text: job)
sh 'cat payload.txt'
def String response = sh(script: "curl -X PUT -w %{http_code} -v --header 'Content-Type: application/json' --cookie cookies.txt --header 'X-CSRF-ZOSMF-HEADER: dummy' --header 'X-IBM-Notification-URL: ${hook.getURL()}' https://.../zosmf/restjobs/jobs --data @payload.txt", returnStdout: true).trim()

最新更新