JTL to CSV using Github Actions
Tags: actionshackathon21, jmeter, jtl, csv
Published: 2021-12-05 16:49:51

Sometimes we just need the data from Aggregate Report to get the data for Benchmarking Testing. We run the JMeter script and then JTL file is generated. 
We can use **JMeterPluginsCMD** to get the data from JTL to CSV.

I wrote a workflow for Github Actions that run all jmx files from repo, then create JTL file, then create CSV file from this JTL file.  JTL and CSV files are saved as artifacts in Workflow run.


### My Workflow
[Note]: # (Please make sure the project links to the appropriate GitHub Actions repository, and includes [an open source license](https://choosealicense.com/) and README.)


### Submission Category: 

Maintainer Must-Haves,
DIY Deployments

### Yaml File or Link to Code

{% github https://github.com/sebiboga/jmeter_one %}

```
# This is a workflow to help you run all JMeter scripts with Actions, and save JTL and CSV files as artifacts
name: jmeter_JTL_to_CSV_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 .
          wget -q --no-check-certificate https://jmeter-plugins.org/files/packages/jpgc-cmd-2.0.zip  -P .
          wget -q --no-check-certificate https://jmeter-plugins.org/files/packages/jpgc-synthesis-2.1.zip  -P .
          wget -q --no-check-certificate https://jmeter-plugins.org/files/packages/jpgc-filterresults-2.2.zip  -P .
          
          unzip -o jpgc-dummy-0.4.zip  && rm jpgc-dummy-0.4.zip
          unzip -o jpgc-cmd-2.0.zip  && rm jpgc-cmd-2.0.zip
          unzip -o jpgc-synthesis-2.1.zip  && rm jpgc-synthesis-2.1.zip
          unzip -o jpgc-filterresults-2.2.zip  && rm jpgc-filterresults-2.2.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 
            ./JMeterPluginsCMD.sh --generate-csv $GITHUB_WORKSPACE/test_report/${i%.jmx}.csv --input-jtl $GITHUB_WORKSPACE/${i%.jmx}.jtl --plugin-type SynthesisReport
         done
      - name: move jtl files to test_report
        run: |
         mv *.jtl $GITHUB_WORKSPACE/test_report
      - name: Upload JMeter Test Results
        uses: actions/upload-artifact@v2.2.4
        with:
         name: test_results
         path: test_report

      # Runs a set of commands using the runners shell
      - name: Run a multi-line script
        run: |
          echo Add other actions to build,
          echo test, and deploy your project.
```


### Additional Resources / Info

We have installed : _jpgc-synthesis-2.1.zip_ , _jpgc-filterresults-2.2.zip_ , _jpgc-cmd-2.0.zip_ and _jpgc-dummy-0.4.zip_ plugins for JMeter to be able to generate the CSV file.