Jenkinsfile方法无法识别参数

时间:2019-01-10 19:47:40

标签: groovy jenkins-pipeline jenkins-groovy

我正在执行方法调用:

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 :(得分:2)

如果要用字符串对$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}'\\" 
      """ 
}