为什么此命令在詹金斯中不起作用?

时间:2018-08-07 15:00:57

标签: jenkins

我是詹金斯的初学者。

此命令为什么起作用?

isSet = all.parent().not('li.coin-profile').find('span')
        .filter(function() { return $(this).data('sortby') }).length

为什么同一命令包含在Jenkinsfile中不起作用?

sed -i -E s/'image: '(.*)${stack_name}-${service_name}:.*\$/'image: '\1${stack_name}-${service_name}:${version}/g

错误是:

sh "sed -i -E s/'image: '(.*)${stack_name}-${service_name}:.*\$/'image: '\1${stack_name}-${service_name}:${version}/g"

Merci

Dom

1 个答案:

答案 0 :(得分:1)

Jenkinsfile本质上是Apache Groovy脚本,因此string escaping rules适用于Groovy。当您有斜杠时,它们需要转义(例如\-> \\),并且当您使用双引号时,实际上是使用get interpreted而不是脚本中的${}文字,而不是脚本被传递到Shell步骤。

尝试以下方法:

sh 'sed -i -E s/\'image: \'\\(.*\\)${stack_name}-${service_name}:.*\\$/\'image: \'\\1${stack_name}-${service_name}:${version}/g'