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

How create Jenkins Build Pipeline depends on test result?

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

我想得到这样的配置:

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

所以,请告诉我 Jenkins 如何只依赖一个测试结果(不是所有套件)?

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

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

  1. 从测试创建属性文件。文件包含 属性,表示测试步骤状态
  2. 的结果
  3. 使用 EnvInject 插件向 Jenkins Job 添加新步骤(步骤必须在测试之后 运行)并注入参数值(来自第一步创建的文件)
  4. 使用构建流程插件创建构建流程
  5. 编写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" )