如何在jenkins管道脚本中参数化诱惑结果目录?

时间:2019-02-10 21:02:46

标签: jenkins jenkins-pipeline jenkins-plugins allure jenkins-groovy

我正在尝试将一个常规列表变量传递给Jenkins管道脚本中的allure插件。我需要使结果列表具有动态性。因此,我想出了解决方案:

  1. 获取存储魅力结果的主节点上目录的路径列表
  2. 创建列表[[路径:“路径/目录/目录”,...]
  3. 将此列表通过变量传递给有吸引力的插件

代码示例:

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

2 个答案:

答案 0 :(得分:0)

以下是应做的一项更正: 更改行

results = results + [path: "${ALLURE_DIR}/${dir}"]

要关注

results += [path: " ${ALLURE_DIR}/${dir}"]

请注意“

除此之外,一切看起来还不错,请尝试返回更详细的错误(如果有的话)

答案 1 :(得分:0)

设法找到一个错误。我已经传递了指向错误目录的绝对路径-魅力(Allure)在当前工作目录中寻找它们。更改工作目录已解决了问题。