Параметр не распознается в методе Jenkinsfile - PullRequest
0 голосов
/ 10 января 2019

Я делаю вызов метода:

notifyGerrit('Success')

, а определение метода -

def notifyGerrit(String msg) { 
    sh ''' 
       ssh -i ${JENKINS_PUB_KEY} -o UserKnownHostsFile=/dev/null \ 
           -p 12345 gerrit.abc.com gerrit review \ 
              ${GERRIT_CHANGE_NUMBER},${GERRIT_PATCHSET_NUMBER} \ 
           --label ${msg} \ -m "'Successful: ${BUILD_URL}'" 
      ''' 
}

Когда это выполняется, --label получает пустое значение

+ ssh -i **** -o UserKnownHostsFile=/dev/null -p 12345 gerrit.abc.com gerrit review 4134,1 --label -m ''\'' Successful: https://abc.gerrit.com/'\''' fatal: Label vote missing '=': -m

Я пытался использовать {msg} msg $msg ${msg} но ничего из этого не работает. Как получить значение параметра msg внутри блока кода. Обратите внимание, что другие переменные, такие как ${BUILD_URL} и т. Д. Из среды, работают.

1 Ответ

0 голосов
/ 10 января 2019

Если вы хотите интерполировать переменную $msg со строкой, вам нужно использовать двойные кавычки вместо одинарных. Как то так:

def notifyGerrit(String msg) { 
    sh """ 
       ssh -i ${JENKINS_PUB_KEY} -o UserKnownHostsFile=/dev/null \ 
           -p 12345 gerrit.abc.com gerrit review \ 
              ${GERRIT_CHANGE_NUMBER},${GERRIT_PATCHSET_NUMBER} \ 
           --label ${msg} \ 
           -m \\"'Successful: ${BUILD_URL}'\\" 
      """ 
}
...