--- a
+++ b/.github/workflows/pythonpackage.yml
@@ -0,0 +1,78 @@
+name: Python package
+
+on: [push, pull_request]
+
+jobs:
+  build:
+    name: Build Job
+
+    runs-on: ubuntu-latest
+    strategy:
+      max-parallel: 4
+      matrix:
+        python-version: [3.7, 3.8]
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up Python ${{ matrix.python-version }}
+      uses: actions/setup-python@v2
+      with:
+        python-version: ${{ matrix.python-version }}
+    - name: Install python package locally
+      run: |
+        python3 -m pip install --upgrade pip
+        pip3 install --editable src
+    - name: Lint with flake8
+      run: |
+        pip3 install flake8
+        # stop the build if there are Python syntax errors or undefined names
+        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
+        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
+        flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
+    - name: Test with pytest
+      env:
+        ARCH: "linux/amd64"
+        TAG_SUFFIX: "amd64"
+      run: |
+        pip3 install pytest
+        pwd
+        ls -al
+        echo GITHUB_WORKSPACE=${GITHUB_WORKSPACE}
+        echo "ARCH=${ARCH}"
+        ${GITHUB_WORKSPACE}/install_requirements.sh
+        ${GITHUB_WORKSPACE}/tests/run-tests.sh
+        
+        
+  release:
+    name: Release Job
+    needs: [build]
+    if: github.ref == 'refs/heads/main' && github.event_name == 'push'
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v2
+    - name: Install Node.js 12
+      uses: actions/setup-node@v2
+      with:
+        node-version: lts/*
+    - name: Install Python 3
+      uses: actions/setup-python@v2
+      with:
+        python-version: '3.x'
+    - name: Run Semantic Release
+      id: semrel
+      uses: cycjimmy/semantic-release-action@v2
+      with:
+        extra_plugins: |
+          @semantic-release/changelog
+          @semantic-release/git
+          @semantic-release/exec
+        branches: |
+          [
+            'master', 'main'
+          ]
+      env:
+          GITHUB_TOKEN: ${{ secrets.GH_PAT }}
+          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}        
+    - name: Semantic release completed
+      run: echo Semantic release flow completed