Azure devops 基于上一个任务日志中的字符串有条件地运行Azure DevOps任务

Azure devops 基于上一个任务日志中的字符串有条件地运行Azure DevOps任务,azure-devops,jmeter,Azure Devops,Jmeter,我有一个CI管道,它运行两个JMeter测试和一些Powershell脚本 如果JMeter测试失败,它仍然会在DevOps中报告为成功 但是,日志将有“Err:”后跟测试中失败的调用数 如果“运行出站电子邮件JMeter测试”任务已完成且日志中不包含“Err:”,如何仅运行以下任务(写入线程引用) 我认为更好的选择是使整个“运行出站电子邮件JMeter测试”任务失败,因此如果出现故障,它将返回,以便管道将“捕获”它 例如,您可以使用运行测试,简单的pom.xml如下所示: <?xml v

我有一个CI管道,它运行两个JMeter测试和一些Powershell脚本

如果JMeter测试失败,它仍然会在DevOps中报告为成功

但是,日志将有“Err:”后跟测试中失败的调用数

如果“运行出站电子邮件JMeter测试”任务已完成且日志中不包含“Err:”,如何仅运行以下任务(写入线程引用)


我认为更好的选择是使整个“运行出站电子邮件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."
}