[英]Jenkins Declarative Pipeline is not supporting shell/bash syntax
我的 jenkins 管道中有一个 shell 脚本,它将调用 mvn。 为此,我必须将变量值传递给 mvn。 该变量未在 Jenkins 管道的外壳内传递。 但是当从本地机器外壳尝试时,它按预期工作正常。
pipeline{
agent {
node{
label "${AGENT}"
}
}
stages{
stage("Setting MultiJob Properties"){
steps{
sh '''set +x
export VERSION=$(mvn -B -q -Dexec.executable=echo -Dexec.args=\${${ARTIFACT_NAME}} )
echo $VERSION
'''
}
}
}
}
ARTIFACT_NAME
- 我是从 Jenkins 那里传ARTIFACT_NAME
。
${${ARTIFACT_NAME}}
- 这个变量是 Freestyle 作业中完美的替换值,它在流水线作业中抛出错误。
错误消息:script.sh:3:替换错误
任何人都可以帮我解决这个问题吗?
正如 Ian 所写,您将整个脚本作为文字 (''') 而不是内插字符串 (""") 传递,因此变量名称不会被其值替换:
pipeline{
agent {
node {
label AGENT
}
}
stages {
stage("Setting MultiJob Properties") {
steps {
sh """set +x
export VERSION=\$(mvn -B -q -Dexec.executable=echo -Dexec.args=\${$ARTIFACT_NAME})
echo $VERSION"""
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.