在不同的工作区中仅生成一个并行的Allure报告链接到构建

问题描述 投票:0回答:1

我希望应该显示在不同工作区中生成的两个报告 为什么不同工作区中只有一个并行生成的 Allure 报告链接到构建?

Allure 报告构建日志:

Report successfully generated to C:\ProgramData\Jenkins\.jenkins\dir_v1.0\allure-report
Allure report was successfully generated.
Creating artifact for the build.
Artifact was added to the build.


[dir_v2.0] $ C:\ProgramData\Jenkins\.jenkins\tools\ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation\Allure_2.24.1\bin\allure.bat generate C:\ProgramData\Jenkins\.jenkins\dir_v2.0\build\allure-results -c -o C:\ProgramData\Jenkins\.jenkins\dir_v2.0\allure-report
Report successfully generated to C:\ProgramData\Jenkins\.jenkins\dir_v2.0\allure-report
Allure report was successfully generated.
Creating artifact for the build.

在不同工作区中并行生成 Allure 报告的短管道脚本:

#!groovy

package com.jenkins

def getBrowserTests(browserName, browserVersions) {
  return browserVersions.collectEntries {
    version -> [
      (version): {
        node("docker") {
          ws("${testName}_${version}") {
            stage("${testName}_${version} Tests") {
              script {
                try {
                  bat "echo Testing the ${testName}_${version} browser"
                  bat "gradle test -Dname=remote_${testName} -Dversion=${version}"
                  allure([
                    reportBuildPolicy: 'ALWAYS',
                    results: [
                      [path: 'build/allure-results']
                    ]
                  ])
                } catch (ignored) {}
              }
            }
          }
        }
      }
    ]
  }
}

def test1_versions = params.test1_versions.split("\n")

def test2_versions = params.test2_versions.split("\n")

pipeline {
  agent {
    label "docker"
  }

  tools {
    gradle "gradle"
  }

  parameters {
    booleanParam(name: 'test1', defaultValue: true, description: '')
    text(name: 'test1_versions', defaultValue: '1.0\n2.0\n3.0\n', description: '')
    booleanParam(name: 'test2', defaultValue: false, description: '')
    text(name: 'test2_versions', defaultValue: '1.0\n2.0\n3.0\n', description: '')
  }

  stages {
    stage('Build') {
      steps {
        bat "echo build"
      }
    }
    stage('Tests') {
      parallel {
        stage('Tests 1') {
          when {
            expression {
              return params.test1
            }
          }
          steps {
            script {
              parallel getBrowserTests("tests1", test1_versions)
            }
          }
        }
        stage('Tests 2') {
          when {
            expression {
              return params.test2
            }
          }
          steps {
            script {
              parallel getBrowserTests("tests2", test2_versions)
            }
          }
        }
      }
    }
  }
}

来自 Jenkins 的屏幕截图显示了两个工作区,并且在构建中仅显示一份报告:

显示的Allure Report打开路径:

http://localhost:8080/job/remote-pipeline/248/allure/

jenkins jenkins-pipeline jenkins-plugins jenkins-groovy allure
1个回答
0
投票

我将其称为预期行为 - Allure 插件对第二(或任何其他并行)阶段一无所知,因此它只是向构建报告结果(并且已经有任何结果,它们将被覆盖)。

您可以合并测试结果,将其放在同一位置(例如,如果我们不讨论数十 MB,则使用

stash
步骤,或者通过复制工件),然后将其传递给
junit
调用。或者只是通过唯一的路径在单个代理上访问它们并将它们全部传递给
junit

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