Jenkins-withCredentials文件截断路径

问题描述

我正在尝试引用一个秘密文件,以便像newman一样在工作区的子目录下运行:

String integrationFile = "src/test/postman/integration.json"
String environmentFile = "src/test/postman/environment-dev.json"
String reportFile = "integrationReport.xml"
String reportArgs = "--reporters cli,junit --reporter-junit-export ${reportFile}"

node {
    withCredentials([file(credentialsId: "${env.FILE_KEY}",variable: "FILE_PATH")]) {

        String dataFile = "${env.FILE_PATH}"

        dir('sub-dir') {
            git branch: 'master',credentialsId: "${config.GitHubKeyId}",url: 'https://github.com/xxx/repo.git'

            withEnv(["PATH=${tool 'nodejs-12.8.0'}/bin:${env.PATH}"]) {
                    try {
                        sh ("newman run \"${integrationFile}\" -e \"${environmentFile}\" --global-var \"baseUrl=${route}\" -d ${dataFile} ${reportArgs}")
                    } catch (error) {
                        throw error
                    } finally {
                        junit "${reportFile}"
                    }
                }
            }
        }
    }
}

但是当我运行上面的代码时,詹金斯抛出一个错误:

error: iteration data could not be loaded
  ENOENT: no such file or directory,open '/var/jenkins_home/workspace/Platform'

该路径似乎被截断,因为当我在节点关闭运行之前运行pwd命令时,工作空间应为:

/var/jenkins_home/workspace/Platform Management/JJob@2

我的问题是,詹金斯为什么要这样做?我是否需要以其他方式格式化机密的变量?还是应该以不同的方式引用它?

  • 我知道该文件存在是因为在另一个没有子目录(dir(“”))的Jenkins管道中,它工作正常。
  • 我从Jenkins关于withCredentials的文档中看到,当您在目录之间移动时,如何引用文件变得很棘手,请参见:https://www.jenkins.io/doc/pipeline/steps/credentials-binding/

这是我尝试过的事情:

$ {env.FILE_PATH}

$ {FILE_PATH}

$ FILE_PATH

(以上所有内容均在sh命令中用双引号和单引号引起来)

感谢您的帮助, 谢谢!

解决方法

好吧-在玩了很多之后,我最终在变量周围添加了双引号以保留空格。这样的结果帮助了我:Jenkins coping with spaces in batch file arguments

在newman命令行脚本中,我只是在参数args中添加了双引号,如下所示:

sh ("newman run \"${integrationFile}\" -e \"${environmentFile}\" --global-var \"baseUrl=${route}\" -d \"${dataFile}\" ${reportArgs}")

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...