경고: 여기서 문서 라인 2는 파일 끝으로 구분됩니다("EOF" 필요).

경고: 여기서 문서 라인 2는 파일 끝으로 구분됩니다("EOF" 필요).

여기에서 많은 내용을 읽었지만 여전히 이 문제를 해결하는 방법을 찾을 수 없습니다.

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문자열을 찾을 수 없는 것 같습니다.

관련 정보