使用参数化作业在Jenkins中聚合测试结果

时间:2016-04-29 03:00:09

标签: jenkins jenkins-plugins

我理解这篇文章类似于: Aggregating results of downstream is no test in Jenkins

并且还: Aggregating results of downstream parameterised jobs in Jenkins

尽管如此,我无法弄清楚我的情况,如何让这个工作。我目前正在使用Jenkins 1.655。

我有工作A,B,C - A是上游工作。我想做的是让A和B调用呼叫C.所有需要阻止并等待下一个完成。如果一个失败,都会失败。 B和C生成单元测试报告。所以我想在A中汇总这些报告,然后在A中发布结果。所以,这里是当前的工作设置:

工作A:

构建步骤

  1. 执行shell:product_asset_resource
  2. 触发参数化的Buid作业:作业B
  3. 构建后步骤

    1. 汇总下游测试结果
    2. 记录文件的指纹以跟踪使用情况:将文件设置为指纹echo $(date) > aggregate
    3. 发布JUnit测试结果报告(来自B和C的报告文件)
    4. 工作B:

      构建步骤

      1. 从另一个项目复制工件:从上游作业aggregate文件
      2. 复制
      3. 运行测试以生成单元测试报告
      4. 触发参数化构建作业:作业C
      5.   

        它最终在这里失败,因为aggregate仅存档于   作业A的后期构建步骤。如何在构建步骤中归档工件?

        构建后步骤

        1. 汇总下游测试结果(生成单元test.xml)
        2. 记录文件的指纹以跟踪使用情况:将文件设置为指纹aggregate
        3. 为了简单起见,我不会在这里发布Job C,但它几乎遵循B所做的。

          因此,总结一下,我想要相互依赖的相互关联的作业并使用参数化插件,上游作业必须聚合所有下游的测试结果。

          感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 如果您对作业的位置没有限制,您可以随时指定它在同一个工作区\机器上运行 - 这将解决您的所有问题。
  2. 如果由于某种原因你不能在同一工作区上运行它,而不是使用复制工件插件,你可以使用Jenkins中的链接到WS(猜测你正在使用Parameterized Trigger Plugin)所以它'使用已定义的:TRIGGERED_BUILD_NUMBER _ =“触发的最后一个内部编号”,从触发的作业中轻松获取作业中的“聚合”文件。这也可以帮助您跟踪触发的作业B和C那里的文物。
  3. 希望它有所帮助!