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