如何创建Jenkins Build Pipeline取决于测试结果?

时间:2015-01-05 06:56:15

标签: jenkins testng pipeline

我有3个Jenkins工作。烟雾测试,关键路径测试(第1部分),关键路径测试(第2部分)。 现在它逐一开始。我需要创建构建PipeLine取决于测试结果。我需要考虑单个测试的结果(TestNG中的@Test注释),忽略测试套件的整体结果。

我想得到这样的配置:

烟雾测试 - >如果指定的测试通过,则在不同节点上运行关键路径测试第1部分和第2部分

那么,请告诉我Jenkins仅取决于一个测试结果(不是所有套件)?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用一些构建日志分析插件: https://wiki.jenkins-ci.org/display/JENKINS/Text-finder+Plugin https://wiki.jenkins-ci.org/display/JENKINS/Post+build+task 扫描构建输出,并将构建结果降级为特定文本上的失败。 接下来在下游项目检查选项"构建其他项目之后构建"在构建触发器部分。设置正确的上游项目名称并设置正确的触发结果。

答案 1 :(得分:0)

我通过使用2个Jenkins扩展解决了这个任务:
https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin

  1. 从test创建属性文件。文件包含指示测试步骤状态结果的属性
  2. 使用EnvInject插件向Jenkins Job添加新步骤(步骤必须在测试运行后)并注入参数值(从第一步创建的文件)
  3. 使用Build Flow Plugin创建构建流程
  4. 写groovy脚本:

    smokeTest = build( "Run_Smoke_Test" )
    def isTestStepSuccessful = smokeTest.environment.get( "TestStepSuccessful" )
    if (isTestStepSuccessful != "false") {
        parallel (
            { 
              build("Run_Critical_Path_Part_1_Test")
              build("Run_Critical_Path_Part_3_Test") 
            },
            {
              build("Run_Critical_Path_Part_2_Test") 
            }
        )
    }
    build( "Run_Critical_Path_Final_Test" )