我是詹金斯的初学者。
此命令为什么起作用?
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
答案 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'