You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多Jenkins任务生成的Serenity BDD报告合并为单一报告?

实现Serenity BDD多Jenkins任务的合并报告方案

我之前帮团队解决过类似的问题,你提到的Jenkins Copy Artifact + Serenity Aggregate是完全可行的方案,同时还有几个更简便的替代思路,下面详细说明:

Jenkins Copy Artifact + Serenity Aggregate 具体实现步骤

这是最贴合你现有架构的方案,不需要调整太多现有任务配置:

  • 第一步:配置各模块Jenkins任务的产物归档
    在每个功能模块的Jenkins任务中,添加Post-build Actions -> Archive the artifacts,指定归档路径为target/site/serenity/**,确保Serenity的测试结果目录被保存为构建产物。
  • 第二步:创建合并报告的主任务
    1. 添加Copy artifacts from another project构建步骤,依次选择所有功能模块任务,将它们的serenity目录复制到主任务工作空间的独立子目录(比如modules/moduleA/serenity、modules/moduleB/serenity),避免文件覆盖冲突。
    2. 添加Maven/Gradle构建步骤执行聚合命令:
      • Maven用户执行:mvn serenity:aggregate -Dserenity.outputDirectory=target/merged-serenity -Dserenity.resultsDirectory=modules/**/serenity
      • Gradle用户执行:gradle aggregate -Pserenity.resultsDir=modules/**/serenity -Pserenity.outputDir=target/merged-serenity
    3. 最后在主任务的Post-build Actions中归档target/merged-serenity/**,方便随时查看合并后的报告。
  • 注意事项:确保所有模块任务使用的Serenity版本完全一致,避免因版本差异导致的报告解析失败。

更简便的替代方案

如果想简化流程,推荐下面两种方案:

方案1:Jenkins Pipeline统一编排

放弃拆分多个独立任务,用一个Pipeline任务并行执行所有模块测试,之后直接生成合并报告,示例Pipeline片段:

pipeline {
    agent any
    stages {
        stage('Parallel Module Tests') {
            parallel {
                stage('Module A Tests') {
                    steps {
                        dir('module-a') {
                            sh 'mvn clean verify serenity:test'
                        }
                    }
                }
                stage('Module B Tests') {
                    steps {
                        dir('module-b') {
                            sh 'mvn clean verify serenity:test'
                        }
                    }
                }
                // 按需添加更多模块
            }
        }
        stage('Generate Merged Report') {
            steps {
                sh 'mvn serenity:aggregate -Dserenity.resultsDirectory=*/target/site/serenity'
            }
            post {
                always {
                    publishHTML(target: [
                        allowMissing: false,
                        alwaysLinkToLastBuild: true,
                        keepAll: true,
                        reportDir: 'target/site/serenity',
                        reportFiles: 'index.html',
                        reportName: 'Merged Serenity BDD Report'
                    ])
                }
            }
        }
    }
}

优点:一站式管理测试与报告生成,减少Jenkins任务数量;并行执行测试还能缩短整体耗时,维护成本更低。

方案2:本地临时合并(适合非频繁需求)

如果只是偶尔需要合并报告,不需要修改Jenkins配置:

  1. 从各个Jenkins任务的"Artifacts"页面下载对应的serenity目录压缩包;
  2. 把所有serenity目录解压到本地同一个父文件夹下(比如~/merged-tests/moduleA、~/merged-tests/moduleB);
  3. 在本地执行聚合命令:
    mvn serenity:aggregate -Dserenity.resultsDirectory=~/merged-tests/**/serenity
    
    执行完成后,target/site/serenity下就是合并后的报告。

内容的提问来源于stack exchange,提问作者JavaMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:56:34