【发布时间】:2018-12-14 23:45:11
【问题描述】:
我正在尝试使用与 Jenkins Pipelines 一起工作的管道获取 shell 命令。相关:Jenkins pipeline sh does not seem to respect pipe in shell command。我还发现:Jenkins pipeline, bash, and pipes
但是,我的成功并不成功。我可以从字面上复制/粘贴管道中第一个帖子的分辨率并且它确实有效(至少它尝试执行 shell,由于缺少 pom.xml 而失败)。
当我尝试根据自己的需要修改 shell 命令时,它会失败:
def bgd_discovery = $/eval "cf apps | grep ${appHost}.${host} | cut -d ' ' -f 1 | sed 's/${args.appName}-bgd//'"/$
echo "${bgd_discovery}"
Jenkins 抛出 DSL 方法错误:
java.lang.NoSuchMethodError: No such DSL method 'eval "cf apps | grep [...app host...] | cut -d ' ' -f 1 | sed 's' found among steps [...]
它似乎在 sed 的 / 开始时停止了,但这不是问题,因为这个 确实 工作(从第一篇文章开始):
def ver_script = $/eval "sed -n '/<version>/,/<version/p' pom.xml | head -1 | sed 's/[[:blank:]]*<\/*version>//g'"/$
有趣的是,这是问题的另一个症状:sed 正则表达式末尾添加的连字符
def bgd_discovery = $/eval "cf apps | grep ${appHost}.${host} | cut -d ' ' -f 1 | sed 's/${args.appName}-bgd-//'"/$
产生了这个错误:
WorkflowScript: 26: expecting '}', found '' @ line 26, column 10.
echo "${bgd_discovery}"
我不知道出了什么问题。
【问题讨论】:
标签: shell jenkins pipe jenkins-pipeline