【发布时间】:2021-12-07 01:54:00
【问题描述】:
我的 jenkins 管道中有一个 shell 脚本,它将调用 mvn。为此,我必须将变量值传递给 mvn。该变量未在 Jenkins 管道的外壳内传递。但是当从本地机器外壳尝试时,它可以正常工作。
ARTIFACT_NAME="Sample_Artifact"
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
'''
}
}
}
}
预期过程:export VERSION=$(mvn -B -q -Dexec.executable=echo -Dexec.args=${Sample_Artifact} )
预期输出:1.0001
ARTIFACT_NAME - 我从 Jenkins UI 传递它。
${${ARTIFACT_NAME}} - 此变量在 Freestyle 作业中完美替换值,它在 Pipeline 作业中引发错误。
错误消息:script.sh: 3: 替换错误
谁能帮我解决这个问题?
【问题讨论】:
-
什么样的错误?
${${ARTIFACT_NAME}缺少关闭} -
显示您的实际管道。可能需要 " 而不是 '。Explanation,
-
FYR, 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 ''' } } } }
-
错误信息是什么意思?
-
例如:以下代码在我的本地机器外壳中运行时没有任何错误,但是当我从 Jenkins 管道尝试时它抛出错误。 #!/bin/sh ARTIFACT_NAME="test" sample=$(echo \${${ARTIFACT_NAME}}) echo "$sample" shell 输出:${test} Jenkins 管道错误:script.sh:3:错误替换@梅尔乔特
标签: bash variables jenkins jenkins-pipeline