8

据我所知,“聚合下游测试结果”功能无法按预期工作(而且很难找到有用的文档)。我想实现非常相似的功能:

作业构建并行触发作业T1T2 (其中T1执行 FindBugs,T2执行 PMD)。

场景 1: 一旦T1T2完成(我可以使用“加入”插件来实现),我想收集工件(T1 /findbugs.xml 和T2 /pmd.xml)。然后对这些进行分析并生成漂亮的统计数据。

场景 2(我更喜欢这个): 与场景 1 类似,但分析是作为T1T2的一部分进行的(并行进行!)。一旦T1T2完成,分析结果就会组合成漂亮的统计数据。

我的问题: 对于场景 1,我不知道如何引用下游项目T1T2。我可以使用最后一个成功的构建,但是在考虑许多并行作业时这似乎很奇怪。

对于场景 2,我不知道如何导入 FindBugs/PMD/Checkstyle/SLOCcount/... 插件所需的数据,以便相应的图形(也是?)出现在T1 /*T2* 之外。

谢谢,卡斯滕

4

3 回答 3

10

这是一个稍微简单的场景的大纲,但我认为您可以轻松地将其推广到多个下游作业的情况。诀窍是在下游作业中使用“标记”参数。

P为父作业,D为下游作业。

  1. P的实例(构建)通过构建步骤(而不是构建后步骤)通过参数化触发器插件调用D并等待D完成。连同其他参数,P将一个参数传递给D - 我们称之为PARENT_ID - 基于P的构建的BUILD_ID
  2. D执行测试并将它们存档为工件(连同 jUnit 报告 - 如果适用)。
  3. 然后P执行一个外部 Python(或内部 Groovy)脚本,该脚本通过PARENT_ID找到D的适当构建(您迭代D的构建并检查PARENT_ID参数的值)。然后,该脚本将工件从D复制到P,然后P发布它们。

如果使用 Python(这就是我所做的) - 使用Python JenkinsAPI wrapper。如果使用 Groovy - 利用Groovy 插件并将您的脚本作为系统脚本运行。然后,您可以通过其Java API访问 Jenkins 。

于 2012-06-15T14:02:18.247 回答
8

malenkiy_scot 的帖子有两个补充:

  1. 您实际上不需要描述中第 3 步的脚本:“从另一个项目复制工件”构建步骤允许指定已经包含参数的源作业。

    例如,使用父符号,它可以D通过使用D/PARENT_ID=EXPECTED_VALUE作为“项目名称”从正确执行作业中复制工件。

  2. 而不是手动连接$JOB_NAME$BUILD_ID您可以使用预定义的$BUILD_TAG(本质上是相同的)。有关标准环境变量的完整列表,请参阅https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-JenkinsSetEnvironmentVariables

于 2012-08-24T13:19:46.473 回答
-3

Jenkins 插件https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin应该有助于满足这些要求。

于 2014-05-06T12:15:01.970 回答