透過 Jenkins Pipeline 執行 Jmeter 進行壓力測試

2024-08-10 CI/CD jenkins Jmeter

  • Pipeline script

node {
    stage("set env"){
        
        def BUILDVERSION = sh(script: "echo `date +%s`", returnStdout: true).trim()

        //apache-jmeter目錄
        env.JMETER_HOME="/usr/local/share/apache-jmeter-5.5"
        env.JMETER_REPORT="${BUILDVERSION}.jtl"
        env.JVM_ARGS="-Xms10240m -Xmx10240m"
        //刪除之前測試結果
        // deleteDir()

    }

    stage('refresh jmx'){

    }

    stage('Run JMeter Tests') {
        sh "/usr/local/share/apache-jmeter-5.5/bin/jmeter.sh -n -t /tmp/ntlcPublic.jmx -l ${JMETER_REPORT}"
    }

    stage('Publish Performance Report') {
        perfReport errorFailedThresholds: true, 
            errorUnstableThresholds: true, 
            sourceDataFiles: JMETER_REPORT, 
            relativeFailedThresholdPositive: '90', 
            relativeUnstableThresholdPositive: '80',
            threshold: [
                thresholdName: 'Average Response Time',
                unstableThreshold: '1500',
                failedThreshold: '3000'
            ]
    }
}

perfReport 說明

  • relativeFailedThresholdPositive: ‘90’ 指定了如果 90% 或更多的請求的響應時間超過 failedThreshold,構建將失敗。
  • relativeUnstableThresholdPositive: ‘80’ 指定了如果 80% 或更多的請求的響應時間超過 unstableThreshold,構建將被標記為不穩定。
  • threshold 配置了具體的響應時間閾值(如「平均響應時間」)。在這裡,如果平均響應時間超過 1500 毫秒,構建將被標記為不穩定;如果超過 3000 毫秒,構建將失敗。