我正在尝试将一个常规列表变量传递给Jenkins管道脚本中的allure插件。我需要使结果列表具有动态性。因此,我想出了解决方案:
代码示例:
def collectResultDirectories(){
def directories = sh(
script: "ls ${ALLURE_DIR}",
returnStdout: true
).split('\t?\n')
def results = []
for (dir in directories) {
results = results + [path: "${ALLURE_DIR}/${dir}"]
}
return results
}
def createAllureReport() {
def results = collectResultDirectories()
// == [[path: "results_dir1"], [path: "results_dir2"]]
allure([
includeProperties: false,
jdk: '',
properties: [],
reportBuildPolicy: 'ALWAYS',
// Here I am trying to pass a list variable
results: results
])
}
1)结果:结果
预期:创建了串联报告。 实际:空报告,输出:
/var/lib/jenkins/tools/ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation/allure/bin/allure generate -c -o / var / lib / jenkins / jobs / jobName / workspace / allure -报告
22:52:11魅力结果不存在
2)结果:“ $ {results}”
抛出异常java.lang.IllegalArgumentException
答案 0 :(得分:0)
以下是应做的一项更正: 更改行
results = results + [path: "${ALLURE_DIR}/${dir}"]
要关注
results += [path: " ${ALLURE_DIR}/${dir}"]
请注意“
除此之外,一切看起来还不错,请尝试返回更详细的错误(如果有的话)
答案 1 :(得分:0)
设法找到一个错误。我已经传递了指向错误目录的绝对路径-魅力(Allure)在当前工作目录中寻找它们。更改工作目录已解决了问题。