从Jenkins管道中的shell中访问groovy变量

问题描述 投票:-1回答:2

answer没有帮助我

以下是groovy中的方法:

def analyze(repoName){

        result= sh (
                    script: '''
                            cd ${WORKSPACE}/${BUILD_NUMBER}
                            cat > sonar-project.properties << EOF_$$
sonar.projectKey=ABC-$repoName
sonar.projectName=ABC
sonar.projectBaseDir=${WORKSPACE}/${BUILD_NUMBER}
EOF_$$
                            ''',
                    returnStatus: true
                    ) == 0
        print "Creating file - Return status: ${result}"
  }

下面的行给出错误:

sonar.projectKey=ABC-$repoName

使用条目sonar.projectKey=ABC-创建属性文件


如何在sh()步骤中使用groovy变量?

jenkins groovy jenkins-pipeline jenkins-groovy
2个回答
1
投票

你应该为字符串插值加双引号,并在以下地方通过$转义\$

  • ${WORKSPACE}${BUILD_NUMBER},你打算将它们用作bash环境变量,而不是groovy变量
  • EOF_$$,你打算用它字面意思

更改的代码:

def analyze(repoName){

        result= sh (
                    script: """
                            cd \${WORKSPACE}/\${BUILD_NUMBER}
                            cat > sonar-project.properties << EOF_\$\$
sonar.projectKey=ABC-$repoName
sonar.projectName=ABC
sonar.projectBaseDir=\${WORKSPACE}/\${BUILD_NUMBER}
EOF_\$\$
                            """,
                    returnStatus: true
                    ) == 0
        print "Creating file - Return status: ${result}"
  }

2
投票

你应该使用双引号进行字符串插值,所以只需将'''替换为"""即可

并将EOF_$$改为EOF_\$\$

© www.soinside.com 2019 - 2024. All rights reserved.