Jenkinsfile 中的变量插值

Interpolation of variables inside Jenkinsfile

我现在正在寻求帮助,因为我一直在努力使用一个简单的 sed 命令在需要一点变量插值的 Jenkinsfile 中调用。

更好地显示命令而不是大量解释:

sh "sed -i -e 's/-RELEASE/-${unixEpoch}/g' myFile"

sed 不同意此语法并打印命令 s/ 未完成。

我已阅读 Groovy 有关 String 和 GString 的文档,但我仍然不明白我做错了什么?

有什么线索吗?

编辑:

我通过调用 date +%s 获取 unixEpoch 以获得当前时间戳。

我打印命令只是为了确定执行了什么,我发现:

sed -i -e 's/-RELEASE/-1525341883'
/g' myFile

sed 发送的完整错误是:

sed: -e expression #1, char 22: unterminated 's' command

我发现打印的命令中间有一个 \n 很奇怪...

date +%s 末尾有一个换行符,当您将它插入到生成的 sed 中时,它包含了换行符,这解释了为什么 sed 会抱怨。在使用它之前,您可以 ${unixEpoch.trim()} 或 trim unixEpoch 值。