Who*_*AmI 2 bash curl here-document jenkins
我在这里读了很多,但仍然找不到如何解决这个问题:
steps.wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm']) {
steps.withCredentials([steps.usernamePassword(credentialsId: "test", usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_PASSWORD')]) {
steps.sh """
curl --silent -u \${GIT_USERNAME}:\${GIT_PASSWORD} -H "Content-Type: application/json" -X POST https://some.url --data-binary @- <<-EOF
{
"state": "$STATE",
"key": "\$JOB_NAME",
"name": "\$BUILD_TAG",
"url": "\$BUILD_URL",
"description": "$DESCRIPTION"
}
EOF"""
Run Code Online (Sandbox Code Playgroud)
它位于詹金斯共享库中。我读过我必须避免空格,但我没有看到我在这里创建了哪些空格。我不断收到此错误:
line 11: warning: here-document at line 2 delimited by end-of-file (wanted `EOF')
Run Code Online (Sandbox Code Playgroud)
除了可能创建无效的 JSON(除非您可以假设您的变量已经是 JSON 编码)之外,您的此处文档还存在缩进问题。
您用于<<-EOF启动包含 JSON 文档的此处文档。这样的此处文档应该由字符串分隔EOF,并且该字符串需要左齐平(根本没有缩进),或者可以使用制表符(而不是空格)缩进。字符串后面的同一行上不能有空格或任何类型的其他字符EOF。
我的猜测是代码是使用空格缩进的,这就是为什么 shell 的解析器找不到终止字符串的原因EOF。