【问题标题】:How to parametrize allure result directories in jenkins pipeline script?如何在詹金斯管道脚本中参数化诱惑结果目录?
【发布时间】:2019-02-10 21:02:46
【问题描述】:

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

  1. 获取主节点上存储诱惑结果的目录的路径列表
  2. 创建一个列表 [[path: "path/to/directory"], ...]
  3. 通过变量将此列表传递给 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 allure-results 不存在

2) 结果:“${results}”

抛出异常 java.lang.IllegalArgumentException

【问题讨论】:

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


    【解决方案1】:

    必须进行的一项更正如下: 换行

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

    关注

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

    注意"后面的空格

    除此之外,一切正常,如果有任何错误,请尝试返回更详细的错误

    【讨论】:

      【解决方案2】:

      设法找到一个错误。我传递了一个不正确的目录的绝对路径 - Allure 正在当前工作目录中寻找它们。更改工作目录解决了一个问题。

      【讨论】:

      • 这仍然对您有用吗?将“结果”作为动态变量传递时可以生成报告吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 2023-01-31
      相关资源
      最近更新 更多