Jenkinsfile:SSH 命令中的变量不是 "parsed"
Jenkinsfile: varibale not "parsed" inside SSH command
我在 JenkinfFile 中定义了我的工件的一个版本,该版本已得到很好的解析。我用变量的输出测试了这个。但是,它不会在 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 不存在。
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
我在 JenkinfFile 中定义了我的工件的一个版本,该版本已得到很好的解析。我用变量的输出测试了这个。但是,它不会在 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 不存在。
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