Update dependency pre-commit to v4 - autoclosed #470
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions | |
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions | |
name: Tests, Code Quality and Documentation | |
on: | |
push: | |
branches: | |
- main | |
- dev | |
pull_request: | |
branches: | |
- main | |
- dev | |
workflow_dispatch: | |
jobs: | |
test: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 10 | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.10", "3.11"] | |
os: [ubuntu-latest, macOS-latest, windows-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Run poetry image | |
uses: abatilo/[email protected] | |
with: | |
poetry-version: ${{ vars.POETRY_VERSION }} | |
- name: Install dependencies | |
run: | | |
poetry install --with dev | |
- name: Run tests | |
run: | | |
poetry run pytest --cov=pystatis --vcr-record=none tests | |
code-quality: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 10 | |
strategy: | |
fail-fast: false | |
matrix: | |
# only support specific python version, as guidelines differ beween (minor) versions | |
python-version: ["3.11.7"] | |
os: [ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Run poetry image | |
uses: abatilo/[email protected] | |
with: | |
poetry-version: ${{ vars.POETRY_VERSION }} | |
- name: Install dependencies | |
run: poetry install --with dev | |
- name: Run black | |
run: poetry run black . --check | |
- name: Run isort | |
run: poetry run isort . --check-only | |
- name: Run flake8 | |
run: poetry run flake8 src --output-file=flake8_report.txt | |
- name: Run pylint | |
run: poetry run pylint src --recursive=y | |
- name: Run bandit | |
run: poetry run bandit -r src | |
- name: Run Safety CLI to check for vulnerabilities | |
uses: pyupio/safety-action@v1 | |
with: | |
api-key: ${{ secrets.SAFETY_API_KEY }} | |
continue-on-error: true # Do not fail this action if vulnerabilities are found | |
args: "--short-report --policy-file=.safety-policy.yml" | |
- name: Run mypy | |
run: poetry run mypy src | |
sphinx-documentation-and-coverage: | |
runs-on: ubuntu-latest | |
name: Sphinx Documentation and Test Coverage | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ vars.PYTHON_VERSION}} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ vars.PYTHON_VERSION}} | |
- name: Run poetry image | |
uses: abatilo/[email protected] | |
with: | |
poetry-version: ${{ vars.POETRY_VERSION }} | |
- name: Install dependencies | |
run: | | |
poetry install --with dev | |
- name: Build documentation | |
run: | | |
cd docs | |
poetry run make clean | |
poetry run make html | |
- name: Upload documentation as artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: docs | |
path: docs/build/html/* | |
retention-days: 5 | |
- name: Generate and filter test coverage report | |
run: | | |
poetry run pytest --cov=src/pystatis --cov-report=xml --vcr-record=none tests | |
- name: Upload coverage reports to Codecov with GitHub Action | |
uses: codecov/[email protected] | |
with: | |
verbose: true | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} |