Azure devops 基于上一个任务日志中的字符串有条件地运行Azure DevOps任务
我有一个CI管道,它运行两个JMeter测试和一些Powershell脚本 如果JMeter测试失败,它仍然会在DevOps中报告为成功 但是,日志将有“Err:”后跟测试中失败的调用数 如果“运行出站电子邮件JMeter测试”任务已完成且日志中不包含“Err:”,如何仅运行以下任务(写入线程引用)Azure devops 基于上一个任务日志中的字符串有条件地运行Azure DevOps任务,azure-devops,jmeter,Azure Devops,Jmeter,我有一个CI管道,它运行两个JMeter测试和一些Powershell脚本 如果JMeter测试失败,它仍然会在DevOps中报告为成功 但是,日志将有“Err:”后跟测试中失败的调用数 如果“运行出站电子邮件JMeter测试”任务已完成且日志中不包含“Err:”,如何仅运行以下任务(写入线程引用) 我认为更好的选择是使整个“运行出站电子邮件JMeter测试”任务失败,因此如果出现故障,它将返回,以便管道将“捕获”它 例如,您可以使用运行测试,简单的pom.xml如下所示: <?xml v
我认为更好的选择是使整个“运行出站电子邮件JMeter测试”任务失败,因此如果出现故障,它将返回,以便管道将“捕获”它 例如,您可以使用运行测试,简单的pom.xml如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>jmeter-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>3.3.0</version>
<executions>
<!-- Generate JMeter configuration -->
<execution>
<id>configuration</id>
<goals>
<goal>configure</goal>
</goals>
</execution>
<!-- Run JMeter tests -->
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
<!-- Fail build on errors in test -->
<execution>
<id>jmeter-check-results</id>
<goals>
<goal>results</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
4.0.0
org.example
或者,您可以使用具有
配置示例:
execution:
- scenario: simple
scenarios:
simple:
script: test.jmx
reporting:
- module: passfail
criteria:
- succ<100%, continue as failed
执行:
-场景:简单
情节:
简单:
脚本:test.jmx
报告:
-模块:passfail
标准:
-succjmeter测试在Powershell脚本中返回一个对象[]
,所以技巧是遍历数组,看看是否有错误,如果有,抛出异常。
这会使步骤在管道中失败,因此后续步骤不会执行
$logs = jmeter -n -t $TestFilePath
$successLogFound = $false
foreach($log in $logs)
{
if($log.Contains("Err: 0"))
{
$successLogFound = $true
break;
}
}
if(!$successLogFound)
{
$ErrorActionPreference = 'Stop'
Write-Error "Test failed."
}