Jenkinsfile:变量未在 SSH 命令中“解析”
Posted
技术标签:
【中文标题】Jenkinsfile:变量未在 SSH 命令中“解析”【英文标题】:Jenkinsfile: varibale not "parsed" inside SSH command 【发布时间】:2021-09-29 12:37:33 【问题描述】:我在 JenkinsfFile 中定义了我的工件的一个版本,它可以很好地解决。我用变量的输出对此进行了测试。但是,它不会在 SSH 命令期间被解析。什么是正确的语法?
version = sh (
script: './gradlew -q printVersion',
returnStdout: true
).trim()
echo "$version"
sshPut remote: remote, from: 'build/libs/core-\$version-all.jar', into: '/opt/microservices/core.jar'
输出:
1.0.6 java.lang.IllegalArgumentException: /jenkins/workspace/core/build/libs/core-$version-all.jar 不存在。
【问题讨论】:
【参考方案1】:Groovy 中的字符串插值需要使用双引号:-
sshPut remote: remote, from: "build/libs/core-$version-all.jar", into: '/opt/microservices/core.jar'
这就是为什么您的 echo
语句工作正常,但您的 sshPut
却不行。
见:https://groovy-lang.org/syntax.html#_string_interpolation
【讨论】:
该解决方案不起作用。同样的问题 @Jacob 删除反斜杠,你无意中逃脱了 $。 知道了。谢谢以上是关于Jenkinsfile:变量未在 SSH 命令中“解析”的主要内容,如果未能解决你的问题,请参考以下文章
Jenkinsfile:在 Jenkinsfile 中设置/更新一个全局变量并在构建中使用它
Jenkinsfile/Groovy:为啥 curl 命令会导致“错误请求”