Parallel Execution in GitHub Actions using Job Matrix

GitHub Actions combines Continuous Integration (CI) and Continuous Delivery (CD) to constantly and consistently test and build your code and ship it to any target. Actions also provide a job matrix which assists in executing multiple jobs without configuring it. It can generate a maximum of 256 jobs per workflow run. Each option you define in the matrix has a key and value. The keys you define become properties in the matrix context and you can reference the property in other areas of your workflow file. This support article describes how to execute parallel execution in GitHub Actions by creating a job matrix. Jobs are created based on the matrix values.

You can perform parallel execution using Test Plans.  You can build multiple test plans and run a repeatable collection of tests per each release cycle and make global changes to the environment settings such as browser settings, build number and build server. Plus, you can get consolidated reports of your results.

Once you have the build.xml exported using a test plan, you can parameterize the test plan in the build.xml file. In this example, we have 2 test plans, one Smoke and the other Regression. These test plans contain the test case instances that you can run as part of your Smoke/Regression testing. We will be providing the test plan to be executed as part of the pipeline.

Steps to execute parallel execution in GitHub Actions by creating a Job Matrix

Step 1: Make configuration in the build.xml file.

Make the configuration as given below in the build.xml file.

The build.xml has a parameterized fileset. 

Step 2: Create a matrix containing Test Plan types.

In the yaml file, create a matrix containing the browser types on which you want to perform execution.

strategy:
     matrix:
      Plan: [Regression,Smoke]

Step 3: Create an environment variable.

Create an environment variable based on the matrix value. This env variable is referenced in the build.xml file.

env:
       PLAN: ${{matrix.Plan}}

As per the example above, 2 jobs will be created . One will execute the cases in the Chrome browser and other in the Firefox browser.

Given below is a sample yml file.

# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
  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
    strategy:
      matrix:
        Plan: [Regression,Smoke]
    
    # 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/[email protected]
    - name: Run build
      env:
        PLAN: ${{matrix.Plan}}
      run: |
                
        mkdir $GITHUB_WORKSPACE/ProvarHome
        curl -O https://download.provartesting.com/latest/Provar_ANT_latest.zip
        unzip -o Provar_ANT_latest.zip -d ProvarHome
        rm Provar_ANT_latest.zip
        sudo apt-get update && sudo apt-get upgrade       
        wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -        
        sudo echo "deb [arch=amd64]  http://dl.google.com/linux/chrome/deb/ stable main" >>sudo tee -a /etc/apt/sources.list.d/google-chrome.list
        sudo apt-get -y install google-chrome-stable
        cd $GITHUB_WORKSPACE/test/ANT
        xvfb-run ant -f build.xml
         
    - uses: actions/[email protected]
      with:
        name: Execution Report
        path:${{ github.workspace }}/test/ANT/Results/*
    - uses: actions/[email protected]
      if: failure()
      with:
        name: Execution Report
       path:${{ github.workspace }}/test/ANT/Results/*

This is how the workflow run will look like:

You can also create multiple matrices [1X m] [1xn] and m*n jobs will be created.

 

Review Provar on G2
Documentation library

Other available resources

Looking for something different?

We use cookies to better understand how our website is used so we can tailor content for you. For more information about the different cookies we use please take a look at our Privacy Policy.

Scroll to Top