如果 Dockerized Jmeter 测试失败,则失败 GitHub 操作管道

Fail GitHub Actions Pipeline if Dockerized Jmeter tests failed

我希望就以下问题得到一些建议:

我在 GitHub Actions 中构建了一个简单的 CI/CD 管道,我正尝试在 Docker 容器中执行我的 Jmeter 测试。我正在使用 justb4/jmeter 图像,我基本上只是将我的 jmx 文件从我的 GitHub 存储库复制到 /opt/apache-jmeter-5.3/bin,这样我就可以在我的容器中执行测试。我的问题是,即使 Jmeter 测试在容器内失败,我的管道仍会继续执行并且不会检测到此失败。

如果我的 Jmeter 测试在 Docker 容器中失败,我如何停止管道进一步执行?

非常感谢任何帮助, 马克

为了能够使步骤失败,您需要 return 非零 exit status code,选项位于:

  1. 使用JMeter Maven plugin,如果你添加jmeter-check-results这样的动作:

    <execution>
        <id>jmeter-check-results</id>
        <goals>
            <goal>results</goal>
        </goals>
    </execution> 
    

    失败的 Maven 构建将被 Github 操作捕获

  2. 使用Taurus tool as a wrapper, Taurus can also be run as a docker image and it has Pass/Fail Criteria subsystem,它有灵活的标准,允许有条件的测试失败,在测试失败的情况下 Taurus returns 非零退出状态代码,这将足以管道步骤失败

  3. 此选项需要的更改最少,但功能最弱。将 JSR223 Listener 添加到您的测试计划并将以下代码放入“脚本”区域:

    if (!prev.isSuccessful()) {
        System.exit(1)
    }     
    

    它将强制 JMeter 在任何 Sampler 失败时退出(但是根据您的 JMeter 配置,您可能会丢失部分结果)

检查我在您的工作流程中安装 jmeter 的操作。

https://github.com/marketplace/actions/setup-jmeter

name: Test Action
on:
  push
jobs:
  test-action:
    runs-on: ubuntu-latest
    steps:
      - name: Setup Jmeter
        uses: tush-tr/setup-jmeter@v1.1.0