【问题标题】:Compare build results in Jenkins比较 Jenkins 中的构建结果
【发布时间】:2021-08-21 10:58:25
【问题描述】:

首先,也许我正在寻找的东西是不可能的,或者我走错了路。

在将每个 PR 与 master 合并之前,我们有一个运行功能测试套件(在 Jenkins 中)的过程。一旦 FT Job 成功,我们将手动将结果与基线结果(我们单独维护的硬拷贝)进行比较。我希望将结果与基线结果匹配的过程自动化,并在有任何差异时通知,

例如,Build #1 结果是基准结果,并且每个其他构建(在同一作业中)都应与 Build #1 进行比较并共享报告。

【问题讨论】:

  • 你要比较的内容,是什么?日志文件或 xml 或 Json。当您说您进行手动比较时,您是在寻找功能正确性还是相同的输出?
  • 您可以使用 REST API 从之前的作业中提取控制台,然后根据需要使用正则表达式进行过滤和比较
  • @Ram 我正在尝试比较结果计数。拒绝总案例、通过、失败计入基线构建。
  • 如果您使用 Junit 或任何创建与 Junit 兼容的 XML 的测试框架,那么您可以使用来自 Jenkins 的 Junit 插件 def summary= junit testResults: “**/**/TEST *.xml”' 此摘要对象现在具有通过、失败计数,您可以将其与基线进行比较。 *Summary.passCount、summary.failCount、summary.totalCount、summary.skipCount
  • 至于将 build1 中的数字获取到其他位置,您可以在共享位置创建文件或将文件归档到 build 中并在其他位置使用工件。我认为您可以使用多种方法。

标签: jenkins jenkins-pipeline jenkins-plugins functional-testing cicd


【解决方案1】:

我知道这个问题有两个部分

  • 运行基线构建并存储和获取测试结果
  • 运行功能分支构建并将测试结果与基线进行比较

我的以下答案是假设您使用的是multi-branch pipeline 设置。

第 1 部分

运行基线项目构建,我假设您将其作为专用分支运行。让我们假设它是一个分支baseLine。 在基线分支中运行测试后,使用 JUnit 插件将结果报告给 Jenkins

junit testResults:'**/TEST*.xml'

第 2 部分

运行您的功能分支feature1 管道。

测试后,使用 JUnit 插件报告结果

def featureTestResults = junit testResults:'**/TEST*.xml'

从基线获取结果(您可能必须在此处处理身份验证部分)

sh """ 
wget -O baseLine.json https://<Jenkins-server>/job/<Project-NAME>/job/baseLine/lastCompletedBuild/testReport/api/json -H "Accept: application/json" 
"""

现在将 json 读入一个对象

def baseLineTestResults = readJSON file: "baseLine.json"

现在比较两个结果

boolean resultsMatched = false
if(featureTestResults.passCount == baseLineTestResults.passCount && featureTestResults.failCount == baseLineTestResults.failCount && featureTestResults.skipCount == baseLineTestResults.skipCount) {
   resultsMatched = true
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2012-01-20
    • 1970-01-01
    • 2019-07-29
    相关资源
    最近更新 更多