# This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. name: PR on: pull_request: branches: [ master, main ] permissions: contents: read jobs: build: runs-on: ubuntu-latest strategy: matrix: container: [ "python:3.8", "python:3.9", "python:3.10", "python:3.11" ] container: image: ${{ matrix.container }} steps: - uses: actions/checkout@v3 - name: Cache virtualenvironment uses: actions/cache@v3 with: path: ~/.venv key: ${{ hashFiles('requirements.txt', 'requirements-dev.txt') }} - name: Upgrade pip run: pip install --upgrade pip - name: Create and activate Virtualenv run: | pip install virtualenv [ ! -d ".venv" ] && virtualenv .venv . .venv/bin/activate - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: languages: python - name: Install dependencies run: pip install -r requirements-dev.txt - name: Run black formatter check run: black --check . - name: Run flake8 formatter check run: flake8 . - name: Run isort formatter check run: isort . - name: Test with pytest run: coverage run --omit="*/test*" -m pytest - name: Upload coverage to Codecov uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d with: flags: unittests # optional name: coverage # optional fail_ci_if_error: true # optional (default = false) verbose: true # optional (default = false) - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2