Ошибка Дженкинса: 54: ожидание чего-либо кроме '' \ n '';все равно получил - PullRequest
0 голосов
/ 01 февраля 2019

Я использую приведенный ниже скрипт Apache Groovy в конвейере jenkins для развертывания моего артефакта (dev.ear) на сервере.Я встроил сценарий оболочки в Groovy для безопасного копирования dev.ear с подчиненного jenkins на целевой сервер (сервер Unix).

node('linux') {
    stage('Checkout/Download/Deploy') {
        timeout(time: 30, unit: 'MINUTES') {

        def ziptmp = '.ziptmp'
        output = sh returnStdout: true, script:"/bin/rm -rf ${ziptmp}; /bin/mkdir ${ziptmp}; cd ${ziptmp}; /usr/bin/unzip -qq ${tempdir}/${artifactFilename}; ls -ltr; echo *; 
            if [ -e dev.ear ]
            then
                scp dev.ear lsfi@${serverName57}:/apps/wls/dev/applications;
                echo "COPIED DEV ARTIFACT TO SERVER"

            else
                echo "DEPLOYMENT PACKAGE DOESNT CONTAIN DEV ARTIFACT"
            fi"
        echo "RESULT::: ${output}"
        }
    }
}

При запуске задания Jenkins

WorkflowScript: 54: expecting anything but ''\n''; got it anyway @ line 54, column 171.
   ctFilename}; ls -ltr; echo *; 
появляется следующая ошибка:

Я удалил новые строки в сценарии оболочки и обновил код, как показано ниже:

def ziptmp = '.ziptmp'
output = sh returnStdout: true, script:"/bin/rm -rf ${ziptmp}; /bin/mkdir ${ziptmp}; cd ${ziptmp}; /usr/bin/unzip -qq ${tempdir}/${artifactFilename}; ls -ltr; echo *; if [ -e dev.ear ] then scp dev.ear lsfi@${serverName57}:/apps/wls/dev/applications; fi;"
echo "RESULT::: ${output}"

Но я получаю следующую ошибку:

line 2: syntax error near unexpected token `fi'

Как устранить эту ошибку.

1 Ответ

0 голосов
/ 01 февраля 2019

Groovy не нравится перевод строки в GString.В соответствии с поваренной книгой Grails вы можете создавать многострочные строки, используя '''Your multiline String''' или """Your multiline ${GString}""".

Я не очень уверен в синтаксисе bash, но вы также, похоже, упускаететочка с запятой после if [ -e dev.ear ] в соответствии с этими документами .

Собираем все вместе:

output = sh returnStdout: true, script: """/bin/rm -rf ${ziptmp}; /bin/mkdir ${ziptmp}; cd ${ziptmp}; /usr/bin/unzip -qq ${tempdir}/${artifactFilename}; ls -ltr; echo *; 
    if [ -e dev.ear ];
    then
        scp dev.ear lsfi@${serverName57}:/apps/wls/dev/applications;
        echo "COPIED DEV ARTIFACT TO SERVER"
    else
        echo "DEPLOYMENT PACKAGE DOESNT CONTAIN DEV ARTIFACT"
    fi"
echo "RESULT::: ${output}"""
...