Generate JMeter Test Report and save it as artifact with GitHUB Actions
I extended the workflow from GitHUB Actions presented in previous article (execute-all-jmeter-files-with-github-actions) so now we can generate and save the JMeter Test Report with GitHUB Actions.
My Workflow
- checkout actions/checkout@v2
- create test_report
- displays the current folder (you can refer to this folder like this $GITHUB_WORKSPACE)
- install the JMeter version 5.4.1(here we also display the jmeter version and also the current folder location)
- install the plugins for JMeter(here we just install the Dummy Sampler, but you can add any other plugin needed by your jmeter script; you can see all the available plugins here: https://jmeter-plugins.org/files/packages)
- run each jmx file from the repo
- create a folder for each jmx file (for each JMeter Test Plan)
- save jmeter test report(HTML format) in the folder created at previous step
- upload JMeter Test Results for all jmx files as artifact
Submission Category:
Maintainer Must-Haves,
DIY Deployments
Yaml File or Link to Code
sebiboga / jmeter_one
JMeter scripts
jmeter_one
- different JMeter scripts
- GitHUB Actions used to define the workflow to run all jmeter scripts from repository [main branch]
- GitHUB Actions used to define the workflow to run all jmeter scripts from repository and save Test Report as artifact [main branch]
# This is a workflow to help you run all JMeter scripts with Actions, and save Test Results as artifact
name: jmeter_test_results
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- name: where are the files?
run: |
pwd
ls
- name: create test_report
run: |
mkdir $GITHUB_WORKSPACE/test_report
# Runs a set of commands using the runners shell
- name: install jmeter
run: |
java -version
wget https://downloads.apache.org//jmeter/binaries/apache-jmeter-5.4.1.zip
unzip apache-jmeter-5.4.1.zip
cd apache-jmeter-5.4.1/bin
./jmeter -v
pwd
- name: install plugins
run: |
cd $GITHUB_WORKSPACE/apache-jmeter-5.4.1
wget -q --no-check-certificate https://jmeter-plugins.org/files/packages/jpgc-dummy-0.4.zip -P .
unzip -o jpgc-dummy-0.4.zip && rm jpgc-dummy-0.4.zip
- name: run jmx scripts
run: |
cd $GITHUB_WORKSPACE
for i in $( ls -A1 *.jmx); do
cd $GITHUB_WORKSPACE/apache-jmeter-5.4.1/bin
mkdir $GITHUB_WORKSPACE/test_report/${i%.jmx}
./jmeter -n -t $GITHUB_WORKSPACE/$i -l $GITHUB_WORKSPACE/${i%.jmx}.jtl -e -o $GITHUB_WORKSPACE/test_report/${i%.jmx}
done
- name: Upload JMeter Test Results
uses: actions/upload-artifact@v2.2.4
with:
name: test_results
path: test_report
Additional Resources / Info
JMeter test results are captured as artifacts for each Workflow Run in GitHUB actions.
This is useful because it's a way to share the test results with your team. They just download the test results and they can see the results.