繁体   English   中英

Jenkins 声明式流水线不支持 shell/bash 语法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM