여기에서 많은 내용을 읽었지만 여전히 이 문제를 해결하는 방법을 찾을 수 없습니다.
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"""
Jenkins 공유 라이브러리에 있습니다. 공백을 피해야 한다는 내용을 읽었지만 여기서 어떤 공백을 만들고 있는지 알 수 없습니다. 이 오류가 계속 발생합니다.
line 11: warning: here-document at line 2 delimited by end-of-file (wanted `EOF')
답변1
변수가 이미 JSON으로 인코딩되어 있다고 가정하지 않는 한 유효하지 않은 JSON을 생성할 가능성이 있을 뿐만 아니라 여기 문서에 들여쓰기 문제도 있습니다.
<<-EOF
여기에서 JSON 문서가 포함된 문서를 시작합니다 . 이러한 여기 문서는 문자열로 구분되어야 하며 EOF
문자열은 그대로 두어야 합니다(들여쓰기가 전혀 없음).또는탭(아니요공간). 같은 줄에는 공백이나 어떤 종류의 다른 문자도 포함될 수 없습니다.뒤쪽에끈 EOF
.
내 생각엔 코드가 공백으로 들여쓰기되어 있기 때문에 쉘의 파서가 종료 EOF
문자열을 찾을 수 없는 것 같습니다.